Deus Ex Documentation::PartyStuff

ACShard.uc (extends CraftingMaterial)

DecoResult=Class'PartyStuff.acrate'
NumNeeded=5
DispStr="Requires 5x to make Ammo Crate"
ItemName="Ammo Crate shard"
beltDescription="AC"



AdminArmour.uc (extends DeusExPickup)

var() bool bAAOn;
bAAOn=True
ItemName="Admin Armour"
ItemArticle="some"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
PickupViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
ThirdPersonMesh=LodMesh'DeusExItems.AdaptiveArmor'
Charge=500
LandSound=Sound'DeusExSounds.Generic.PaperHit2'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="Integrating woven fiber-optics and an advanced computing system, thermoptic camo can render an agent invisible to both humans and bots by dynamically refracting light and radar waves; however, the high power drain makes it impractial for more than short-term use, after which the circuitry is fused and it becomes useless."
beltDescription="ADMIN"
Mesh=LodMesh'DeusExItems.AdaptiveArmor'
MultiSkins(1)=Texture'Extras.Eggs.Matrix_A00'
CollisionRadius=11.500000
CollisionHeight=13.810000
Mass=30.000000
Buoyancy=20.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




AdminCard.uc (extends DeusExPickup)

bCanHaveMultipleCopies=True
ItemName="Admin Pass"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Credits'
PickupViewMesh=LodMesh'DeusExItems.Credits'
ThirdPersonMesh=LodMesh'DeusExItems.Credits'
LandSound=Sound'DeusExSounds.Generic.PlasticHit1'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="Admin Pass"
Mesh=LodMesh'DeusExItems.Credits'
MultiSkins(0)=Texture'DeusExUI.UserInterface.ComputerLogonLogoIlluminati'
CollisionRadius=7.000000
CollisionHeight=0.550000
Mass=2.000000
Buoyancy=3.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




AlarmLight2.uc (extends AlarmLight)

Trigger (Actor Other, Pawn Instigator)


if (!bIsOn)
{
bIsOn = True;
SetLightColor(SkinColor);
LightType = LT_Steady;
bFixedRotationDir = True;
}
else
{
bIsOn = False;
MultiSkins[1] = Texture'BlackMaskTex';
LightType = LT_None;
bFixedRotationDir = False;
}
Super.Trigger(Other, Instigator);

UnTrigger (Actor Other, Pawn Instigator)


if (bIsOn)
{
bIsOn = False;
MultiSkins[1] = Texture'BlackMaskTex';
LightType = LT_None;
bFixedRotationDir = False;
}

Super.UnTrigger(Other, Instigator);




AlarmUnit2.uc (extends DeusExDecoration)

var bool bActive;
var float alarmTimeout;
var DeusExplayer myIns;
var() name AUGroup;
var() string AlarmPanelIdent;
var bool bTimedOut;
var() bool bUseMannequinSecurity;
var() name MannequinTag;
alarmTimeout=60.000000
AUGroup=Default
bInvincible=True
ItemName="Alarm Network Panel [X]"
bPushable=False
Mesh=LodMesh'DeusExDeco.AlarmUnit'
MultiSkins(1)=Texture'DeusExItems.Skins.PinkMaskTex'
SoundRadius=56
SoundVolume=192
AmbientSound=Sound'DeusExSounds.Generic.AlarmUnitHum'
CollisionRadius=9.720000
CollisionHeight=9.720000
LightBrightness=255
LightRadius=1
Mass=10.000000
Buoyancy=5.000000

DoTriggers (playerpawn triginst, bool bOn)


local Actor A;

//local Mannequin Man;
//local LivingMannequin LivMan;
if(Event != '' && Event != 'None')
foreach AllActors(class'Actor', a)
if(A.Tag == Event)
A.Trigger(Self, triginst);

/*if(bOn && bUseMannequinSecurity)
{
foreach Allactors(class'Mannequin', Man)
if(Man.Tag == MannequinTag)
Man.GiveLife();
}

if(!bOn && bUseMannequinSecurity)
{
foreach AllActors(class'LivingMannequin', LivMan)
if(LivMan.Tag == MannequinTag)
LivMan.goToState('Dying');
}*/

Frob (Actor Frobber, Inventory frobWith)


local AlarmUnit2 AU;


if(!bTimedOut)
{
PGTrigger(DeusExPlayer(Frobber));
if(bActive)
{
BroadcastMessage("|P2"$DeusExPlayer(Frobber).PlayerReplicationinfo.PlayerName$" triggered alarm! ("$AUGroup$")");
}
else
{
BroadcastMessage("|P2"$DeusExPlayer(Frobber).PlayerReplicationinfo.PlayerName$" deactivated alarm! ("$AUGroup$")");
}

foreach AllActors(class'AlarmUnit2',AU)
{
if(AU.Tag == Tag && AU != Self)
{
AU.PGTrigger(DeusExPlayer(Frobber));
}
}
}

PGTrigger (deusexplayer Inst)


if (!bActive)
{
DoTriggers(inst,True);
bActive = True;
AmbientSound = Sound'Klaxon4';
SoundRadius = 64;
SoundVolume = 128;
LightType = LT_Steady;
MultiSkins[1] = Texture'AlarmUnitTex2';
SetTimer(AlarmTimeout,False);
myIns = Inst;
return;
}

if (bActive)
{
DoTriggers(inst,False);
bActive = False;
AmbientSound = Default.AmbientSound;
SoundRadius = 16;
SoundVolume = 192;
LightType = LT_None;
MultiSkins[1] = Texture'PinkMaskTex';
bTimedOut=True;
SetTimer(10,False);
return;
}

Tick (float deltaTime)


Super.Tick(deltaTime);

Tag = AUGroup;

if (!bActive)
return;

// flash the light and texture
if ((Level.TimeSeconds % 0.5) > 0.25)
{
LightType = LT_Steady;
MultiSkins[1] = Texture'AlarmUnitTex2';
}
else
{
LightType = LT_None;
MultiSkins[1] = Texture'PinkMaskTex';
}

Timer


if(bTimedOut)
{
bTimedOut=False;
}

if (bActive)
{
bActive = False;
DoTriggers(None, False);
AmbientSound = Default.AmbientSound;
SoundRadius = 16;
SoundVolume = 192;
LightType = LT_None;
MultiSkins[1] = Texture'PinkMaskTex';
BroadcastMessage("Alarm"@AUGroup@"timed out.");
}




AllySpawnPoint.uc (extends Actor)

var() string AllyGroup;
var DXScriptedPawn SpawnedAlly;
var() int Cooldown;
var bool bCooling;
Cooldown=255
bHidden=True

Timer


bCooling=False;




AmmoClaymore.uc (extends DeusExAmmo)

AmmoAmount=6
MaxAmmo=6
PickupViewMesh=LodMesh'DeusExItems.TestBox'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
beltDescription="CLAY"
Mesh=LodMesh'DeusExItems.TestBox'
CollisionRadius=22.500000
CollisionHeight=16.000000
bCollideActors=True



AmmoCredits.uc (extends AmmoNapalm)

AmmoAmount=100000
MaxAmmo=1000000
ItemName="Credits"
ItemArticle="some"
PickupViewMesh=LodMesh'DeusExItems.Credits'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
largeIcon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="Credits"
Mesh=LodMesh'DeusExItems.Credits'
CollisionHeight=4.480000



AmmoDG.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=5
ItemName="DG"
Description="It'll lite"
beltDescription="DG"



AmmoDrone.uc (extends AmmoNapalm)

AmmoAmount=100000
MaxAmmo=1000000
ItemName="Drone Rockets"
ItemArticle="some"
PickupViewMesh=LodMesh'DeusExItems.Credits'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
largeIcon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="Rockets"
Mesh=LodMesh'DeusExItems.Credits'
CollisionHeight=4.480000



AmmoFlashBang.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=10
ItemName="Flash Bangs"
beltDescription="F-Bangs"



AmmoFreezeGrenade.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=10
ItemName="FreezeGrenade"
beltDescription="ICER"



AmmoKB.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=5
ItemName="Knife Grenades"
Description="It'll shred"
beltDescription="KB"



AmmoLS.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=5
ItemName="Lightshows"
Description="It'll lite"
beltDescription="LS"



AmmoNails.uc (extends DeusExAmmo)

bShowInfo=True
AmmoAmount=15
MaxAmmo=50
ItemName="Nails"
ItemArticle="some"
PickupViewMesh=LodMesh'DeusExItems.AmmoDart'
LandSound=Sound'DeusExSounds.Generic.PaperHit2'
Icon=Texture'DeusExUI.Icons.BeltIconAmmoDartsNormal'
largeIcon=Texture'DeusExUI.Icons.LargeIconAmmoDartsNormal'
largeIconWidth=20
largeIconHeight=47
Description="Specialy designed nails.Designed to pierce flesh more than wood!"
beltDescription="NAILS"
Mesh=LodMesh'DeusExItems.AmmoDart'
CollisionRadius=8.500000
CollisionHeight=2.000000
bCollideActors=True

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
AmmoAmount = 6;




AmmoNuclearBattery.uc (extends DeusExAmmo)

bShowInfo=True
AmmoAmount=25
MaxAmmo=50
ItemName="Nuclear Battery"
ItemArticle="a"
PickupViewMesh=LodMesh'DeusExItems.AmmoPlasma'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconAmmoPlasma'
largeIconWidth=22
largeIconHeight=46
Description="A battery straight from 101 labs.It contains enough energy to keep the city of chicago running for 2 hours!"
beltDescription="|p5NBATT"
Mesh=LodMesh'DeusExItems.AmmoPlasma'
CollisionRadius=4.300000
CollisionHeight=8.440000
bCollideActors=True



AmmoPoisonKnife.uc (extends AmmoShuriken)

ItemName="Poisoned Throwing Knives"



AmmoSkull.uc (extends DeusExAmmo)

bShowInfo=True
AmmoAmount=17
MaxAmmo=100
ItemName="Skull Clip"
ItemArticle="a"
PickupViewMesh=LodMesh'DeusExDeco.BoneSkull'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconAmmoPlasma'
largeIconWidth=22
largeIconHeight=46
Description="A clip of Human Skulls, average sized Human Skulls that can be heated and delivered with a redundant devastating effect using the Skull Gun. My gun of choice -- Gunther Hermann"
beltDescription="BONE"
Mesh=LodMesh'DeusExDeco.BoneSkull'
CollisionRadius=4.300000
CollisionHeight=8.440000
bCollideActors=True



AmmoSlow.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=10
ItemName="Slow"
beltDescription="Slow"



AmmoSmokeGrenade.uc (extends DeusExAmmo)

AmmoAmount=1
MaxAmmo=10
PickupViewMesh=LodMesh'DeusExItems.TestBox'
Icon=Texture'DeusExUI.Icons.BeltIconGasGrenade'
beltDescription="SMOKE GREN"
Mesh=LodMesh'DeusExItems.TestBox'
CollisionRadius=22.500000
CollisionHeight=16.000000
bCollideActors=True



AmmoSpazmGas.uc (extends DeusExAmmo)

AmmoAmount=100
MaxAmmo=500
ItemName="Spazm Gas Ammo"
ItemArticle="some"
PickupViewMesh=LodMesh'DeusExItems.AmmoPepper'
Description="These cartriges contain gas that disturbs he natural brain's electric impulses, effectivly giving the target a seizure."
Mesh=LodMesh'DeusExItems.AmmoPepper'
CollisionRadius=3.000000
CollisionHeight=4.000000



AmmoSpeed.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=10
ItemName="Speed"
beltDescription="Speed"



AmmoTelefrag.uc (extends DeusExAmmo)

AmmoAmount=2
MaxAmmo=5
ItemName="Telefrag Grenades"
Description="It'll telefrag"
beltDescription="T-FRAG"



AmmoTripB.uc (extends DeusExAmmo)

AmmoAmount=6
MaxAmmo=6
PickupViewMesh=LodMesh'DeusExItems.TestBox'
beltDescription="TripBomb"
Mesh=LodMesh'DeusExItems.TestBox'
CollisionRadius=22.500000
CollisionHeight=16.000000
bCollideActors=True



AmmoTripBEMP.uc (extends DeusExAmmo)

AmmoAmount=6
MaxAmmo=6
PickupViewMesh=LodMesh'DeusExItems.TestBox'
beltDescription="TripBombEMP"
Mesh=LodMesh'DeusExItems.TestBox'
CollisionRadius=22.500000
CollisionHeight=16.000000
bCollideActors=True



AmmoTripBFire.uc (extends DeusExAmmo)

AmmoAmount=6
MaxAmmo=6
PickupViewMesh=LodMesh'DeusExItems.TestBox'
beltDescription="TripBombFire"
Mesh=LodMesh'DeusExItems.TestBox'
CollisionRadius=22.500000
CollisionHeight=16.000000
bCollideActors=True



AmmoWPGrenade.uc (extends AmmoGasGrenade)

beltDescription="WP GREN"



ArmourShard.uc (extends CraftingMaterial)

InvResult=Class'PartyStuff.PowerArmour'
NumNeeded=5
DispStr="Requires 5x to make Power Armour"
ItemName="Armour shard"
beltDescription="ARM"



Augrist.uc (extends Animal)

var() int spell, lve, lvl;
WalkingSpeed=1.000000
bInvincible=True
bHasShadow=False
bHighlight=False
bSpawnBubbles=False
bCanFly=True
GroundSpeed=100.000000
WaterSpeed=100.000000
AirSpeed=100.000000
AccelRate=500.000000
JumpZ=0.000000
MaxStepHeight=1.000000
MinHitWall=0.000000
BaseEyeHeight=1.000000
Health=1
UnderWaterTime=20.000000
bTransient=True
Mesh=LodMesh'DeusExItems.NanoSwordPickup'
MultiSkins(1)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(2)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(6)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(7)=Texture'DeusExItems.Skins.PinkMaskTex'
CollisionRadius=32.000000
CollisionHeight=2.400000
bBlockActors=False
bBlockPlayers=False
bBounce=True
Mass=0.100000
Buoyancy=0.100000
RotationRate=(Pitch=16384,Yaw=100000)
BindName="Augrist"
FamiliarName="Augrist"
UnfamiliarName="Augrist"

BeginState


Super.BeginState();
BlockReactions();
Acceleration = vector(Rotation)*AccelRate;

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer SP;
local weaponaugrist ga;

SP = DeusExPlayer(Frobber);

if(SP != None)
{
GA=Spawn(class'WeaponAugrist', Self,, Location, Rotation);
GA.spell = spell;
GA.lve = lve;
GA.lvl = lvl;
GA.SpawnCopy(DeusExPlayer(Frobber));
GA.Destroy();
Destroy();
}

HitWall (vector HitNormal, actor HitWall)


local rotator dir;
local float elasticity;
local float minVel, maxHVel;
local vector tempVect;


elasticity = 0.3;
Velocity = elasticity*((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity);
DesiredRotation = Rotation;

IsNearHome (vector position) -> bool


local bool bNear;


bNear = true;
if (bUseHome)
if (VSize(HomeLoc-position) > HomeExtent)
bNear = false;

return bNear;

PickDirection -> vector


local vector dirVector;
local rotator rot;


if (!IsNearHome(Location))
dirVector = Normal(homeLoc - Location)*AirSpeed*4;
else
dirVector = Velocity;
dirVector += VRand()*AirSpeed*2;
dirVector = Normal(dirVector);
rot = Rotator(dirVector);
if (VSize(Velocity) < AirSpeed*0.5)
{
Acceleration = dirVector*AirSpeed;
SetRotation(rot);
}
return vector(rot)*200+Location;

PlayWalking


LoopAnimPivot('Still');

Tick (float deltaTime)


Super.Tick(deltatime);

TweenToWalking (float tweentime)


TweenAnimPivot('Still', tweentime);




Automed.uc (extends DeusExPickup)

var() bool bGlowHP, bButCharging;
var int TickDelay;
maxCopies=1
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Automed"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Credits'
PickupViewMesh=LodMesh'DeusExItems.Credits'
ThirdPersonMesh=LodMesh'DeusExItems.Credits'
LandSound=Sound'DeusExSounds.Generic.PlasticHit1'
Icon=Texture'DeusExUI.UserInterface.AugIconHealing'
M_Activated=""
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="AUTOMED"
Mesh=LodMesh'DeusExItems.Credits'
MultiSkins(0)=Texture'DeusExUI.UserInterface.AugIconHealing_Small'
CollisionRadius=7.000000
CollisionHeight=0.550000
Mass=10.000000
Buoyancy=100.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player, hitplayer;
local scriptedpawn hitpawn;
local dxScriptedPawn hitpawn2;
local Actor hitActor;
local Vector hitLocation, hitNormal;
local Vector position, line;

Super.BeginState();
player = DeusExPlayer(Owner);
if(bButCharging)
player.ClientMessage("|P2Charging...");
else
player.ClientMessage("|P3Ready!");
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == player)
{
if (Inv.IsA('Medkit'))
{
player.ClientMessage("Automed will use Medkits. "$Medkit(inv).NumCopies$" remaining.");
}
if (Inv.IsA('Estus'))
{
player.ClientMessage("Automed will use Estus. "$Estus(inv).eUses$" remaining.");
}
}
}
GotoState('DeActivated');

GiveTo (pawn Other)


super.Giveto(Other);
Other.PlaySound(sound'automedic_on');
Other.ClientMessage("Automed activated. Medkits will be used when needed.");

InjectMedkit (string Purpose)


local Inventory Inv;
local bool bDoneIt;


bButCharging=True;
TickDelay=0;
SetTimer(20,False);
if(Purpose != "bio")
{
if(Purpose == "critical")
{
DeusExPlayer(Owner).PlaySound(sound'near_death', SLOT_Talk,2,,1024,);
}
if(Purpose == "legless")
{
DeusExPlayer(Owner).PlaySound(sound'major_fracture', SLOT_Talk,2,,1024,);
}
if(Purpose == "drug")
{
DeusExPlayer(Owner).PlaySound(sound'blood_toxins', SLOT_Talk,2,,1024,);
}
if(Purpose == "fire")
{
DeusExPlayer(Owner).PlaySound(sound'heat_damage', SLOT_Talk,2,,1024,);
}

foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == DeusExPlayer(Owner))
{
if (Inv.IsA('Medkit'))
{
bDoneIt=True;
Inv.GotoState('Activated');
return;
}
if (Inv.IsA('Estus'))
{
if(Estus(inv).eUses > 0)
{
bDoneIt=True;
Inv.GotoState('Activated');
return;
}
}
}
}
}
else if(Purpose == "bio")
{
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == DeusExPlayer(Owner))
{
if (Inv.IsA('Biocell'))
{
bDoneIt=True;
Inv.GotoState('Activated');
return;
}
if (Inv.IsA('Estus'))
{
if(Estus(inv).eUses > 0)
{
bDoneIt=True;
Inv.GotoState('Activated');
return;
}
}
}
}
}
if(!bDoneIt)
{
DeusExPlayer(Owner).ClientMessage("No healing available....");
}


PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 1;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

Tick (float deltatime)


TickDelay++;
if(Owner != None && Owner.IsA('Human'))
{
if(DeusExPlayer(Owner).HealthHead <= 15 || DeusExPlayer(Owner).HealthTorso <= 15 || DeusExPlayer(Owner).HealthLegLeft <= 0)
{
Owner.LightType=LT_Steady;
Owner.LightEffect=LE_NonIncidence;
Owner.LightSaturation=0;
Owner.LightRadius=8;
Owner.LightBrightness=64;
Owner.LightHue = DeusExPlayer(Owner).Health;
}
else
{
Owner.LightType = LT_None;
}
//Hack to prevent flamethrower bypassing the automed completely if hit repeatedly
if(TickDelay <= 15)
{
if(DeusExPlayer(Owner).DrugEffectTimer > 0 || DeusExPlayer(Owner).bOnFire)
{
DeusExPlayer(Owner).StopPoison();
DeusExPlayer(Owner).ExtinguishFire();
DeusExPlayer(Owner).drugEffectTimer = 0;
}
}
if(!bButCharging)
{
if(DeusExPlayer(Owner).HealthHead < 25 || DeusExPlayer(Owner).HealthTorso < 25)
{
InjectMedkit("critical");
}
if(DeusExPlayer(Owner).HealthLegLeft == 0)
{
InjectMedkit("legless");
}
if(DeusExPlayer(Owner).DrugEffectTimer > 0)
{
InjectMedkit("drug");
}
if(DeusExPlayer(Owner).bOnFire)
{
InjectMedkit("fire");
}
if(DeusExPlayer(Owner).Energy < 10)
{
InjectMedkit("bio");
}
}
}

Timer


bButCharging=False;
if(DeusExPlayer(Owner) != None)
{
DeusExPlayer(Owner).PlaySound(sound'automedic_on');
DeusExPlayer(Owner).ClientMessage("Automed has recharged and can be used again.");
}

UpdateInfo (Object winObject) -> bool


local PersonaInfoWindow winInfo;
local string str;


winInfo = PersonaInfoWindow(winObject);
if (winInfo == None)
return False;

winInfo.SetTitle(itemName);
winInfo.SetText(Description $ winInfo.CR() $ winInfo.CR());
// winInfo.AppendText(Sprintf(RechargesLabel, RechargeAmount));

// Print the number of copies
str = CountLabel @ String(NumCopies);
winInfo.AppendText(winInfo.CR() $ winInfo.CR() $ str);

return True;




AveDecal.uc (extends Decal)

var bool bAttached, bStartedLife, bImportant;
bAttached=True
bImportant=True

PostBeginPlay


Super.PostBeginPlay();
SetTimer(1.0, false);

ReattachDecal (optional vector newrot)


DetachDecal();
if (newrot != vect(0,0,0))
AttachDecal(32, newrot);
else
AttachDecal(32);




BB.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=5.000000
mpBlastRadius=100.000000
bExplodes=True
blastRadius=128.000000
DamageType=Sabot
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Energy Bolt"
ItemArticle="an"
speed=1500.000000
MaxSpeed=1500.000000
Damage=5.000000
MomentumTransfer=5000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Texture=FireTexture'Effects.Laser.LaserBeam2'
Mesh=LodMesh'DeusExItems.Tracer'
DrawScale=3.000000
bUnlit=True
LightBrightness=200
LightHue=80
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;


// create a particle generator shooting out plasma spheres
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 2.0;
gen.checkTime = 0.10;
gen.frequency = 2.0;
gen.ejectSpeed = 100.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleLifeSpan = 14.00;
gen.particleTexture = FireTexture'Effects.Laser.LaserSpot2';
gen.LifeSpan = 18.5;
}

PostBeginPlay


Super.PostBeginPlay();

if ((Level.NetMode == NM_Standalone) || (Level.NetMode == NM_ListenServer))
SpawnPlasmaEffects();

PostNetBeginPlay


SpawnPlasmaEffects();

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;

SpawnPlasmaEffects


local Rotator rot;

rot = Rotation;
rot.Yaw -= 32768;

pGen2 = Spawn(class'ParticleGenerator', Self,, Location, rot);
if (pGen2 != None)
{
pGen2.RemoteRole = ROLE_None;
pGen2.particleTexture = FireTexture'Effects.Laser.LaserSpot2';
pGen2.particleDrawScale = 2.0;
pGen2.checkTime = 0.04;
pGen2.riseRate = 0.0;
pGen2.ejectSpeed = 100.0;
pGen2.particleLifeSpan = 4.0;
pGen2.bRandomEject = True;
pGen2.SetBase(Self);
}





BFG.uc (extends Rocket)

var() float shakeTime;
var() float shakeRollMagnitude;
var() float shakeVertMagnitude;
var SizableEffectSpawner efs;
shaketime=3.000000
shakeRollMagnitude=512.000000
shakeVertMagnitude=48.000000
blastRadius=1024.000000
bTracking=False
ItemName="Big Fucking Blast"
speed=500.000000
MaxSpeed=1000.000000
SpawnSound=None
ImpactSound=None
DrawType=DT_Sprite
Style=STY_Modulated
Texture=Texture'PGAssets.Skins.SkyBlueRay'
Mesh=None
DrawScale=5.000000
SoundRadius=0
SoundVolume=0
AmbientSound=None

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ExplosionLarge expeffect;
local DeusExPlayer player, pls;
local pring sphere;

//stop the other effect
efs.Destroy();

player = DeusExPlayer(Owner);

foreach AllActors(class'DeusExPlayer', pls)
{
if (pls != None)
{
pls.ShakeView(shakeTime, shakeRollMagnitude, shakeVertMagnitude);
}
}

// draw a pretty explosion
efs = Spawn(class'SizableEffectSpawner',,, HitLocation);
if (efs != None)
{
efs.RemoteRole = ROLE_None;
efs.EffectClass=class'MagicRing';
efs.EffectSkin = Texture'SkyBlueRay';
efs.SizeofEffect = 10;
efs.Interval = 0.1;
efs.TimeLimit=12;
efs.EffectLSpan = 3.0;
}
sphere = Spawn(class'pring',,, HitLocation);
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastradius;
Sphere.MultiSkins[0]=Texture'DeusExDeco.Skins.AlarmLightTex7';
}
expeffect = Spawn(class'ExplosionLarge',,, HitLocation);
if (expeffect != None)
expeffect.RemoteRole = ROLE_None;

SpawnRocketEffects


efs = Spawn(class'SizableEffectSpawner',,,Location);
if (efs != None)
{
efs.RemoteRole = ROLE_None;
efs.SetBase(Self);
efs.EffectClass=class'MagicRing';
efs.EffectSkin = Texture'SkyBlueRay';
efs.SizeofEffect = 3;
efs.Interval = 0.01;
efs.EffectLSpan = 1.0;
}




BLTsandwich.uc (extends sandwich)

ItemName="Bacon Lettuce And Tomato Sandwich"
beltDescription="BLT.SDWCH"
MultiSkins(1)=Texture'PGAssets.Skins.BLTTex1'



BasketballMP.uc (extends ThrownProjectile)

var bool bDoomedToDestroy;
var bool bAlreadyScored;
var bool bAllowBumping;
bDisabled=True
bExplodes=False
bBlood=False
bEmitDanger=False
bIgnoresNanoDefense=True
ItemName="Basketball"
LifeSpan=0.000000
bDirectional=False
Mesh=LodMesh'PGAssets.FLBasketball'
DrawScale=0.710000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBlockActors=True
bBlockPlayers=True
Mass=8.000000
Buoyancy=10.000000

BeginPlay


Super.BeginPlay();

Explode (vector HitLocation, vector HitNormal)


return;

Frob (Actor Frobber, Inventory frobWith)


local BasketballMP4Player FLB4P;

if (!bDoomedToDestroy)
{
FLB4P = Spawn(Class'BasketballMP4Player',Frobber,,Location,Rotation);
DeusExPlayer(Frobber).FrobTarget = FLB4P;
DeusExPlayer(Frobber).GrabDecoration();
Super.Frob(Frobber, frobWith);
Destroy();
}
else
{
return;
}

HitWall (vector HitNormal, actor HitWall)


local float speed;


Velocity = 0.8*((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity);
speed = VSize(Velocity);
bFixedRotationDir = True;
RotationRate = RotRand(False);
if ((speed > 0) && (speed < 30) && (HitNormal.Z > 0.7))
{
SetPhysics(PHYS_None, HitWall);
if (Physics == PHYS_None)
bFixedRotationDir = False;
}

if (HitWall.IsA('Mover'))
{
HitWall.TakeDamage(speed/58, Pawn(Owner), HitWall.Location, MomentumTransfer*Normal(Velocity), 'Shot');
}

else if (speed > 30)
{
if ((FRand() >= 0.75) && (FRand() < 1.0))
{
PlaySound(sound'Bounce1', SLOT_None, 3);
}
else if ((FRand() >= 0.5) && (FRand() < 0.75))
{
PlaySound(sound'Bounce2', SLOT_None, 3);
}
else
{
PlaySound(sound'Bounce3', SLOT_None, 3);
}
}

TakeDamage (int Damage, Pawn instigatedBy, Vector HitLocation, Vector Momentum, name damageType)


return;

Tick (float deltaTime)


return;

Timer


if(!bAllowBumping)
{
bAllowBumping=True;
}
if (bDoomedToDestroy)
{
Destroy();
}
return;

bump (actor other)


local DeusExPlayer Player;

Player = DeusExPlayer(other);

if((other.IsA('DeusExPlayer')))
{
if(bAllowBumping && Player.Inhand == None)
{
frob(Other,None);
}
}




BasketballMP4Player.uc (extends DeusExDecoration)

bInvincible=True
ItemName="Basketball"
Mesh=LodMesh'PGAssets.FLBasketball'
DrawScale=0.710000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBounce=True
Mass=8.000000
Buoyancy=10.000000

BaseChange


local BasketballMP AdvB;

if (bWasCarried)
{
AdvB = Spawn(Class'BasketballMP',Owner,,Location,Rotation);
AdvB.Velocity = Velocity + 0.7 * Owner.Velocity;
AdvB.SetTimer(0.5,False);
Destroy();
}




BeamActor.uc (extends Effects)

Var DeusExPlayer POwner,Other;
var vector MoveAmount;
var int NumPuffs;
LifeSpan=1.300000
DrawType=DT_Sprite
Style=STY_Translucent
Sprite=Texture'DeusExDeco.Skins.AlarmLightTex6'
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
bUnlit=True
LightBrightness=255
LightHue=128
LightRadius=2

PostBeginPlay


SetTimer(0.001, false);

Tick (float DeltaTime)


if ( Level.NetMode != NM_DedicatedServer )
{
ScaleGlow = (Lifespan/Default.Lifespan) * 1.0;
AmbientGlow = ScaleGlow * 210;
}

Timer


local BeamActor r;
local DeusExPlayer P;


P=DeusExPlayer(Owner);

if (NumPuffs>0)
{
r = Spawn(class'BeamActor',P,,Location+MoveAmount);
r.RemoteRole = ROLE_None;
r.NumPuffs = NumPuffs -1;
r.MoveAmount = MoveAmount;
r.SetOwner(P);
r.Texture = self.Texture;
r.Skin = self.Skin;
r.Sprite = self.Sprite;
}




BeamActorPink.uc (extends Effects)

Var DeusExPlayer POwner,Other;
var vector MoveAmount;
var int NumPuffs;
LifeSpan=1.300000
DrawType=DT_Sprite
Style=STY_Translucent
Sprite=Texture'PGAssets.Skins.federalpink'
Texture=Texture'PGAssets.Skins.federalpink'
Skin=Texture'PGAssets.Skins.federalpink'
bUnlit=True
LightBrightness=255
LightHue=128
LightRadius=2

PostBeginPlay


SetTimer(0.001, false);

Tick (float DeltaTime)


if ( Level.NetMode != NM_DedicatedServer )
{
ScaleGlow = (Lifespan/Default.Lifespan) * 1.0;
AmbientGlow = ScaleGlow * 210;
}

Timer


local BeamActorPink r;
local DeusExPlayer P;


P=DeusExPlayer(Owner);

if (NumPuffs>0)
{
r = Spawn(class'BeamActorPink',P,,Location+MoveAmount);
r.RemoteRole = ROLE_None;
r.NumPuffs = NumPuffs -1;
r.MoveAmount = MoveAmount;
r.SetOwner(P);
r.Texture = self.Texture;
r.Skin = self.Skin;
r.Sprite = self.Sprite;
}




BinocularsMP.uc (extends DeusExPickup)

var bool bZoomed;
bActivatable=True
ItemName="Binoculars"
ItemArticle="some"
PlayerViewOffset=(X=18.000000,Z=-6.000000)
PlayerViewMesh=LodMesh'DeusExItems.Binoculars'
PickupViewMesh=LodMesh'DeusExItems.Binoculars'
ThirdPersonMesh=LodMesh'DeusExItems.Binoculars'
LandSound=Sound'DeusExSounds.Generic.PaperHit2'
Icon=Texture'DeusExUI.Icons.BeltIconBinoculars'
largeIcon=Texture'DeusExUI.Icons.LargeIconBinoculars'
largeIconWidth=49
largeIconHeight=34
Description="A pair of military binoculars."
beltDescription="BINOCS"
Mesh=LodMesh'DeusExItems.Binoculars'
CollisionRadius=7.000000
CollisionHeight=2.060000
Mass=5.000000
Buoyancy=6.000000

Activate


Super.Activate();

if (DeusExPlayer(Owner) != None)
DeusExPlayer(Owner).DesiredFOV = DeusExPlayer(Owner).Default.DesiredFOV;

BeginState



Super.BeginState();
if (bZoomed && (Owner != None) && Owner.IsA('DeusExPlayer'))
{
// Hide the Binoculars View
bZoomed = False;
RefreshScopeDisplay(DeusExPlayer(Owner), False, bZoomed);
}

RefreshScopeDisplay (DeusExPlayer Player, bool bInstant, bool bBinocularOn)


if (bBinocularOn && (Player != None))
{
DeusExRootWindow(Player.rootWindow).scopeView.ActivateView(20, True, bInstant);
}
else if (!bBinocularOn)
{
DeusExrootWindow(Player.rootWindow).scopeView.DeactivateView();
}




BioArmour.uc (extends PGArmour)

Dur=100
Def=10
bResistPoison=True
ItemName="Bio Armour"
beltDescription="BIO"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




Boner.uc (extends DeusExProjectile)

var float mpDamage;
var int mpAccurateRange;
var int mpMaxRange;
mpDamage=65.000000
mpAccurateRange=640
mpMaxRange=640
bExplodes=True
bBlood=True
blastRadius=64.000000
DamageType=shot
AccurateRange=640
maxRange=1280
bIgnoresNanoDefense=True
ItemName="Boner"
ItemArticle="the"
speed=1000.000000
MaxSpeed=1000.000000
Damage=100.000000
MomentumTransfer=128
ImpactSound=Sound'DeusExSounds.Generic.BulletHitFlesh'
Mesh=LodMesh'DeusExDeco.BoneFemur'
CollisionRadius=12.650000
CollisionHeight=0.800000

AttachPayload


local BonerPayload BP;
local int Payloads;


foreach AllActors(class'BonerPayload', BP)
{
if(BP.Payloader == DeusExPlayer(Owner))
{
Payloads++;
}
}

if(Payloads > 10)
{
return;
}

BP = Spawn(class'BonerPayload',,,Location);
BP.Payloader = DeusExPlayer(Owner);

BeginState


local DeusExWeapon W;


initLoc = Location;
initDir = vector(Rotation);
Velocity = speed*initDir;
PlaySound(SpawnSound, SLOT_None);

Explode (vector HitLocation, vector HitNormal)


local bool bDestroy;
local float rad;


// Reduce damage on nano exploded projectiles
if ((bAggressiveExploded) && (Level.NetMode != NM_Standalone))
Damage = Damage/6;

bDestroy = false;

if (bExplodes)
{
//DEUS_EX AMSD Don't draw effects on dedicated server
if ((Level.NetMode != NM_DedicatedServer) || (Role < ROLE_Authority))
DrawExplosionEffects(HitLocation, HitNormal);

GotoState('Exploding');
}
else
{
// Server side only
if ( Role == ROLE_Authority )
{
if ((damagee != None)) // Don't even attempt damage with a tracer
{
if ( Level.NetMode != NM_Standalone )
{
if ( damagee.IsA('DeusExPlayer') )
DeusExPlayer(damagee).myProjKiller = Self;
}
damagee.TakeDamage(Damage, Pawn(Owner), HitLocation, MomentumTransfer*Normal(Velocity), damageType);
}
}
if (!bStuck)
bDestroy = true;
}

rad = Max(blastRadius*24, 1024);

// This needs to be outside the simulated call chain
PlayImpactSound();

//DEUS_EX AMSD Only do these server side
if (Role == ROLE_Authority)
{
if (ImpactSound != None)
{
AISendEvent('LoudNoise', EAITYPE_Audio, 2.0, blastRadius*24);
if (bExplodes)
AISendEvent('WeaponFire', EAITYPE_Audio, 2.0, blastRadius*5);
}
}
if (bDestroy)
Destroy();

HitWall (vector HitNormal, actor Wall)


if (bStickToWall)
{
Velocity = vect(0,0,0);
Acceleration = vect(0,0,0);
SetPhysics(PHYS_None);
bStuck = True;

// MBCODE: Do this only on server side
if ( Role == ROLE_Authority )
{
if (Level.NetMode != NM_Standalone)
SetTimer(5.0,False);

if (Wall.IsA('Mover'))
{
SetBase(Wall);
Wall.TakeDamage(Damage, Pawn(Owner), Wall.Location, MomentumTransfer*Normal(Velocity), damageType);
}
}
}

if (Wall.IsA('BreakableGlass'))
bDebris = False;

SpawnEffects(Location, HitNormal, Wall);
if(StickyPayload())
{
AttachPayload();
}
Super.HitWall(HitNormal, Wall);

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
Damage = mpDamage;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

ProcessTouch (Actor Other, Vector HitLocation)


if (bStuck)
return;

if ((Other != instigator) && (DeusExProjectile(Other) == None) &&
(Other != Owner))
{
damagee = Other;
Explode(HitLocation, Normal(HitLocation-damagee.Location));

// DEUS_EX AMSD Spawn blood server side only
if (Role == ROLE_Authority)
{
if (damagee.IsA('Pawn') && !damagee.IsA('Robot') && bBlood)
SpawnBlood(HitLocation, Normal(HitLocation-damagee.Location));
if(StickyPayload())
{
AttachPayload();
}
}
}

StickyPayload -> bool


local WeaponBoner WBoner;

foreach AllActors(class'WeaponBoner',WBoner)
{
if(WBoner.Owner == Owner)
{
if(WBoner.bStickyPayload)
{
return True;
}
}
}

Tick (float deltaTime)


local Rotator rot;


if (bStuck)
return;

Super.Tick(deltaTime);

if (Level.Netmode != NM_DedicatedServer)
{
rot = Rotation;
rot.Roll += 16384;
rot.Pitch -= 13384;
SetRotation(rot);
}




BonerPayload.uc (extends DeusExDecoration)

var DeusExPlayer Payloader;
var bool bReturning;
bInvincible=True
bHighlight=False
bCanBeBase=True
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Sprite=FireTexture'Effects.Laser.LaserSpot1'
Texture=FireTexture'Effects.Laser.LaserSpot1'
Skin=FireTexture'Effects.Laser.LaserSpot1'
CollisionRadius=5.200001
CollisionHeight=5.000000

BlowLoad


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 400;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
Destroy();

PostBeginPlay


local int Payloads;
local BonerPayload BP;

foreach AllActors(class'BonerPayload', BP)
{
if(BP.Payloader == Payloader)
{
Payloads++;
}
}
if(Payloads > 10)
{
Destroy();
}

Tick (float v)


if(!bReturning)
{
Drawscale+=0.02;
if(Drawscale >= 1.5)
{
bReturning=True;
}
}
else
{
Drawscale-=0.02;
if(Drawscale <= 1.0)
{
bReturning=False;
}
}





BotADS.uc (extends Actor)

var Pawn P;
var int AdsEnergy;
var bool AdsUnlimited;
bHidden=True

Timer


local DeusExProjectile minproj;
local float mindist;


if(!AdsUnlimited && AdsEnergy <= 0)
return;

foreach P.VisibleActors(class'DeusExProjectile', minproj, 1028)
{
if (minproj != None && ValidProjectile(minProj))
{
mindist = VSize(P.Location - minproj.Location);

if(!AdsUnlimited && AdsEnergy > 0)
AdsEnergy--;

if (mindist > 480 && mindist < 1028)
{
P.PlaySound(sound'GEPGunLock', SLOT_None,,,, 2.0);
}

if (mindist < 480)
{
minproj.bAggressiveExploded=True;
minproj.Explode(minproj.Location, vect(0,0,1));
P.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
}
}
}

if(P == None || P.Health <= 0)
Destroy();

ValidProjectile (DeusExProjectile proj) -> bool


local bool bValidProj;


if (Level.NetMode != NM_Standalone)
bValidProj = !proj.bIgnoresNanoDefense;
else
bValidProj = (!proj.IsA('Cloud') && !proj.IsA('Tracer') && !proj.IsA('GreaselSpit') && !proj.IsA('GraySpit'));

if (bValidProj)
{
// make sure we don't own it
if (proj.Owner != P)
{
// NEW: Ignore other "Enemy" class bots and our custom robots.
if (DXEnemy(Proj.Owner) == None && DXRobot(Proj.Owner) == None)
{
// make sure it's moving fast enough
if (VSize(proj.Velocity) > 100)
{
return true;
}
}
}
}




BowenViewportWindow.uc (extends ViewportWindow)

var trocket projowner;
var float TestTime;
var(Bowen) Color colBackground;
var(Bowen) Color colBorder;
var(Bowen) Color colHeaderText;
var(Bowen) Color colText;
var bool bVisionActive;
var(Bowen) int visionLevel;
var(Bowen) float visionLevelValue;
var int activeCount;
var(Bowen) float margin;
var(Bowen) float corner;
var Actor VisionBlinder; //So the same thing doesn't blind me twice.
var int VisionTargetStatus; //For picking see through wall texture
var (Bowen) String msgLightAmpActive;
var (Bowen) String msgIRAmpActive;
var DeusExPlayer Player;
colBackground=(R=128,G=128,B=128)
colBorder=(R=128,G=128,B=128)
colHeaderText=(R=255,G=255,B=255)
colText=(R=255,G=255,B=255)
visionLevel=1
visionLevelValue=1000000.000000
margin=4.000000
corner=9.000000
msgLightAmpActive="LightAmp Active"
msgIRAmpActive="IRAmp Active"

InitWindow


Super.InitWindow();
bTickEnabled = True;

tick (float deltatime)


Player = DeusExPlayer(ProjOwner.Owner);

if(ProjOwner.bExploded)
Destroy();




BoxKiller.uc (extends Rocket)

DamageRing


local Pawn apawn;
local float damageRadius;
local Vector dist;
local ProjectileGenerator Projy;
local box bawks;
local ScriptedPawn pwn;



foreach VisibleActors(class'Box',bawks,blastRadius)
{
bawks.lifespan = 0.1;
}
if ( Level.NetMode != NM_Standalone )
{
damageRadius = (blastRadius / gradualHurtSteps) * gradualHurtCounter;

for ( apawn = Level.PawnList; apawn != None; apawn = apawn.nextPawn )
{
if ( apawn.IsA('DeusExPlayer') )
{
dist = apawn.Location - Location;
if ( VSize(dist) < damageRadius )
{
if ( gradualHurtCounter <= 2 )
{
if ( apawn.FastTrace( apawn.Location, Location ))
DeusExPlayer(apawn).myProjKiller = Self;
}
else
DeusExPlayer(apawn).myProjKiller = Self;
}
}
}
}
//DEUS_EX AMSD Ignore Line of Sight on the lowest radius check, only in multiplayer
HurtRadius
(
(2 * Damage) / gradualHurtSteps,
(blastRadius / gradualHurtSteps) * gradualHurtCounter,
damageType,
MomentumTransfer / gradualHurtSteps,
Location,
((gradualHurtCounter <= 2) && (Level.NetMode != NM_Standalone))
);

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local box player;
local ScriptedPawn pwn;


foreach VisibleActors(class'Box',player,100)
{
player.Destroy();
}

Timer


gradualHurtCounter++;
DamageRing();
if (gradualHurtCounter >= gradualHurtSteps)
Destroy();




BoxSizeWindow.uc (extends MenuUIWindow)

var MenuUIActionButtonWindow okButton;
var MenuUIActionButtonWindow defaultButton;
var MenuUIActionButtonWindow exitButton;
var MenuUIEditWindow sizeWindow;
var MenuUIHeaderWindow winText;
var localized string okButtonText;
var localized string defaultButtonText;
var localized string exitButtonText;
var WeaponBoxGun _windowOwner;
var float _boxSize;
okButtonText="Ok"
defaultButtonText="Set as Default"
exitbuttontext="Done"
ClientWidth=350
ClientHeight=85
clientTextures(0)=Texture'DeusExUI.UserInterface.MenuMessageBoxBackground_1'
clientTextures(1)=Texture'DeusExUI.UserInterface.MenuMessageBoxBackground_2'
textureRows=1
textureCols=2
bActionButtonBarActive=True
bUsesHelpWindow=False
winShadowClass=Class'DeusEx.MenuUIMessageBoxShadowWindow'

ButtonActivated (Window buttonPressed) -> bool


local bool bHandled;


bHandled = True;

Super.ButtonActivated(buttonPressed);

switch( buttonPressed )
{
case okButton:
// Do stuff
if(float(sizeWindow.GetText()) > 5)
sizeWindow.setText("5.00000");

_windowOwner.setSize(float(sizeWindow.GetText()), 1);
//root.PopWindow();
bHandled = True;
break;

case defaultButton:
// Do stuff
if(float(sizeWindow.GetText()) > 5)
sizeWindow.setText("5.00000");

_windowOwner.setSize(float(sizeWindow.GetText()), 2);
//root.PopWindow();
bHandled = True;
break;

case exitButton:
// Do stuff
root.PopWindow();
bHandled = True;
break;

default:
bHandled = False;
break;
}

return bHandled;

InitWindow


local Window W;


Super.InitWindow();

winClient.SetBackground(Texture'DeusExUI.MaskTexture');
winClient.SetBackgroundStyle(DSTY_Modulated);

W = winClient.NewChild(Class'Window');
W.SetSize(ClientWidth, ClientHeight);
W.SetBackground(Texture'DeusExUI.MaskTexture');
W.SetBackgroundStyle(DSTY_Modulated);
W.Lower();

sizeWindow = CreateMenuEditWindow(60, 45, 70, 30, winClient);

okButton = winButtonBar.AddButton(okButtonText, HALIGN_Right);
exitButton = winButtonBar.AddButton(exitButtonText, HALIGN_Left);
defaultButton = winButtonBar.AddButton(defaultButtonText, HALIGN_Center);

sizeWindow.setText("1.00000");
SetTitle("Box Size");




CActor.uc (extends PGActors)

var DeusExPlayer Crim;
var int CC, CL, CLim;
var string cn;
CLim=5

Timer


if(Crim == None)
{
BroadcastMessage(cn$" has fled and is no longer wanted.");
Destroy();
}

if(Crim.Health < 0)
{
BroadcastMessage(cn$" was terminated, security has been recalled.");
Destroy();
}





CaptureFlag.uc (extends DeusExDecoration)

var bool bDontRespawn;
var() int CP;
bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Capture Flag"
Mesh=LodMesh'DeusExDeco.FlagPole'
CollisionRadius=17.000000
CollisionHeight=56.389999
Mass=40.000000
Buoyancy=30.000000

Boom


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionRadius;
local captureflagspawner cf;

explosionRadius = 150;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

Destroy();

if(bdontrespawn)
return;
foreach AllActors(class'CaptureFlagSpawner',CF)
if(CF.CP == CP)
CF.SetTimer(10,False);

Bump (actor Other)


local PGGames PGG;
local CapturePoint cpo;


cpo = CapturePoint(Other);
if(cpo != None && cpo.CP == CP)
{
cpo.CPoints++;
BroadcastMessage("Score on CapturePoint "$cpo.CP$"! Now "$cpo.CPoints$"!");


if(cpo.CPoints == cpo.CWin)
{
BroadcastMessage("CapturePoint "$cpo.CP$" has won!");
foreach AllActors(class'capturepoint',CPO)
cpo.cpoints = 0;
Destroy();
bDontRespawn=True;
foreach AllActors(class'PGGames',PGG)
PGG.bCOn=False;
}
Boom();
}





CaptureFlagSpawner.uc (extends PGSpawnPoints)

var() int CP;

Timer


local CaptureFlag CF;


CF = spawn(class'CaptureFlag',,,location);
CF.CP = CP;
BroadcastMessage("Capture Flag has spawned.");




CapturePoint.uc (extends DeusExDecoration)

var int CP;
var int CPoints;
var int CWin;
CWin=3



CapturePoint1.uc (extends CapturePoint)

CP=1
bInvincible=True
ItemName="Capture Point (One)"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000



CapturePoint2.uc (extends CapturePoint)

CP=2
bInvincible=True
ItemName="Capture Point (Two)"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex4'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000



ChainTeleporter.uc (extends DeusExDecoration)

var bool bCooldown;
var() float Cooldown;
var float LastLaunchTime;
var int ChainNum;
var deusexplayer returntoplayer;
var int baseNum;
var bool bDoneSetup;
Cooldown=5.000000
baseNum=1
bInvincible=True
ItemName="Chain Teleporter"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False
LightType=LT_Steady
LightBrightness=120
LightHue=70
LightSaturation=100
LightRadius=10

Cooled -> bool


return (Level.TimeSeconds - lastLaunchTime > Cooldown);

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;
local ChainTeleporter CT;
local bool bFound;

P=DeusExPlayer(Frobber);

if(Cooled())
{
foreach AllActors(class'ChainTeleporter',CT)
{
if(CT.ChainNum == ChainNum+1)
{
P.SetLocation(CT.Location);
bFound=True;
}
}
if(!bFound)
{
foreach AllActors(class'ChainTeleporter',CT)
{
if(CT.ChainNum == baseNum)
{
P.SetLocation(CT.Location);
bFound=True;
}
}
}
if(bFound)
{
LastLaunchTime = Level.TimeSeconds;
bCooldown=True;
Texture=Texture'DeusExDeco.Skins.AlarmLightTex2';
LightHue=0;
SetTimer(Cooldown,false);
}
}
else
{
P.ClientMessage("Teleporter is cooling down, please wait "$int(Cooldown - (Level.TimeSeconds - lastLaunchTime))$" seconds.");
}

PostBeginPlay


//Moved the setup from here to a randomized timer, since DX triggers them all at once at map start....
SetTimer(Rand(15),False);

Timer


local TCT h;
local ChainTeleporter CT;
local int T;


if(!bDoneSetup)
{
bDoneSetup=True;
if(ChainNum == 0)
{
foreach AllActors(class'ChainTeleporter',CT)
if(CT != Self && CT.bDoneSetup)
T++;

log(T$" chains. Chain ident is"@T+1, 'ChainTeleporter');
ChainNum = T+1;
}
}
else
{
if(ReturntoPlayer != None)
{
Destroy();
h=Spawn(class'tct', Self,, Location, Rotation);
h.Frob(returntoplayer,None);
//h.bInObjectBelt = True;
h.Destroy();

}
bCooldown=False;
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4';
LightHue=70;
}




Chainer.uc (extends DeusExWeapon)

var() class StoredActor;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=68
ItemName="Chainlink Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="CHAIN"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetDisplayString (Actor P) -> string


if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

LaserToggle

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;
local DeusExDecoration Deco;
local ScriptedPawn Scri;

if(Other.isa('ScriptedPawn'))
{
foreach AllActors(class'ScriptedPawn',Scri)
{
if(Scri.FamiliarName == ScriptedPawn(Other).FamiliarName)
{
Scri.PlaySound(Sound'TurretSwitch', SLOT_Talk,2,,1024,);
Scri.bInvincible=False;
Scri.TakeDamage(10000,DeusExPlayer(Owner),vect(0,0,0),vect(0,0,1),'Exploded');
}
}
return;
}
else if(Other.isa('DeusExDecoration'))
{
foreach AllActors(class'DeusExDecoration',Deco)
{
if(Deco.ItemName == DeusExDecoration(Other).ItemName || Deco.Tag == Other.Tag)
{
Deco.PlaySound(Sound'TurretSwitch', SLOT_Talk,2,,1024,);
Deco.bInvincible=False;
Deco.bExplosive=True;
Deco.TakeDamage(10000,DeusExPlayer(Owner),vect(0,0,0),vect(0,0,1),'Exploded');
}
}
return;
}

ScopeToggle

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




ClassCheckButton.uc (extends ClassCheckScanner)

var bool bOn;
var(CheckClass) eChk CheckClass;
var(CheckClass) bool bAdminOverride;
ItemName="Checker Switch"
Mesh=LodMesh'DeusExDeco.Switch1'
CollisionRadius=2.630000
CollisionHeight=2.970000
Mass=10.000000

Frob (Actor Frobber, Inventory frobWith)


local bool bFound;
local Inventory Inv;
local string CHKR;
local DeusExPlayer Player;

Player = DeusExPlayer(Frobber);
bFound=False;

if(bAdminOverride && Player.bAdmin)
{
Player.ClientMessage("|P4Access Check Level: |P2-----");
Player.ClientMessage("|P2Administrator override activated.");
Super.Frob(Frobber, frobWith);
return;
}
if(CheckClass == CH_Admin)
CHKR = "Admin";
if(CheckClass == CH_Staff)
CHKR = "Staff";
if(CheckClass == CH_VIP)
CHKR = "VIP";


Player.ClientMessage("|P4Access Check Level: "$CHKR);
Player.ClientMessage("|P4Item must be in inventory. Checking... ");
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == Player)
{
if(CheckClass==CH_Admin)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
if(CheckClass==CH_Staff)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed for Staff scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}

if (Inv.IsA('StaffCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Staff confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
if(CheckClass==CH_VIP)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed for VIP scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}

if (Inv.IsA('StaffCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Staff confirmed for VIP scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
if (Inv.IsA('VIPCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3VIP confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
}
}

if(!bFound)
{
Player.ClientMessage("|P2Access card not found!");
}
if (bOn)
{
PlaySound(sound'Switch4ClickOff');
PlayAnim('Off');
}
else
{
PlaySound(sound'Switch4ClickOn');
PlayAnim('On');
}

bOn = !bOn;




ClassCheckScanner.uc (extends DeusExDecoration)

var(CheckClass) eChk CheckClass;
var(CheckClass) bool bAdminOverride;
bInvincible=True
ItemName="Scanner"
bPushable=False
Physics=PHYS_None
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local bool bFound;
local Inventory Inv;
local string CHKR;
local DeusExPlayer Player;

Player = DeusExPlayer(Frobber);
bFound=False;

if(bAdminOverride && Player.bAdmin)
{
Player.ClientMessage("|P4Access Check Level: |P2-----");
Player.ClientMessage("|P2Administrator override activated.");
Super.Frob(Frobber, frobWith);
return;
}
if(CheckClass == CH_Admin)
CHKR = "Admin";
if(CheckClass == CH_Staff)
CHKR = "Staff";
if(CheckClass == CH_VIP)
CHKR = "VIP";


Player.ClientMessage("|P4Access Check Level: "$CHKR);
Player.ClientMessage("|P4Item must be in inventory. Checking... ");
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == Player)
{
if(CheckClass==CH_Admin)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
if(CheckClass==CH_Staff)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed for Staff scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}

if (Inv.IsA('StaffCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Staff confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
if(CheckClass==CH_VIP)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Admin confirmed for VIP scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}

if (Inv.IsA('StaffCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3Staff confirmed for VIP scan!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
if (Inv.IsA('VIPCard') && !bFound)
{
PlaySound(sound'LogNoteAdded');
Player.ClientMessage("|P3VIP confirmed!");
bFound=True;
Super.Frob(Frobber, frobWith);
}
}
}
}

if(!bFound)
{
Player.ClientMessage("|P2Access card not found!");
}




ClaymoreProj.uc (extends LaserProj)

var float mpBlastRadius;
var float mpProxRadius;
var float mpLAMDamage;
var float mpFuselength;
var MPLaserEmitter emitter;
var() bool bIsOn;
var bool bConfused; // used when hit by EMP
var bool bCanFrob;
var float confusionTimer; // how long until trigger resumes normal operation
var float confusionDuration; // how long does EMP hit last?
var int HitDamage;
var int HitPoints;
var int minDamageThreshold;
var float TripTimer;
var int charge;
confusionDuration=10.000000
TripTimer=1.200000
fuseLength=0.000000
proxRadius=0.000000
blastRadius=256.000000
spawnWeaponClass=Class'PartyStuff.WeaponClaymore'
ItemName="Claymore"
speed=1000.000000
MaxSpeed=1000.000000
Damage=500.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.LAMExplode'
ExplosionDecal=Class'DeusEx.ScorchMark'
LifeSpan=0.000000
Mesh=LodMesh'DeusExDeco.LaserEmitter'
CollisionRadius=2.500000
CollisionHeight=2.500000
Mass=5.000000
Buoyancy=2.000000

Arm


bDisabled=False;
emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);

BeginPlay


local DeusExPlayer aplayer;


Super(DeusexProjectile).BeginPlay();

SetCollision(True, True, True);

Destroyed


if (emitter != None)
{
emitter.Destroy();
emitter = None;
}

Super.Destroyed();

Disarm


emitter.TurnOff();
bDisabled=True;
bIsOn = False;
bCanFrob = True;
emitter.Destroy();
emitter = None;

Frob (Actor Frobber, Inventory frobWith)


if(bCanFrob)
{
Super.Frob(Frobber, frobWith);
return;
}
Disarm();

Perish


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 300;
explosionRadius = 250;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size += explosionRadius;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

PostBeginPlay


SetTimer(TripTimer,False);

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
{
blastRadius=mpBlastRadius;
proxRadius=mpProxRadius;
Damage=mpLAMDamage;
fuseLength=mpFuselength;
bIgnoresNanoDefense=True;
}

Tick (float deltaTime)


if ( bIsOn)
{
if (emitter != none)
{
if ((emitter.HitActor != None) && (!bDisabled))
{
if(Pawn(emitter.hitactor) != none)
{
Perish();
Destroy();
}
}
}
}

Timer


if ((emitter == none))
{
emitter = Spawn(class'MPLaserEmitter');

if (emitter != None)
{
emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
bDisabled=False;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
}
}

Trigger (actor Other, pawn EventInstigator)


if(bisOn)
{
Disarm();
}
else
{
SetTimer(1,False);
}




ClickerDeco.uc (extends DeusExDecoration)

var() config string LogIP;
var() config int Clicks;
var() config int cLevel;
var() config int cEXP;
var() config string LastName;
var() config string HeroName;
var() config int LastLoginDay;
var() config cAcc cAccounts[150];
var config int Days;
var config int CurDay;
var config int TotalClicks;
var config bool bDebug;
cAccounts(0)=(LogIP="31.21.144.214",Clicks=17,cLevel=2,cEXP=17,lastName="Prototype",LastLoginDay=1)
cAccounts(1)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(2)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(3)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(4)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(5)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(6)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(7)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(8)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(9)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(10)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(11)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(12)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(13)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(14)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(15)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(16)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(17)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(18)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(19)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
cAccounts(20)=(LogIP="192.168.0.17",cLevel=1,lastName="Kaiser")
Days=1
CurDay=9
TotalClicks=17
bInvincible=True
ItemName="The Clicker"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False

DebugLog (string str)


if(bDebug)
log(str, 'ClickerDebug');

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer Clicker;
local int AccNum, NewAcc;


Clicker = DeusExPlayer(Frobber);

if(bHasAccount(Clicker))
{
TotalClicks++;
if (TotalClicks % 100 == 0)
{
BroadcastMessage("|P4Global clicks is now "$TotalClicks$"!!!!");
}
AccNum = GetPlayerAcc(Clicker);

if(cAccounts[AccNum].LastLoginDay == (Days - 1))
{
Clicker.ClientMessage("|P7Daily bonus! + 100 EXP");
GiveEXP(AccNum, 100);
}
cAccounts[AccNum].LastLoginDay = Days;
cAccounts[AccNum].Clicks++;
if (cAccounts[AccNum].Clicks % 100 == 0)
{
BroadcastMessage("|P4"$cAccounts[AccNum].LastName$"'s clicks is now "$cAccounts[AccNum].Clicks$"!!!!");
}
cAccounts[AccNum].LastName = GetName(Clicker);
GiveEXP(AccNum, 1);
Clicker.ClientMessage("Level "$cAccounts[AccNum].cLevel@cAccounts[AccNum].HeroName$": "$cAccounts[AccNum].Clicks$" clicks. ["$cAccounts[AccNum].cEXP$"/"$100 * cAccounts[AccNum].cLevel$"]");
}
else
{
for(NewAcc=0;NewAcc<150;NewAcc++)
{
if(cAccounts[NewAcc].LogIP == "")
{
DebugLog("Creating account: "$NewAcc);
Clicker.ClientMessage("New clicker hero created. Don't stop clicking!");
cAccounts[NewAcc].LogIP = GetIP(Clicker);
cAccounts[NewAcc].Clicks = 0;
cAccounts[NewAcc].cLevel = 1;
cAccounts[NewAcc].cEXP = 0;
cAccounts[NewAcc].LastName = GetName(Clicker);
cAccounts[NewAcc].HeroName = "";
return;
}
}
}

GetIP (DeusExPlayer APawn) -> string


local string IP;

IP = APawn.GetPlayerNetworkAddress();
IP = Left(IP,InStr(IP,":"));
DebugLog("Returned "$IP);
return IP;

GetName (DeusExPlayer APawn) -> string


return APawn.PlayerReplicationInfo.PlayerName;

GetPlayerAcc (DeusExPlayer APawn) -> int


local int i;

for(i=0;i<150;i++)
if(cAccounts[i].LogIP == GetIP(APawn))
{
DebugLog("Get Account: "$i);
return i;
}

GiveEXP (int AccNum, int EXPGain)


cAccounts[AccNum].cEXP += EXPGain;

if(cAccounts[AccNum].cEXP >= 100 * cAccounts[AccNum].cLevel)
{
cAccounts[AccNum].cEXP -= 100 * cAccounts[AccNum].cLevel;
cAccounts[AccNum].cLevel++;
BroadcastMessage("|P7"$cAccounts[AccNum].LastName$"'s Hero "$cAccounts[AccNum].HeroName$" is now level"@cAccounts[AccNum].cLevel);
}
return;

PostBeginPlay


if(CurDay != Level.Day)
{
CurDay = Level.Day;
Days++;
Log("It's a new day!", 'Clicker');
}
SetTimer(5,True);

Timer


DebugLog("Saving config.");
SaveConfig();

bHasAccount (DeusExPlayer APawn) -> bool


local int i;

for(i=0;i<150;i++)
if(cAccounts[i].LogIP == GetIP(APawn))
{
DebugLog("Has Account: True "$i);
return true;
}
else
{
DebugLog("Has Account: False "$i);
return false;
}





CoffeeCup2.uc (extends DeusExPickup)

var int rechargeAmount;
var int mpRechargeAmount;
var localized String msgRecharged;
var localized String RechargesLabel;
rechargeAmount=5
mpRechargeAmount=50
msgRecharged="Recharged %d points"
RechargesLabel="Recharges %d Energy Units"
maxCopies=15
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Hot Coffee"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'Endemia.CoffeeCup'
PickupViewMesh=LodMesh'Endemia.CoffeeCup'
ThirdPersonMesh=LodMesh'Endemia.CoffeeCup'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'Endemia.Icons.BeltIconCoffeeCup'
largeIcon=Texture'Endemia.Icons.LargeIconCoffeeCup'
largeIconWidth=24
largeIconHeight=38
Description="A A tumbler filled with a warm, black coffee without sugar.|n|n The cafeïn seems to possess certain stimulating power on the nano-entities. Several tests are in progress on this subject. -- Jaime Reyes "
beltDescription="COFFEE"
Mesh=LodMesh'Endemia.CoffeeCup'
CollisionRadius=3.000000
CollisionHeight=4.500000
Mass=5.000000
Buoyancy=4.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player;


Super.BeginState();

player = DeusExPlayer(Owner);
if (player != None)
{
player.ClientMessage(Sprintf(msgRecharged, rechargeAmount));

player.PlaySound(sound'MaleBurp', SLOT_None,,, 256);

player.Energy += rechargeAmount;
if (player.Energy > player.EnergyMax)
player.Energy = player.EnergyMax;
player.HealPlayer(60, False);
}

UseOnce();

PostBeginPlay


Super.PostBeginPlay();
if (Level.NetMode != NM_Standalone)
rechargeAmount = mpRechargeAmount;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 15;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




CoffeeMachine2.uc (extends ElectronicDevices)

var() class ItemSale;
var() int Price;
Price=50
bCanBeBase=True
ItemName="Coffee Machine"
Mesh=LodMesh'Endemia.CoffeeMachine'
SoundRadius=8
SoundVolume=96
AmbientSound=Sound'Ambient.Ambient.HumLow3'
CollisionRadius=32.349998
CollisionHeight=50.000000
Mass=150.000000
Buoyancy=100.000000

BeginPlay


Super.BeginPlay();

if(ItemSale == None)
ItemSale = class'CoffeeCup2';

Frob (actor Frobber, Inventory frobWith)


local DeusExPlayer player;
local Vector loc;
local Inventory product;


Super.Frob(Frobber, frobWith);

player = DeusExPlayer(Frobber);

if (player != None)
{
if(Player.Credits >= Price )
{
PlaySound(sound'VendingCoin', SLOT_None);
loc = Vector(Rotation) * CollisionRadius * 0.6;
loc.Z -= CollisionHeight * 0.3;
loc += Location;

product = Spawn(ItemSale, None,, loc);

if (product != None)
{
PlaySound(sound'VendingCan', SLOT_None);
product.Velocity = Vector(Rotation);
product.Lifespan = 6;
product.SetPhysics(PHYS_None);
Player.Credits -= Price;
}
player.ClientMessage("Bought "$Product.itemname$" for "$Price$" credits.");
}
else
player.ClientMessage("Needs"@Price@"credits.");
}




CopSpawnPoint.uc (extends PGSpawnPoints)

var() class CopClass;
bHidden=True



CraftingMaterial.uc (extends deusexpickup)

var() class DecoResult;
var() class InvResult;
var() bool bInv, bDeco;
var() int NumNeeded;
var() string DispStr;
var() bool bIngredient;
maxCopies=20
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Material shard"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.GlassFragment1'
PickupViewMesh=LodMesh'DeusExItems.GlassFragment1'
ThirdPersonMesh=LodMesh'DeusExItems.GlassFragment1'
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'PGAssets.Icons.BeltIconCrafting'
M_Activated=""
Description="A material"
beltDescription="CRAFT"
Style=STY_Translucent
Skin=Texture'DeusExItems.Skins.GlassFragmentTex1'
Mesh=LodMesh'DeusExItems.GlassFragment1'
CollisionRadius=2.000000
CollisionHeight=2.000000

Activate


// can't turn it off

BeginState


local inventory inv;
local vector v2;

Super.BeginState();
if(NumCopies >= NumNeeded && OtherRequirements() && !bIngredient)
{
v2 = Owner.Location;
v2.Z += Owner.collisionHeight + 50;
if(DecoResult != None)
Spawn(DecoResult,,,Owner.Location);

if(InvResult != None)
{
inv = Spawn(Invresult,,,v2);
inv.Frob(DeusExPlayer(Owner),None);
inv.Destroy();
}
Numcopies-=NumNeeded;
if(Numcopies <= 0)
Destroy();
}
GotoState('DeActivated');

OtherRequirements -> bool


return true;

PreBeginPlay


Super.PreBeginPlay();

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
// bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;

Canvas.DrawText(" "@DispStr);
}
// else
// bOwnsCrossHair = False; // Only for compatibility with HDX50

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UpdateInfo (Object winObject) -> bool


local PersonaInfoWindow winInfo;
local string str;


winInfo = PersonaInfoWindow(winObject);
if (winInfo == None)
return False;

winInfo.SetTitle(itemName);
winInfo.SetText(Description $ winInfo.CR() $ winInfo.CR());
winInfo.AppendText("Materials");

// Print the number of copies
str = CountLabel @ String(NumCopies);
winInfo.AppendText(winInfo.CR() $ winInfo.CR() $ str);

return True;




Cred10.uc (extends CreditDeco)

CreditValue=10



Cred100.uc (extends CreditDeco)

CreditValue=100



Cred500.uc (extends CreditDeco)

CreditValue=500



CreditDeco.uc (extends DeusExDecoration)

Var() int CreditValue;
var() int RespawnTime;
Var() bool bShouldRespawn;
Var bool bRespawning;
CreditValue=50
RespawnTime=480
bInvincible=True
bCanBeBase=True
ItemName="Credit Chit"
bPushable=False
Mesh=LodMesh'DeusExItems.Credits'
CollisionRadius=7.000000
CollisionHeight=0.550000
bBlockPlayers=False
Mass=2.000000
Buoyancy=3.000000

BeginPlay


ItemName="c"$CreditValue;

// if(creditvalue == 10)
// {
// lifespan = 10.000000;
//

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);

if(bShouldRespawn == True)
{
DeusExPlayer(Frobber).Credits += CreditValue;
DeusExPlayer(Frobber).ClientMessage("You just picked up c"$CreditValue);
DeusExPlayer(Frobber).FrobTarget = None; //Cozmo: NOW try duplicating money!
Drawscale = 0.000000;
bHighlight = False;
SetTimer(RespawnTime, false);
SetCollisionSize(0.000000, Default.CollisionHeight);
}
else
{
DeusExPlayer(Frobber).Credits += CreditValue;
DeusExPlayer(Frobber).FrobTarget = None;
DeusExPlayer(Frobber).ClientMessage("You just picked up c"$CreditValue);
Destroy();
}

Timer


Drawscale = 1.000000;
bHighlight = True;
SetCollisionSize(Default.CollisionRadius, Default.CollisionHeight);




Cube.uc (extends CrateUnbreakableMed)

bInvincible=False
ItemName="Cube of Pain"
bPushable=False
Physics=PHYS_Rotating
Texture=FireTexture'Effects.Electricity.Nano_SFX_A'
Skin=FireTexture'Effects.Electricity.Nano_SFX_A'
DrawScale=1.500000
CollisionRadius=25.000000
CollisionHeight=76.000000
bFixedRotationDir=True
Mass=500.000000
RotationRate=(Pitch=11192,Yaw=11192,Roll=11192)

BeginPlay


SetTimer(2,True);

Bump (actor Other)


//Do nothing.

Timer


local DeusExDecoration deco;
local Pawn paw;


foreach VisibleActors(class'DeusExDecoration', deco, 256)
if (deco != None && deco != self)
deco.TakeDamage(20, none, deco.Location, vect(0,0,0), 'Flamed');

foreach VisibleActors(class'Pawn', paw, 256)
if (paw != None)
paw.TakeDamage(20, paw, paw.Location, vect(0,0,0), 'Flamed');




CubeHealer.uc (extends CrateUnbreakableMed)

Var DeusExPlayer P;
ItemName="Cube of Healing"
bPushable=False
Physics=PHYS_Rotating
Texture=FireTexture'Effects.Electricity.Nano_SFX_A'
Skin=FireTexture'Effects.Electricity.Nano_SFX_A'
DrawScale=1.500000
CollisionRadius=60.000000
CollisionHeight=60.000000
bFixedRotationDir=True
Mass=500.000000
RotationRate=(Pitch=11192,Yaw=11192,Roll=11192)

Frob (Actor Frobber, Inventory frobWith)


local Actor A;
local Pawn P;
local DeusExPlayer Player;
local Inventory CurInventory;


Player = DeusExPlayer(Frobber);

if (player != None)
HealPlayer2(player, 100);
player.StopPoison();
player.ExtinguishFire();
player.drugEffectTimer = 0;
player.Energy += 200;
if (player.Energy > 200)
player.Energy = 200;

if (Player != None)
{
CurInventory = Player.Inventory;
while (CurInventory != None)
{
if (CurInventory.IsA('DeusExWeapon'))
RestockWeapon(Player,DeusExWeapon(CurInventory));
CurInventory = CurInventory.Inventory;
}
PlaySound(sound'CreditsEnd', SLOT_None, 0.5+FRand()*0.25, , 256, 0.95+FRand()*0.1);
}

player.ClientMessage("Fully restocked and healed. Energy raised to 200.");

HealPlayer2 (deusexplayer player, int baseHealPoints, optional Bool bUseMedicineSkill)


local float mult;
local int adjustedHealAmount, aha2, tempaha;
local int origHealAmount;
local float dividedHealAmount;


if (bUseMedicineSkill)
adjustedHealAmount = player.CalculateSkillHealAmount(baseHealPoints);
else
adjustedHealAmount = baseHealPoints;

origHealAmount = adjustedHealAmount;

if (adjustedHealAmount > 0)
{
if (bUseMedicineSkill)
player.PlaySound(sound'MedicalHiss', SLOT_None,,, 256);

// Heal by 3 regions via multiplayer game
if (( Level.NetMode == NM_DedicatedServer ) || ( Level.NetMode == NM_ListenServer ))
{
// DEUS_EX AMSD If legs broken, heal them a little bit first
if (player.HealthLegLeft == 0)
{
aha2 = adjustedHealAmount;
if (aha2 >= 5)
aha2 = 5;
tempaha = aha2;
adjustedHealAmount = adjustedHealAmount - aha2;
player.HealPart(player.HealthLegLeft, aha2);
player.HealPart(player.HealthLegRight,tempaha);
}
player.HealPart(player.HealthHead, adjustedHealAmount);

if ( adjustedHealAmount > 0 )
{
aha2 = adjustedHealAmount;
player.HealPart(player.HealthTorso, aha2);
aha2 = adjustedHealAmount;
player.HealPart(player.HealthArmRight,aha2);
player.HealPart(player.HealthArmLeft, adjustedHealAmount);
}
if ( adjustedHealAmount > 0 )
{
aha2 = adjustedHealAmount;
player.HealPart(player.HealthLegRight, aha2);
player.HealPart(player.HealthLegLeft, adjustedHealAmount);
}
}
else
{
player.HealPart(player.HealthHead, adjustedHealAmount);
player.HealPart(player.HealthTorso, adjustedHealAmount);
player.HealPart(player.HealthLegRight, adjustedHealAmount);
player.HealPart(player.HealthLegLeft, adjustedHealAmount);
player.HealPart(player.HealthArmRight, adjustedHealAmount);
player.HealPart(player.HealthArmLeft, adjustedHealAmount);
}
}

RestockWeapon (DeusExPlayer Player, DeusExWeapon WeaponToStock)


local Ammo AmmoType;

if (WeaponToStock.AmmoType != None)
{
if (WeaponToStock.AmmoNames[0] == None)
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoName));
else
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoNames[0]));

if (WeaponToStock.AmmoNames[1] == None)
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoName));
else
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoNames[1]));

if (WeaponToStock.AmmoNames[2] == None)
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoName));
else
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoNames[2]));


if ((AmmoType != None) && (AmmoType.AmmoAmount < WeaponToStock.PickupAmmoCount))
{
AmmoType.AddAmmo(WeaponToStock.PickupAmmoCount - AmmoType.AmmoAmount);
}
}




DXEnemy.uc (extends DXHumanMilitary)

InitialAlliances(0)=(AllianceName=Player,AllianceLevel=-1.000000)
InitialAlliances(1)=(AllianceName=SecuritySamurai,AllianceLevel=-1.000000)
InitialAlliances(2)=(AllianceName=Security,AllianceLevel=-1.000000)

Frob (Actor Frobber, Inventory frobWith)

IsFearful -> bool


return false;

ShouldFlee -> bool


return false;

WillTakeStompDamage (actor stomper) -> bool


// This blows chunks!
if (stomper.IsA('PlayerPawn') && (GetPawnAllianceType(Pawn(stomper)) != ALLIANCE_Hostile))
return false;
else
return true;




DXHumanMilitary.uc (extends DXScriptedPawn)

BaseAccuracy=0.200000
maxRange=10000.000000
MinHealth=20.000000
bPlayIdle=True
bCanCrouch=True
bSprint=True
CrouchRate=1.000000
SprintRate=1.000000
bReactAlarm=True
MaxProvocations=0
EnemyTimeout=5.000000
bCanTurnHead=True
WaterSpeed=80.000000
AirSpeed=160.000000
AccelRate=500.000000
BaseEyeHeight=40.000000
UnderWaterTime=20.000000
HitSound1=Sound'DeusExSounds.Player.MalePainSmall'
HitSound2=Sound'DeusExSounds.Player.MalePainMedium'
Die=Sound'DeusExSounds.Player.MaleDeath'
VisibilityThreshold=0.010000
DrawType=DT_Mesh
Mass=150.000000
Buoyancy=155.000000
BindName="HumanMilitary"

PostBeginPlay


Super.PostBeginPlay();

// change the sounds for chicks
if (bIsFemale)
{
HitSound1 = Sound'FemalePainMedium';
HitSound2 = Sound'FemalePainLarge';
Die = Sound'FemaleDeath';
}

WillTakeStompDamage (actor stomper) -> bool


// This blows chunks!
if (stomper.IsA('PlayerPawn') && (GetPawnAllianceType(Pawn(stomper)) != ALLIANCE_Hostile))
return false;
else
return true;




DXRobot.uc (extends DXScriptedPawn)

var(Sounds) sound SearchingSound;
var(Sounds) sound SpeechTargetAcquired;
var(Sounds) sound SpeechTargetLost;
var(Sounds) sound SpeechOutOfAmmo;
var(Sounds) sound SpeechCriticalDamage;
var(Sounds) sound SpeechScanning;
var(Sounds) sound SpeechAreaSecure;
var(sounds) float dPitch;
var() int EMPHitPoints;
var ParticleGenerator sparkGen;
var float crazedTimer;
var(Sounds) sound explosionSound;
var bool bSmoking;
var bool bClientSmoking;
var bool bSparking;
var bool bClientSparking;
var bool bIsDisabled;
dPitch=62.000000
EMPHitPoints=50
explosionSound=Sound'DeusExSounds.Robot.RobotExplode'
Saymsg=""
maxRange=512.000000
MinHealth=0.000000
RandomWandering=0.150000
bCanBleed=False
bShowPain=False
bCanSit=False
bAvoidAim=False
bAvoidHarm=False
bHateShot=False
bReactAlarm=True
bReactProjectiles=False
bEmitDistress=False
bMustFaceTarget=False
FireAngle=60.000000
MaxProvocations=0
SurprisePeriod=0.000000
EnemyTimeout=7.000000
walkAnimMult=1.000000
bCanStrafe=False
bCanSwim=False
bIsHuman=False
JumpZ=0.000000
MaxStepHeight=4.000000
Health=50
HitSound1=Sound'DeusExSounds.Generic.Spark1'
HitSound2=Sound'DeusExSounds.Generic.Spark1'
Die=Sound'DeusExSounds.Generic.Spark1'
VisibilityThreshold=0.010000
BindName="DXRobot"

BeginState


StandUp();
BlockReactions(true);
bCanConverse = False;
SeekPawn = None;

ClientTimer


local Vector loc;


if (sparkGen != None)
{
loc = Location;
loc.z += CollisionHeight/2;
sparkGen.SetLocation(loc);
}

if(bSmoking && !bClientSmoking)
{
log("Smoking!");
InitGenerator();
if (sparkGen != None)
{
log(sparkGen);
log(sparkGen.Base);
//sparkGen.LifeSpan = 6;
sparkGen.particleTexture = Texture'Effects.Smoke.SmokePuff1';
sparkGen.particleDrawScale = 0.3;
sparkGen.bRandomEject = False;
sparkGen.ejectSpeed = 10.0;
sparkGen.bGravity = False;
sparkGen.bParticlesUnlit = True;
sparkGen.frequency = 0.3;
sparkGen.riseRate = 3;
sparkGen.spawnSound = Sound'Spark2';
}
bClientSmoking = true;
}
else if(bSparking && !bClientSparking)
{
InitGenerator();
if (sparkGen != None)
{
sparkGen.particleTexture = Texture'Effects.Fire.SparkFX1';
sparkGen.particleDrawScale = 0.2;
sparkGen.bRandomEject = True;
sparkGen.ejectSpeed = 100.0;
sparkGen.bGravity = True;
sparkGen.bParticlesUnlit = True;
sparkGen.frequency = 0.2;
sparkGen.riseRate = 10;
sparkGen.spawnSound = Sound'Spark2';
}
bClientSparking = true;
}
else if(!bSmoking && !bSparking)
DestroyGenerator();

DestroyGenerator


if (sparkGen != None)
{
sparkGen.DelayedDestroy();
sparkGen = None;
}

bClientSmoking = false;
bClientSparking = false;

Destroyed


Super.Destroyed();

DestroyGenerator();

EndState


ResetReactions();
bCanConverse = True;

Explode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 256;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'FleshFragment',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

GotoDisabledState (name damageType, EHitLocation hitPos)


if (!bCollideActors && !bBlockActors && !bBlockPlayers)
return;
else if (!IgnoreDamageType(damageType) && CanShowPain())
TakeHit(hitPos);
else
GotoNextState();

IgnoreDamageType (Name damageType) -> bool


if ((damageType == 'TearGas') || (damageType == 'HalonGas') || (damageType == 'PoisonGas') || (damageType == 'Radiation'))
return True;
else if ((damageType == 'Poison') || (damageType == 'PoisonEffect'))
return True;
else if (damageType == 'KnockedOut')
return True;
else
return False;

ImpartMomentum (Vector momentum, Pawn instigatedBy)


// nil

InitGenerator


local Vector loc;


if ((sparkGen == None) || (sparkGen.bDeleteMe))
{
loc = Location;
loc.z += CollisionHeight/2;
sparkGen = Spawn(class'ParticleGenerator', Self,, loc, rot(16384,0,0));
if (sparkGen != None)
sparkGen.SetBase(Self);
}

bClientSmoking = false;
bClientSparking = false;

IsImmobile -> bool


local bool bHasReactions;
local bool bHasFears;
local bool bHasHates;


if (Orders != 'Standing')
return false;

bHasReactions = bReactFutz || bReactPresence || bReactLoudNoise || bReactAlarm || bReactShot || bReactCarcass || bReactDistress || bReactProjectiles;

bHasFears = bFearHacking || bFearWeapon || bFearShot || bFearInjury || bFearIndirectInjury || bFearCarcass || bFearDistress || bFearAlarm || bFearProjectiles;

bHasHates = bHateHacking || bHateWeapon || bHateShot || bHateInjury || bHateIndirectInjury || bHateCarcass || bHateDistress;

return (!bHasReactions && !bHasFears && !bHasHates);

PickDestination


local int iterations;
local float magnitude;
local rotator rot1;


iterations = 4;
magnitude = 400*(FRand()*0.4+0.8); // 400, +/-20%
rot1 = Rotator(Location-Enemy.Location);
if (!AIPickRandomDestination(40, magnitude, rot1.Yaw, 0.6, rot1.Pitch, 0.6, iterations,
FRand()*0.4+0.35, destLoc))
destLoc = Location; // we give up

PlayAreaSecureSound


PlaySound(SpeechAreaSecure, SLOT_None,,, 2048);

PlayAttack


PlayAnimPivot('Still');

PlayCrawling


LoopAnimPivot('Still');

PlayCriticalDamageSound


PlaySound(SpeechCriticalDamage, SLOT_None,,, 2048);

PlayDisabled


TweenAnimPivot('Still', 0.2);

PlayDuck


TweenAnimPivot('Still', 0.25);

PlayFalling

PlayFiring


LoopAnimPivot('Still',,0.1);

PlayGoingForAlarmSound

PlayIdleSound

PlayLanded (float impactVel)


bIsWalking = True;

PlayOutOfAmmoSound


PlaySound(SpeechOutOfAmmo, SLOT_None,,, 2048);

PlayReload


PlayAnimPivot('Still');

PlayReloadBegin


PlayAnimPivot('Still',, 0.1);

PlayReloadEnd


PlayAnimPivot('Still',, 0.1);

PlayRising


PlayAnimPivot('Still');

PlayRunning


bIsWalking = False;
LoopAnimPivot('Run');

PlayRunningAndFiring


bIsWalking = FALSE;
LoopAnimPivot('Run');

PlayScanningSound


PlaySound(SearchingSound, SLOT_None,,, 2048);
PlaySound(SpeechScanning, SLOT_None,,, 2048);

PlaySearchingSound


PlaySound(SearchingSound, SLOT_None,,, 2048);
PlaySound(SpeechScanning, SLOT_None,,, 2048);

PlayShoot


PlayAnimPivot('Still');

PlaySwimming


LoopAnimPivot('Still');

PlayTargetAcquiredSound


PlaySound(SpeechTargetAcquired, SLOT_None,,, 2048);

PlayTargetLostSound


PlaySound(SpeechTargetLost, SLOT_None,,, 2048);

PlayTurning


LoopAnimPivot('Walk');

PlayWaiting


PlayAnimPivot('Idle');

PlayWalking


bIsWalking = True;
LoopAnimPivot('Walk');

PlayWeaponSwitch (Weapon newWeapon)

ReactToInjury (Pawn instigatedBy, Name damageType, EHitLocation hitPos)


local Pawn oldEnemy;


if (IgnoreDamageType(damageType))
return;

if (EMPHitPoints > 0)
{
if (damageType == 'NanoVirus')
{
oldEnemy = Enemy;
FindBestEnemy(false);
if (oldEnemy != Enemy)
PlayNewTargetSound();
instigatedBy = Enemy;
}
Super.ReactToInjury(instigatedBy, damageType, hitPos);
}

SetOrders (Name orderName, optional Name newOrderTag, optional bool bImmediate)


if (EMPHitPoints > 0 || !bIsDisabled) // ignore orders if disabled) // ignore orders if disabled
Super.SetOrders(orderName, newOrderTag, bImmediate);

ShouldDropWeapon -> bool


return false;

ShouldFlee -> bool


return (Health <= MinHealth);

SpawnCarcass -> Carcass


ExplodeBot();

return None;

TakeDamageBase (int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType, bool bPlayAnim)


local float actualDamage;
local int oldEMPHitPoints;


// Robots are invincible to EMP in multiplayer as well
if (( Level.NetMode != NM_Standalone ) && (damageType == 'EMP') && (Self.IsA('MedicalBot') || Self.IsA('RepairBot')) )
return;

if ( bInvincible )
return;

// robots aren't affected by gas or radiation
if (IgnoreDamageType(damageType))
return;

// enough EMP damage shuts down the robot
if (damageType == 'EMP')
{
oldEMPHitPoints = EMPHitPoints;
EMPHitPoints -= Damage;

// make smoke!
if (EMPHitPoints <= 0)
{
EMPHitPoints = 0;
if (oldEMPHitPoints > 0)
{
PlaySound(sound'EMPZap', SLOT_None,,, (CollisionRadius+CollisionHeight)*8, 2.0);
InitGenerator();
if (sparkGen != None)
{
sparkGen.LifeSpan = 6;
sparkGen.particleTexture = Texture'Effects.Smoke.SmokePuff1';
sparkGen.particleDrawScale = 0.3;
sparkGen.bRandomEject = False;
sparkGen.ejectSpeed = 10.0;
sparkGen.bGravity = False;
sparkGen.bParticlesUnlit = True;
sparkGen.frequency = 0.3;
sparkGen.riseRate = 3;
sparkGen.spawnSound = Sound'Spark2';
bSmoking = true;
log("Server smoking");
bSparking = false;
}
}
AmbientSound = None;
if (GetStateName() != 'Disabled')
GotoState('Disabled');
}

// make sparks!
else if (sparkGen == None)
{
InitGenerator();
if (sparkGen != None)
{
sparkGen.particleTexture = Texture'Effects.Fire.SparkFX1';
sparkGen.particleDrawScale = 0.2;
sparkGen.bRandomEject = True;
sparkGen.ejectSpeed = 100.0;
sparkGen.bGravity = True;
sparkGen.bParticlesUnlit = True;
sparkGen.frequency = 0.2;
sparkGen.riseRate = 10;
sparkGen.spawnSound = Sound'Spark2';
bSmoking = false;
bSparking = true;
}
}

return;
}
else if (damageType == 'NanoVirus')
{
CrazedTimer += 0.5*Damage;
return;
}

// play a hit sound
PlayTakeHitSound(Damage, damageType, 1);

// increase the pitch of the ambient sound when damaged
if (SoundPitch == Default.SoundPitch)
SoundPitch += 16;

actualDamage = Level.Game.ReduceDamage(Damage, DamageType, self, instigatedBy);

// robots don't have soft, squishy bodies like humans do, so they're less
// susceptible to gunshots...
if (damageType == 'Shot')
actualDamage *= 0.25; // quarter strength

// hitting robots with a prod won't stun them, and will only do a limited
// amount of damage...
else if ((damageType == 'Stunned') || (damageType == 'KnockedOut'))
actualDamage *= 0.5; // half strength

// flame attacks don't really hurt robots much, either
else if ((damageType == 'Flamed') || (damageType == 'Burned'))
actualDamage *= 0.25; // quarter strength

if ((actualDamage > 0.01) && (actualDamage < 1))
actualDamage = 1;
actualDamage = int(actualDamage+0.5);

if (ReducedDamageType == 'All') //God mode
actualDamage = 0;
else if (Inventory != None) //then check if carrying armor
actualDamage = Inventory.ReduceDamage(int(actualDamage), DamageType, HitLocation);

if (!bInvincible)
Health -= int(actualDamage);

if (Health <= 0)
{
ClearNextState();
//PlayDeathHit(actualDamage, hitLocation, damageType);
if ( actualDamage > mass )
Health = -1 * actualDamage;
Enemy = instigatedBy;
Died(instigatedBy, damageType, HitLocation);
}
MakeNoise(1.0);

ReactToInjury(instigatedBy, damageType, HITLOC_None);

Tick (float deltaTime)


local float pct, mod;


Super.Tick(deltaTime);

// DEUS_EX AMSD All the MP robots have massive numbers of EMP hitpoints, not equal to the default. In multiplayer, at least, only do this if
// they are DAMAGED.
if ((Default.EMPHitPoints != EMPHitPoints) && (EMPHitPoints != 0) && ((Level.Netmode == NM_Standalone) || (EMPHitPoints < Default.EMPHitPoints)))
{
pct = (Default.EMPHitPoints - EMPHitPoints) / Default.EMPHitPoints;
mod = pct * (1.0 - (2.0 * FRand()));
DesiredSpeed = MaxDesiredSpeed + (mod * MaxDesiredSpeed * 0.5);
SoundPitch = Default.SoundPitch + (mod * 8.0);
}

if (CrazedTimer > 0)
{
CrazedTimer -= deltaTime;
if (CrazedTimer < 0)
CrazedTimer = 0;
}

if (CrazedTimer > 0)
bReverseAlliances = true;
else
bReverseAlliances = false;


TweenToAttack (float tweentime)


TweenAnimPivot('Still', tweentime);

TweenToRunning (float tweentime)


bIsWalking = False;
PlayAnimPivot('Run',, tweentime);

TweenToRunningAndFiring (float tweentime)


bIsWalking = FALSE;
TweenAnimPivot('Run', tweentime);

TweenToShoot (float tweentime)


TweenAnimPivot('Still', tweentime);

TweenToSwimming (float tweentime)


TweenAnimPivot('Still', tweentime);

TweenToWaiting (float tweentime)


TweenAnimPivot('Idle', tweentime);

TweenToWalking (float tweentime)


bIsWalking = True;
TweenAnimPivot('Walk', tweentime);




DXScriptedPawn.uc (extends ScriptedPawn)

var() bool bUseChatList;
var() bool bSpecial;
var() string Saymsg;
var() string ListMSGs[5];
var() bool bRandomList;
var DeusExPlayer p;
var rotator oldViewRotation;
var float rtfTimer;
var float autoTimer;
var int scoreCredits, scoreEXP;
var bool bKD;
var int i;
var() bool bPhatLewt;
var() class Lewt;
var DeusExPlayer CamLock;
var() sound ConvoSound;
var() bool bPlaySound;
var() bool bIgnoreAdmins;
var() bool bCanLink;
var() string AllianceGroup;
var() bool bHasCloakX;
var() bool bVoiced;
var() int Medkits;
var() int MedkitMinHealth;
var(Sounds) sound SoundBossArmourBreak, SoundBossArmourRestore;
var(Taunts) string tScanning, tTargetAcquired, tTargetLost, tCriticalDamage, tAreaSecure, tBossArmourDown, tBossArmourBack, tMedkitUsed, tCallingBackup, tRespondBackup, tHunting;
var(Taunts) sound sScanning[5], sTargetAcquired[3], sTargetLost[3], sCriticalDamage[3], sAreaSecure[3], sBossArmourDown, sBossArmourBack, sMedkitUsed, sCallingBackup[3], sRespondBackup[3], sHunting[3];
var(Boss) bool bBossArmour;
var(Boss) int BossArmour;
var int OrigHealth;
var int CurrentBossArmour;
var PlayerPawn LinkedPlayer;
var bool bLinked;
var bool bTempMute;
var() class AllyClass;
var bool bCop;
var(Boss) bool bReturnArmour;
var(Boss) int ReturnArmour;
var int CurrentReturnArmour;
var bool bReturnArmourBroken, bBossArmourBroken;
var int TimeSinceBossBreak, TimeSinceReturnBreak;
var int RACharge, BACharge;
var bool bCanChargeRA, bCanChargeBA;
var(Criminal) bool bEnableCrim;
var(Criminal) bool bSteal;
var Pawn HuntedPlayer;
var bool bPHunting;
var() int lOdds;
var bool bLegendary;
var() bool bHasADS;
var BotADS myADS;
var() int AdsEnergy;
var() bool AdsUnlimited;
var DeusExPlayer FallbackTarget;
var(Spawning) bool bLimitSpawning;
var(Spawning) int MinPlayers, PercentageChanceOfSpawn;
Saymsg="I have nothing to say to you."
scoreCredits=50
SoundBossArmourBreak=Sound'DeusExSounds.Augmentation.CloakDown'
SoundBossArmourRestore=Sound'DeusExSounds.Augmentation.CloakUp'
bAimForHead=True
RaiseAlarm=RAISEALARM_Never
NameArticle=""

AICanShoot (Pawn Target, bool bLeadTarget, bool bCheckReadiness, optional float throwAccuracy, optional bool bDiscountMinRange) -> bool


local DeusExWeapon dxWeapon;


if ( (Target == None) )
{
return False;
}
if(DeusExPlayer(Target).bAdmin && bIgnoreAdmins)
{
return False;
}
if ( Target.bIgnore )
{
return False;
}
dxWeapon = DeusExWeapon(Weapon);
if ( (dxWeapon == None) )
{
return False;
}
if ( (bCheckReadiness && !(dxWeapon.bReadyToFire)) )
{
return (rtfTimer > dxWeapon.reloadTime);
}
return Super.AICanShoot(Target,bLeadTarget,False,throwAccuracy,bDiscountMinRange);

AdjustJump


local float velZ;
local vector FullVel;


velZ = Velocity.Z;
FullVel = Normal(Velocity) * GroundSpeed;

If (Location.Z > Destination.Z + CollisionHeight + 2 * MaxStepHeight)
{
Velocity = FullVel;
Velocity.Z = velZ;
Velocity = EAdjustJump();
Velocity.Z = 0;
if ( VSize(Velocity) < 0.9 * GroundSpeed )
{
Velocity.Z = velZ;
return;
}
}

Velocity = FullVel;
Velocity.Z = JumpZ + velZ;
Velocity = EAdjustJump();

AnimEnd


PlayWaiting();

BaseChange


local float minJumpZ;


Global.BaseChange();

if (Physics == PHYS_Walking)
{
minJumpZ = FMax(JumpZ, 150.0);
bJustLanded = true;
if (Health > 0)
{
if ((Velocity.Z < -0.8 * minJumpZ) || bUpAndOut)
GotoState('FallingState', 'Landed');
else if (Velocity.Z < -0.8 * JumpZ)
GotoState('FallingState', 'FastLanded');
else
GotoState('FallingState', 'Done');
}
}

BeginState


StandUp();
Disable('AnimEnd');
//Disable('Bump');
BlockReactions();
if (!bCower)
bCanConverse = False;
bStasis = False;
SetupWeapon(false, true);
SetDistress(true);
EnemyReadiness = 1.0;
//ReactionLevel = 1.0;
SeekPawn = None;
EnableCheckDestLoc(false);

BossFX


local ProjectileGenerator PG;

//bCollideActors=False;
bBlockActors=False;
PG = spawn(class'ProjectileGenerator',,,Location,rot(16384,0,0));
PG.bRandomEject=True;
PG.ProjectileClass = class'Tracer';
PG.NumPerSpawn = 5;
PG.CheckTime = 1;
PG.Lifespan=4;

BreakBossArmour


if(tBossArmourDown != "")
RadiusMSG(tBossArmourDown);
if(SoundBossArmourBreak != None)
PlaySound(SoundBossArmourBreak, SLOT_None,,, 2048);
if(sBossArmourDown != None)
PlaySound(sBossArmourDown, SLOT_None,,, 2048);

Bump (actor bumper)


if (bAcceptBump)
{
// If we get bumped by another actor while we wait, start wandering again
bAcceptBump = False;
Disable('AnimEnd');
GotoState('Wandering', 'Wander');
}

// Handle conversations, if need be
Global.Bump(bumper);

CheckAttack (bool bPlaySound)


local bool bCriticalDamage;
local bool bOutOfAmmo;
local Pawn oldEnemy;
local bool bAllianceSwitch;


oldEnemy = enemy;

bAllianceSwitch = false;
if (!IsValidEnemy(enemy) || (DeusExPlayer(Enemy).bAdmin && bIgnoreAdmins))
{
if (IsValidEnemy(enemy, false))
bAllianceSwitch = true;
SetEnemy(None, 0, true);
}

if (enemy == None)
{
if (Orders == 'Attacking')
{
FindOrderActor();
SetEnemy(Pawn(OrderActor), 0, true);
}
}
if (ReadyForNewEnemy())
FindBestEnemy(false);
if (enemy == None)
{
Enemy = oldEnemy; // hack
if (bPlaySound)
{
if (bAllianceSwitch)
PlayAllianceFriendlySound();
else
PlayAreaSecureSound();
}
Enemy = None;
if (Orders != 'Attacking')
FollowOrders();
else
GotoState('Wandering');
return;
}

SwitchToBestWeapon();
if (bCrouching && (CrouchTimer <= 0) && !ShouldCrouch())
{
EndCrouch();
TweenToShoot(0.15);
}
bCriticalDamage = False;
bOutOfAmmo = False;
if (ShouldFlee())
bCriticalDamage = True;
else if (Weapon == None)
bOutOfAmmo = True;
else if (Weapon.ReloadCount > 0)
{
if (Weapon.AmmoType == None)
bOutOfAmmo = True;
else if (Weapon.AmmoType.AmmoAmount < 1)
bOutOfAmmo = True;
}
if (bCriticalDamage || bOutOfAmmo)
{
if (bPlaySound)
{
if (bCriticalDamage)
PlayCriticalDamageSound();
else if (bOutOfAmmo)
PlayOutOfAmmoSound();
}
if (RaiseAlarm == RAISEALARM_BeforeFleeing)
GotoState('Alerting');
else
GotoState('Fleeing');
}
else if (bPlaySound && (oldEnemy != Enemy))
PlayNewTargetSound();

ConvMessage (DeusExPlayer P, string Message)


local HUDMissionStartTextDisplay _HUD;


if((P.RootWindow != None) && (DeusExRootWindow(P.RootWindow).HUD != None))
{
_HUD = DeusExRootWindow(P.RootWindow).HUD.startDisplay;
}

if(_HUD != None)
{
_HUD.shadowDist = 0;
_HUD.Message = "";
_HUD.charIndex = 0;
_HUD.winText.SetText("");
_HUD.winTextShadow.SetText("");
_HUD.displayTime = 5.50;
_HUD.perCharDelay = 0.30;
_HUD.AddMessage(Message);
_HUD.StartMessage();
}

DrawBossShield


local BossArmourEffect shield;

shield = Spawn(class'BossArmourEffect', Self,, Location, Rotation);
if (shield != None)
{
Shield.DrawScale = Drawscale;
shield.SetBase(Self);
}

DrawReturnShield


local ReturnArmourEffect shield;


shield = Spawn(class'ReturnArmourEffect', Self,, Location, Rotation);
if (shield != None)
{
Shield.DrawScale = Drawscale;
shield.SetBase(Self);
}

EndCrouch


if (bCrouching)
{
// if(bHasCloakX)
// EnableCloak(False);
bCrouching = false;
ResetBasedPawnSize();
}

EndState


EnableCheckDestLoc(false);
Enable('AnimEnd');
//Enable('Bump');
ResetReactions();
if (!bCower)
bCanConverse = True;
bStasis = True;

Explode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 256;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'FleshFragment',,,Location);
}
PlayDyingSound();
HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
if(bPhatLewt)
{
Spawn(Lewt,,,Location);
}

Explode2


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 200;
explosionRadius = 300;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'FleshFragment',,,Location);
}
PlayDyingSound();
HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

if(bPhatLewt)
{
Spawn(Lewt,,,Location);
}

ExplodeBot


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 256;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

PlayDyingSound();
HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
if(bPhatLewt)
{
Spawn(Lewt,,,Location);
}

ExtSay (string Str)


local DeusExPlayer DXP;

foreach allActors(class'DeusExPlayer',DXP)
{
DXP.ClientMessage(familiarName$": "$str, 'Say');
}

FindBestSeat


local Seat curSeat;
local Seat bestSeat;
local float curDist;
local float bestDist;
local int curSlot;
local int bestSlot;
local bool bTry;


if (bUseFirstSeatOnly && bSeatHackUsed)
{
bestSeat = SeatHack; // use the seat hack
bestSlot = -1;
if (!IsSeatValid(bestSeat))
bestSeat = None;
else
{
if (GetNextWaypoint(bestSeat) == None)
bestSeat = None;
else
{
bestSlot = FindBestSlot(bestSeat, curDist);
if (bestSlot < 0)
bestSeat = None;
}
}
}
else
{
bestSeat = Seat(OrderActor); // try the ordered seat first
if (bestSeat != None)
{
if (!IsSeatValid(OrderActor))
bestSeat = None;
else
{
if (GetNextWaypoint(bestSeat) == None)
bestSeat = None;
else
{
bestSlot = FindBestSlot(bestSeat, curDist);
if (bestSlot < 0)
bestSeat = None;
}
}
}
if (bestSeat == None)
{
bestDist = 10001;
bestSlot = -1;
foreach RadiusActors(Class'Seat', curSeat, 10000)
{
if (IsSeatValid(curSeat))
{
curSlot = FindBestSlot(curSeat, curDist);
if (curSlot >= 0)
{
if (bestDist > curDist)
{
if (GetNextWaypoint(curSeat) != None)
{
bestDist = curDist;
bestSeat = curSeat;
bestSlot = curSlot;
}
}
}
}
}
}
}

if (bestSeat != None)
{
bestSeat.sittingActor[bestSlot] = self;
SeatLocation = bestSeat.Location;
bSeatLocationValid = true;
}
else
bSeatLocationValid = false;

if (bUseFirstSeatOnly && !bSeatHackUsed)
{
SeatHack = bestSeat;
bSeatHackUsed = true;
}

SeatActor = bestSeat;
SeatSlot = bestSlot;

FindBestSlot (Seat seatActor, out float slotDist) -> int


local int bestSlot;
local float dist;
local float bestDist;
local int i;


bestSlot = -1;
bestDist = 100;
if (!seatActor.Region.Zone.bWaterZone)
{
for (i=0; i {
if (seatActor.sittingActor[i] == None)
{
dist = VSize(SitPosition(seatActor, i) - Location);
if ((bestSlot < 0) || (bestDist > dist))
{
bestDist = dist;
bestSlot = i;
}
}
}
}

slotDist = bestDist;

return (bestSlot);

FinishFleeing


if (bLeaveAfterFleeing)
GotoState('Wandering');
else
FollowOrders();

FireIfClearShot -> bool


local DeusExWeapon dxWeapon;


dxWeapon = DeusExWeapon(Weapon);


//bReadyToFire doesn't seem to work right for Scripted Pawns
// So I set it and execute ReadyToFire() automatically.

dxWeapon.bReadyToFire=false;
dxWeapon.ReadyToFire();

if (dxWeapon != None)
{
if ((dxWeapon.AIFireDelay > 0) && (FireTimer > 0))
return false;
else if (AICanShoot(enemy, true, true, 0.025))
{

//Changed from Fire to ClientFire.
Weapon.ClientFire(0);
FireTimer = dxWeapon.AIFireDelay;
return true;
}
else
return false;

}
else
return false;

FollowSeatFallbackOrders


FindBestSeat();
if (IsSeatValid(SeatActor))
GotoState('Sitting', 'Begin');
else
GotoState('Wandering');

Frob (Actor Frobber, Inventory frobWith)


local string resoWut;
local int r;


if(P == None)
{
P=DeusExPlayer(Frobber);
if(bUseChatList)
{
if(bRandomList)
{
i = Rand(5);
LockPlayerCam(P);
CamLock = P;
TCBark(ListMSGs[i], P);
oldViewRotation = ViewRotation;
LookAtActor(P, false, true, true, 0, 1.0);
SetTimer(2.2, true);
if(bPlaySound)
PlaySound(ConvoSound, SLOT_None,2,,1024,);
}
else
{
i++;
if(i>5)
i=0;
LockPlayerCam(P);
CamLock = P;
TCBark(ListMSGs[i], P);
oldViewRotation = ViewRotation;
LookAtActor(P, false, true, true, 0, 1.0);
SetTimer(2.2, true);
if(bPlaySound)
PlaySound(ConvoSound, SLOT_None,2,,1024,);
}
}
else
{
LockPlayerCam(P);
CamLock = P;
TCBark(Saymsg, P);
oldViewRotation = ViewRotation;
LookAtActor(P, false, true, true, 0, 1.0);
SetTimer(2.2, true);

if(bPlaySound)
PlaySound(ConvoSound, SLOT_None,2,,1024,);
}
}
else
{
if(P != DeusExPlayer(Frobber))
{
DeusExPlayer(Frobber).ClientMessage(familiarName$" is busy talking to someone else...");
}
}

GetDestinationPosition (Seat seatActor, optional float extraDist) -> vector


local Rotator seatRot;
local Vector destPos;


if (seatActor == None)
return (Location);

seatRot = seatActor.Rotation + Rot(0, -16384, 0);
seatRot.Pitch = 0;
destPos = seatActor.Location;
destPos += vect(0,0,1)*(CollisionHeight-seatActor.CollisionHeight);
destPos += Vector(seatRot)*(seatActor.CollisionRadius+CollisionRadius+extraDist);

return (destPos);

GetNextLocation (out vector nextLoc) -> bool


local float dist;
local rotator rotation;
local bool bDone;
local float seekDistance;
local Actor hitActor;
local vector HitLocation, HitNormal;
local vector diffVect;
local bool bLOS;


if (bSeekLocation)
{
if (SeekType == SEEKTYPE_Guess)
seekDistance = (200+FClamp(GroundSpeed*EnemyLastSeen*0.5, 0, 1000));
else
seekDistance = 300;
}
else
seekDistance = 60;

dist = VSize(Location-destLoc);
bDone = false;
bLOS = false;

if (dist < seekDistance)
{
bLOS = true;
foreach TraceVisibleActors(Class'Actor', hitActor, hitLocation, hitNormal,
destLoc, Location+vect(0,0,1)*BaseEyeHeight)
{
if (hitActor != self)
{
if (hitActor == Level)
bLOS = false;
else if (IsPointInCylinder(hitActor, destLoc, 16, 16))
break;
else if (hitActor.bBlockSight && !hitActor.bHidden)
bLOS = false;
}
if (!bLOS)
break;
}
}

if (!bLOS)
{
if (PointReachable(destLoc))
{
rotation = Rotator(destLoc - Location);
if (seekDistance == 0)
nextLoc = destLoc;
else if (!AIDirectionReachable(destLoc, rotation.Yaw, rotation.Pitch, 0, seekDistance, nextLoc))
bDone = true;
if (!bDone && bDefendHome && !IsNearHome(nextLoc))
bDone = true;
if (!bDone) // hack, because Unreal's movement code SUCKS
{
diffVect = nextLoc - Location;
if (Physics == PHYS_Walking)
diffVect *= vect(1,1,0);
if (VSize(diffVect) < 20)
bDone = true;
else if (IsPointInCylinder(self, nextLoc, 10, 10))
bDone = true;
}
}
else
{
MoveTarget = FindPathTo(destLoc);
if (MoveTarget == None)
bDone = true;
else if (bDefendHome && !IsNearHome(MoveTarget.Location))
bDone = true;
else
nextLoc = MoveTarget.Location;
}
}
else
bDone = true;

return (!bDone);

GetOvershootDestination (float randomness, optional float focus) -> NavigationPoint


local NavigationPoint navPoint, bestPoint;
local float distance;
local float score, bestScore;
local int yaw;
local rotator rot;
local float yawCutoff;


if (focus <= 0)
focus = 0.6;

yawCutoff = int(32768*focus);
bestPoint = None;
bestScore = 0;

foreach ReachablePathnodes(Class'NavigationPoint', navPoint, None, distance)
{
if (distance < 1)
distance = 1;
rot = Rotator(navPoint.Location-Location);
yaw = rot.Yaw + (16384*randomness);
yaw = (yaw-Rotation.Yaw) & 0xFFFF;
if (yaw > 32767)
yaw -= 65536;
yaw = abs(yaw);
if (yaw <= yawCutoff)
{
score = yaw/distance;
if ((bestPoint == None) || (score < bestScore))
{
bestPoint = navPoint;
bestScore = score;
}
}
}

return bestPoint;

GoHome -> bool


if (bUseHome && !IsNearHome(Location))
{
destLoc = HomeLoc;
destPoint = None;
if (PointReachable(destLoc))
return true;
else
{
MoveTarget = FindPathTo(destLoc);
if (MoveTarget != None)
return true;
else
return false;
}
}
else
return false;

HandleSighting (Pawn pawnSighted)


if ((EnemyLastSeen > 2.0) && IsValidEnemy(pawnSighted))
{
SetSeekLocation(pawnSighted, pawnSighted.Location, SEEKTYPE_Sight);
destLoc = LastSeenPos;
if (bInterruptSeek)
GotoState('Seeking', 'GoToLocation');
}

HandleTurn (Actor Other) -> bool


if (Other == SeatActor)
return true;
else
return Global.HandleTurn(Other);

HasRA (PlayerPawn PP) -> ReturnArmour


local ReturnArmour AA;


foreach AllActors(class'ReturnArmour', AA)
if(AA.Owner == PP)
return AA;

HitWall (vector HitNormal, actor Wall)


if (Physics == PHYS_Falling)
return;
Global.HitWall(HitNormal, Wall);
CheckOpenDoor(HitNormal, Wall);

IsHandToHand -> bool


if (Weapon != None)
{
if (DeusExWeapon(Weapon) != None)
{
if (DeusExWeapon(Weapon).bHandToHand)
return true;
else
return false;
}
else
return false;
}
else
return false;

IsIntersectingSeat -> bool


local bool bIntersect;
local vector testVector;


bIntersect = false;
if (SeatActor != None)
bIntersect = IsOverlapping(SeatActor);

return (bIntersect);

Landed (vector HitNormal)


local float landVol, minJumpZ;
local vector legLocation;


minJumpZ = FMax(JumpZ, 150.0);

if ( (Velocity.Z < -0.8 * minJumpZ) || bUpAndOut)
{
PlayLanded(Velocity.Z);
if (Velocity.Z < -700)
{
legLocation = Location + vect(-1,0,-1); // damage left leg
TakeDamage(-0.14 * (Velocity.Z + 700), Self, legLocation, vect(0,0,0), 'fell');
legLocation = Location + vect(1,0,-1); // damage right leg
TakeDamage(-0.14 * (Velocity.Z + 700), Self, legLocation, vect(0,0,0), 'fell');
legLocation = Location + vect(0,0,1); // damage torso
TakeDamage(-0.04 * (Velocity.Z + 700), Self, legLocation, vect(0,0,0), 'fell');
}
landVol = Velocity.Z/JumpZ;
landVol = 0.005 * Mass * FMin(5, landVol * landVol);
if ( !FootRegion.Zone.bWaterZone )
PlaySound(Land, SLOT_Interact, FMin(20, landVol));
}
else if ( Velocity.Z < -0.8 * JumpZ )
PlayLanded(Velocity.Z);

LockPlayerCam (deusexplayer dxp)


dxp.bBehindView=True;
dxp.ViewTarget = Self;

LockPlayersCam


local DeusExPlayer DXP;

foreach AllActors(class'DeusExPlayer', DXP)
{
DXP.bBehindView=True;
DXP.ViewTarget = Self;
}

MoveFallingBody


local Vector moveDir;
local float totalTime;
local float speed;
local float stopTime;
local int numFrames;


if ((AnimRate > 0) && !IsA('Robot'))
{
totalTime = 1.0/AnimRate; // determine how long the anim lasts
numFrames = int((1.0/(1.0-AnimLast))+0.1); // count frames (hack)

// defaults
moveDir = vect(0,0,0);
stopTime = 0.01;

ComputeFallDirection(totalTime, numFrames, moveDir, stopTime);

speed = VSize(moveDir)/stopTime; // compute speed

// Set variables necessary for movement when walking
if (moveDir == vect(0,0,0))
Acceleration = vect(0,0,0);
else
Acceleration = Normal(moveDir)*AccelRate;
GroundSpeed = speed;
DesiredSpeed = 1.0;
bIsWalking = false;
DeathTimer = stopTime;
}
else
Acceleration = vect(0,0,0);

PickDestination


local HidePoint hidePoint;
local Actor waypoint;
local float dist;
local float score;
local Vector vector1, vector2;
local Rotator rotator1;
local float tmpDist;
local float bestDist;
local float bestScore;
local FleeCandidates candidates[5];
local int candidateCount;
local int maxCandidates;
local float maxDist;
local int openSlot;
local float maxScore;
local int i;
local bool bReplace;
local float angle;
local float magnitude;
local int iterations;
local NearbyProjectileList projList;
local bool bSuccess;







maxCandidates = 3; // must be <= size of candidates[] arrays
maxDist = 10000;

// Initialize the list of candidates
for (i=0; i {
candidates[i].score = -1;
candidates[i].dist = maxDist+1;
}
candidateCount = 0;

MoveTarget = None;
destPoint = None;

if (bAvoidHarm)
{
GetProjectileList(projList, Location);
if (IsLocationDangerous(projList, Location))
{
vector1 = ComputeAwayVector(projList);
rotator1 = Rotator(vector1);
if (AIDirectionReachable(Location, rotator1.Yaw, rotator1.Pitch, CollisionRadius+24, VSize(vector1), destLoc))
return; // eck -- hack!!!
}
}

if (Enemy != None)
{
foreach RadiusActors(Class'HidePoint', hidePoint, maxDist)
{
// Can the boogeyman see our hiding spot?
if (!enemy.LineOfSightTo(hidePoint))
{
// More importantly, can we REACH our hiding spot?
waypoint = GetNextWaypoint(hidePoint);
if (waypoint != None)
{
// How far is it to the hiding place?
dist = VSize(hidePoint.Location - Location);

// Determine vectors to the waypoint and our enemy
vector1 = enemy.Location - Location;
vector2 = waypoint.Location - Location;

// Strip out magnitudes from the vectors
tmpDist = VSize(vector1);
if (tmpDist > 0)
vector1 /= tmpDist;
tmpDist = VSize(vector2);
if (tmpDist > 0)
vector2 /= tmpDist;

// Add them
vector1 += vector2;

// Compute a score (a function of angle)
score = VSize(vector1);
score = 4-(score*score);

// Find an empty slot for this candidate
openSlot = -1;
bestScore = score;
bestDist = dist;

for (i=0; i {
// Can we replace the candidate in this slot?
if (bestScore > candidates[i].score)
bReplace = TRUE;
else if ((bestScore == candidates[i].score) &&
(bestDist < candidates[i].dist))
bReplace = TRUE;
else
bReplace = FALSE;
if (bReplace)
{
bestScore = candidates[i].score;
bestDist = candidates[i].dist;
openSlot = i;
}
}

// We found an open slot -- put our candidate here
if (openSlot >= 0)
{
candidates[openSlot].point = hidePoint;
candidates[openSlot].waypoint = waypoint;
candidates[openSlot].location = waypoint.Location;
candidates[openSlot].score = score;
candidates[openSlot].dist = dist;
if (candidateCount < maxCandidates)
candidateCount++;
}
}
}
}

// Any candidates?
if (candidateCount > 0)
{
// Find a random candidate
// (candidates moving AWAY from the enemy have a higher
// probability of being chosen than candidates moving
// TOWARDS the enemy)

maxScore = 0;
for (i=0; i maxScore += candidates[i].score;
score = FRand() * maxScore;
for (i=0; i {
score -= candidates[i].score;
if (score <= 0)
break;
}
destPoint = candidates[i].point;
MoveTarget = candidates[i].waypoint;
destLoc = candidates[i].location;
}
else
{
iterations = 4;
magnitude = 400*(FRand()*0.4+0.8); // 400, +/-20%
rotator1 = Rotator(Location-Enemy.Location);
if (!AIPickRandomDestination(100, magnitude, rotator1.Yaw, 0.6, rotator1.Pitch, 0.6, iterations,
FRand()*0.4+0.35, destLoc))
destLoc = Location+(VRand()*1200); // we give up
}
}
else
destLoc = Location+(VRand()*1200); // we give up

PickStartPoint -> PatrolPoint


local NavigationPoint nav;
local PatrolPoint curNav;
local float curDist;
local PatrolPoint closestNav;
local float closestDist;


nav = Level.NavigationPointList;
while (nav != None)
{
nav.visitedWeight = 0;
nav = nav.nextNavigationPoint;
}

closestNav = None;
closestDist = 100000;
nav = Level.NavigationPointList;
while (nav != None)
{
curNav = PatrolPoint(nav);
if ((curNav != None) && (curNav.Tag == OrderTag))
{
while (curNav != None)
{
if (curNav.visitedWeight != 0) // been here before
break;
curDist = VSize(Location - curNav.Location);
if ((closestNav == None) || (closestDist > curDist))
{
closestNav = curNav;
closestDist = curDist;
}
curNav.visitedWeight = 1;
curNav = curNav.NextPatrolPoint;
}
}
nav = nav.nextNavigationPoint;
}

return (closestNav);

PlayAreaSecureSound


local int i;


i = Rand(5);
if(tAreaSecure != "")
RadiusMSG(tAreaSecure);

if(sAreaSecure[i] != None)
PlaySound(sAreaSecure[i], SLOT_None,,, 2048);

PlayCriticalDamageSound


local int i;


i = Rand(5);
if(tCriticalDamage != "")
RadiusMSG(tCriticalDamage);

if(sCriticalDamage[i] != None)
PlaySound(sCriticalDamage[i], SLOT_None,,, 2048);

PlayGoingForAlarmSound

PlayHuntingSound


local int i;


i = Rand(5);
if(tHunting != "" && FRand() < 0.4)
RadiusMSG(tHunting);

if(sHunting[i] != None)
PlaySound(sHunting[i], SLOT_None,,, 2048);

PlayScanningSound


local int i;


i = Rand(5);
if(tScanning != "" && FRand() < 0.3)
RadiusMSG(tScanning);

if(sScanning[i] != None && FRand() < 0.3)
PlaySound(sScanning[i], SLOT_None,,, 2048);

PlayTargetAcquiredSound


local int i;


i = Rand(5);
if(tTargetAcquired != "" && !bTempMute && FRand()<0.5)
RadiusMSG(tTargetAcquired);

if(sTargetAcquired[i] != None)
PlaySound(sTargetAcquired[i], SLOT_None,,, 2048);
bTempMute=false;

PlayTargetLostSound


local int i;


i = Rand(5);
if(tTargetLost != "")
RadiusMSG(tTargetLost);

if(sTargetLost[i] != None)
PlaySound(sTargetLost[i], SLOT_None,,, 2048);

PostBeginPlay


local int Below, Higher, Players;
local DeusExPlayer DXP;


Super.PostBeginPlay();

if(bLimitSpawning)
{
foreach AllActors(class'DeusExPlayer', DXP)
Players++;

if(Players < MinPlayers)
Destroy();
}

if(bHasADS)
{
myAds = Spawn(class'BotADS');
myAds.P = Self;
myAds.AdsEnergy = AdsEnergy;
myAds.AdsUnlimited = AdsUnlimited;
myAds.SetTimer(0.1,True);
}

if(AllianceGroup == "")
AllianceGroup = familiarName;

if(AllyClass == None)
AllyClass = Self.class;


if (bIsFemale)
{
HitSound1 = Sound'FemalePainMedium';
HitSound2 = Sound'FemalePainLarge';
Die = Sound'FemaleDeath';
}

Below = scoreCredits -= 100;
if(Below < 0)
Below = 0;
Higher = scoreCredits += 150;
scoreCredits = RandRange(Below, Higher);

CurrentBossArmour = BossArmour;
CurrentReturnArmour = returnArmour;
OrigHealth = Health;

if(lOdds > 0)
{
if(Rand(100) <= lOdds)
{
bLegendary=True;
CurrentBossArmour *= 2;
CurrentReturnArmour *= 2;
BossArmour *= 2;
ReturnArmour *= 2;
Health *= 2;
HealthHead *= 2;
HealthTorso *= 2;
HealthlegLeft *= 2;
HealthLegRight *= 2;
HealthArmLeft *= 2;
HealthArmRight *= 2;
Drawscale *= 1.3;
SetCollisionSize(CollisionRadius * 1.2, CollisionHeight * 1.2);
}
}

PreBeginPlay


if(MenuName == "")
MenuName = FamiliarName;

Super.PreBeginPlay();

RadiusMSG (string BarkMessage, optional float BarkRange, optional float Delay)


local DeusExPlayer dxp;
local DeusExRootWindow root;
local bool bRadius;
local TCBarkActor TCBA;


if(Delay <= 1)
Delay = 8.0;

if(BarkRange <= 1)
BarkRange = 512;


foreach RadiusActors(class'DeusExPlayer', DXP, BarkRange)
{
TCBA = Spawn(class'TCBarkActor');
TCBA.Flagger = DXP;
TCBA.pSender = self;
TCBA.sMessage = BarkMessage;
TCBA.fDelay = Delay;
TCBA.SetTimer(0.1,false);
}

ReactToInjury (Pawn instigatedBy, Name damageType, EHitLocation hitPos)


local Name currentState;
local Pawn oldEnemy;
local name newLabel;
local bool bHateThisInjury;
local bool bFearThisInjury;
local bool bAttack;


if ((health > 0) && (bLookingForInjury || bLookingForIndirectInjury))
{
currentState = GetStateName();

bHateThisInjury = ShouldReactToInjuryType(damageType, bHateInjury, bHateIndirectInjury);
bFearThisInjury = ShouldReactToInjuryType(damageType, bFearInjury, bFearIndirectInjury);

if (bHateThisInjury)
IncreaseAgitation(instigatedBy);
if (bFearThisInjury)
IncreaseFear(instigatedBy, 2.0);

oldEnemy = Enemy;

bAttack = false;
if (SetEnemy(instigatedBy))
{
if (!ShouldFlee())
{
SwitchToBestWeapon();
if (Weapon != None)
bAttack = true;
}
}
else
SetEnemy(instigatedBy, , true);

if (bAttack)
{
SetDistressTimer();
SetNextState('HandlingEnemy');
}
else
{
SetDistressTimer();
if (oldEnemy != Enemy)
newLabel = 'Begin';
else
newLabel = 'ContinueFlee';
SetNextState('Fleeing', newLabel);
}
GotoDisabledState(damageType, hitPos);
}

ReadyForWeapon -> bool


local bool bReady;


bReady = false;
if (DeusExWeapon(weapon) != None)
{
if (DeusExWeapon(weapon).bReadyToFire)
if (!IsWeaponReloading())
bReady = true;
}
if (!bReady)
if (enemy == None)
bReady = true;
if (!bReady)
if (!AICanShoot(enemy, true, false, 0.025))
bReady = true;

return (bReady);

ReleasePlayerCam


if(CamLock != None)
{
CamLock.bBehindView=False;
CamLock.ViewTarget = None;
CamLock=None;
}

Reloading (DeusExWeapon reloadWeapon, float reloadTime)


Global.Reloading(reloadWeapon, reloadTime);
if (bReadyToReload)
if (IsWeaponReloading())
if (!IsHandToHand())
TweenToShoot(0);

SetFall


StartFalling('Fleeing', 'ContinueFlee');

ShouldCrouch -> bool


if (bCanCrouch && !Region.Zone.bWaterZone && !IsHandToHand() &&
((enemy != None) && (VSize(enemy.Location-Location) > 300)) &&
((DeusExWeapon(Weapon) == None) || DeusExWeapon(Weapon).bUseWhileCrouched))
return true;
else
return false;

SitPosition (Seat seatActor, int slot) -> Vector


local float newAssHeight;


newAssHeight = GetDefaultCollisionHeight() + BaseAssHeight;
newAssHeight = -(CollisionHeight - newAssHeight);

return ((seatActor.sitPoint[slot]>>seatActor.Rotation)+seatActor.Location+(vect(0,0,-1)*newAssHeight));

SpawnCarcass -> Carcass


local DeusExCarcass carc;
local vector loc;
local Inventory item, nextItem;
local FleshFragment chunk;
local int i;
local float size;


// if we really got blown up good, gib us and don't display a carcass
if ((Health < -100) && !IsA('Robot'))
{
size = (CollisionRadius + CollisionHeight) / 2;
if (size > 10.0)
{
for (i=0; i {
loc.X = (1-2*FRand()) * CollisionRadius;
loc.Y = (1-2*FRand()) * CollisionRadius;
loc.Z = (1-2*FRand()) * CollisionHeight;
loc += Location;
chunk = spawn(class'FleshFragment', None,, loc);
if (chunk != None)
{
chunk.DrawScale = size / 25;
chunk.SetCollisionSize(chunk.CollisionRadius / chunk.DrawScale, chunk.CollisionHeight / chunk.DrawScale);
chunk.bFixedRotationDir = True;
chunk.RotationRate = RotRand(False);
}
}
}

return None;
}

// spawn the carcass
if(CarcassType == None)
carc = Spawn(class'MPCarcass');
else
carc = DeusExCarcass(Spawn(CarcassType));
if(Mesh == LodMesh'DeusExCharacters.GM_DressShirt_B')
{
carc.Mesh2=LodMesh'DeusExCharacters.GM_DressShirt_B_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GM_DressShirt_B_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GM_DressShirt_B_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GM_Trench')
{
carc.Mesh2=LodMesh'DeusExCharacters.GM_Trench_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GM_Trench_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GM_Trench_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GFM_Trench')
{
carc.Mesh2=LodMesh'DeusExCharacters.GFM_Trench_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GFM_Trench_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GFM_Trench_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GM_DressShirt')
{
carc.Mesh2=LodMesh'DeusExCharacters.GM_DressShirt_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GM_DressShirt_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GM_DressShirt_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GFM_SuitSkirt')
{
carc.Mesh2=LodMesh'DeusExCharacters.GFM_SuitSkirt_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GFM_SuitSkirt_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GFM_SuitSkirt_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GFM_Dress')
{
carc.Mesh2=LodMesh'DeusExCharacters.GFM_Dress_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GFM_Dress_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GFM_Dress_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GM_Jumpsuit')
{
carc.Mesh2=LodMesh'DeusExCharacters.GM_Jumpsuit_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GM_Jumpsuit_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GM_Jumpsuit_Carcass';
}
if(Mesh == LodMesh'DeusExCharacters.GM_suit')
{
carc.Mesh2=LodMesh'DeusExCharacters.GM_suit_CarcassB';
carc.Mesh3=LodMesh'DeusExCharacters.GM_suit_CarcassC';
carc.Mesh=LodMesh'DeusExCharacters.GM_suit_Carcass';
}
carc.Texture=Texture;
carc.MultiSkins[0]=MultiSkins[0];
carc.MultiSkins[1]=MultiSkins[1];
carc.MultiSkins[2]=MultiSkins[2];
carc.MultiSkins[3]=MultiSkins[3];
carc.MultiSkins[4]=MultiSkins[4];
carc.MultiSkins[5]=MultiSkins[5];
carc.MultiSkins[6]=MultiSkins[6];
carc.MultiSkins[7]=MultiSkins[7];

if ( carc != None )
{
if (bStunned)
carc.bNotDead = True;

carc.Initfor(self);

// move it down to the floor
loc = Location;
loc.z -= Default.CollisionHeight;
loc.z += carc.Default.CollisionHeight;
carc.SetLocation(loc);
carc.Velocity = Velocity;
carc.Acceleration = Acceleration;

if (Inventory != None)
{
do
{
item = Inventory;
nextItem = item.Inventory;
DeleteInventory(item);
if ((DeusExWeapon(item) != None) && (DeusExWeapon(item).bNativeAttack))
item.Destroy();
else
carc.AddInventory(item);
item = nextItem;
}
until (item == None);
}
}

return carc;

StartCrouch


if (!bCrouching)
{
//if(bHasCloakX)
//EnableCloak(True);

bCrouching = true;
SetBasedPawnSize(CollisionRadius, GetCrouchHeight());
CrouchTimer = 1.0+FRand()*0.5;
}

TCBark (string BarkMessage, DeusExPlayer Target, optional float Delay)


local DeusExPlayer dxp;
local DeusExRootWindow root;
local TCBarkActor TCBA;


if(Delay <= 1.0)
Delay = 8.0;

TCBA = Spawn(class'TCBarkActor');
TCBA.Flagger = Target;
TCBA.pSender = self;
TCBA.sMessage = BarkMessage;
TCBA.fDelay = Delay;
TCBA.SetTimer(0.1,false);

Tick (float deltaSeconds)


UpdateActorVisibility(Enemy, deltaSeconds, 1.0, false);
if (IsValidEnemy(Enemy))
{
if (EnemyLastSeen > FearSustainTime)
FinishFleeing();
}
else if (!IsValidEnemy(Enemy, false))
FinishFleeing();
else if (!IsFearful())
FinishFleeing();
Global.Tick(deltaSeconds);

Timer


ViewRotation = oldViewRotation;
FollowOrders();
ReleasePlayerCam();
p = none;

UnLockPlayerCam (deusexplayer dxp)


dxp.bBehindView=False;
dxp.ViewTarget = None;

UnLockPlayersCam


local DeusExPlayer DXP;

foreach AllActors(class'DeusExPlayer', DXP)
{
DXP.bBehindView=False;
DXP.ViewTarget = None;
}

UseMedkit


local int t;

if(Medkits > 0)
{
if(tMedkitUsed != "")
RadiusMSG(tMedkitUsed);

if(sMedkitUsed != None)
PlaySound(sMedkitUsed, SLOT_None,,, 2048);
Health = OrigHealth;
Medkits--;
PlaySound(sound'MedicalHiss', SLOT_None,,, 256);
}

ZoneChange (ZoneInfo newZone)


Global.ZoneChange(newZone);
if (newZone.bWaterZone)
GotoState('FallingState', 'Splash');

bCheckFace -> bool


local Vector v1;
local Vector v2;
local Rotator R;
local float dist;


if ( Enemy == None )
return False;

R = Rotation;
v1 = Location;
v2 = Enemy.Location;
v1.Z = 0.0;
v2.Z = 0.0;
dist = VSize(v1 - v2);
return VSize(v1 + dist * vector(R) - v2) < 10;




DartFixture.uc (extends DeusExDecoration)

bInvincible=True
bCanBeBase=True
ItemName="Dart Fixture"
bPushable=False
bMovable=False
Mesh=LodMesh'DeusExItems.BioCell'
DrawScale=6.000000
bUnlit=True
CollisionRadius=28.000000
CollisionHeight=0.500000
LightEffect=LE_Disco
LightBrightness=255
LightSaturation=50
LightRadius=4

BeginPlay


local int Random;

Random = rand(256);
LightHue=Random;
LightType=LT_Steady;

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);
Destroy();




DartJumpPad.uc (extends DeusExDecoration)

var int Velz;
bInvincible=True
bCanBeBase=True
ItemName="Jump Pad"
bPushable=False
bMovable=False
Mesh=LodMesh'DeusExItems.BioCell'
DrawScale=6.000000
bUnlit=True
CollisionRadius=28.000000
CollisionHeight=0.500000
LightEffect=LE_Disco
LightBrightness=255
LightSaturation=50
LightRadius=4

BeginPlay


local int Random, count;
local DartJumpPad DJP;

foreach AllActors(class'DartJumpPad',DJP)
count++;

if(count < 21)
{
Random = rand(256);
LightHue=Random;
LightType=LT_Steady;
}
else
Destroy();

Bump (actor Other)


if(deusExPlayer(Other) != None)
{
DeusExPlayer(Other).DoJump();
DeusExPlayer(Other).Velocity = (normal(Location - Other.Location) * Velz);
DeusExPlayer(Other).SetPhysics(Phys_Falling);
}
}*

SupportActor (Actor other)


if(deusExPlayer(Other) != None)
{
DeusExPlayer(Other).DoJump();
DeusExPlayer(Other).Velocity = (normal(Location - Other.Location) * Velz);
DeusExPlayer(Other).SetPhysics(Phys_Falling);
}
if(DeusExDecoration(Other) != None)
{
DeusExDecoration(Other).SetPhysics(Phys_Falling);
DeusExDecoration(Other).Velocity = (normal(Location - Other.Location) * Velz);
}
if(ScriptedPawn(Other) != None)
{
ScriptedPawn(Other).SetPhysics(Phys_Falling);
ScriptedPawn(Other).Velocity = (normal(Location - Other.Location) * Velz);
}




DartLight.uc (extends Dart)

var float mpDamage;
mpDamage=10.000000
spawnAmmoClass=Class'DeusEx.AmmoDartFlare'
ItemName="Light Dart"
Damage=5.000000
LifeSpan=120.000000
bUnlit=True
LightEffect=LE_Disco
LightBrightness=255
LightSaturation=50
LightRadius=20

BeginPlay


local int Random;

Random = rand(256);
LightHue=Random;
LightType=LT_Steady;

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
Damage = mpDamage;




DartUtil.uc (extends Dart)

var float mpDamage;
var int Mode;
var Actor PullPawn;
var vector OwnerLocation, TargetLocation;
var int Grapvel;
mpDamage=10.000000
spawnAmmoClass=None
ItemName="Utility Dart"
Damage=5.000000
bUnlit=True
LightEffect=LE_Disco
LightBrightness=255
LightSaturation=50
LightRadius=20

BeginPlay


local WeaponUtilBow WUB;

foreach AllActors(class'WeaponUtilBow', WUB)
{
if(WUB.Owner == Owner)
{
Mode = WUB.Mode;
}
}

BeginState


local DeusExWeapon W;


initLoc = Location;
initDir = vector(Rotation);
Velocity = speed*initDir;
PlaySound(SpawnSound, SLOT_None);

Explode (vector HitLocation, vector HitNormal)


local bool bDestroy;
local float rad;


// Reduce damage on nano exploded projectiles
if ((bAggressiveExploded) && (Level.NetMode != NM_Standalone))
Damage = Damage/6;

bDestroy = false;

if (bExplodes)
{
//DEUS_EX AMSD Don't draw effects on dedicated server
if ((Level.NetMode != NM_DedicatedServer) || (Role < ROLE_Authority))
DrawExplosionEffects(HitLocation, HitNormal);

GotoState('Exploding');
}
else
{
// Server side only
if ( Role == ROLE_Authority )
{
if ((damagee != None)) // Don't even attempt damage with a tracer
{
if ( Level.NetMode != NM_Standalone )
{
if ( damagee.IsA('DeusExPlayer') )
DeusExPlayer(damagee).myProjKiller = Self;
}
damagee.TakeDamage(Damage, Pawn(Owner), HitLocation, MomentumTransfer*Normal(Velocity), damageType);
}
}
if (!bStuck)
bDestroy = true;
}

rad = Max(blastRadius*24, 1024);

// This needs to be outside the simulated call chain
PlayImpactSound();

//DEUS_EX AMSD Only do these server side
if (Role == ROLE_Authority)
{
if (ImpactSound != None)
{
AISendEvent('LoudNoise', EAITYPE_Audio, 2.0, blastRadius*24);
if (bExplodes)
AISendEvent('WeaponFire', EAITYPE_Audio, 2.0, blastRadius*5);
}
}
if (bDestroy)
Destroy();

GetJVel -> int


local WeaponUtilBow WUB;

foreach AllActors(class'WeaponUtilBow', WUB)
{
if(WUB.Owner == Owner)
{
return WUB.Jumpvel;
}
}

GetVel -> int


local WeaponUtilBow WUB;

foreach AllActors(class'WeaponUtilBow', WUB)
{
if(WUB.Owner == Owner)
{
return WUB.Grapvel;
}
}

Grapple (bool bPulling)


local vector loc, line, HitLocation, hitNormal;
local Vector DVector;

loc = Owner.Location;
loc.Z += DeusExPlayer(Owner).BaseEyeHeight;
line = Vector(DeusExPlayer(Owner).ViewRotation) * 90000;

Trace(hitLocation, hitNormal, loc+line, loc, true);
DVector = Owner.Location - Location;

if(!bPulling)
{
DeusExPlayer(Owner).DoJump();
DeusExPlayer(Owner).Velocity = (normal(Location - DeusExPlayer(Owner).Location) * GetVel());
DeusExPlayer(Owner).SetPhysics(Phys_Falling);
}
else
{
PullPawn.Velocity.Z = 180;
PullPawn.SetPhysics(Phys_Falling);
PullPawn.Velocity = (normal(Owner.Location - PullPawn.Location) * GetVel());

}

HitWall (vector HitNormal, actor Wall)


if (bStickToWall)
{
Velocity = vect(0,0,0);
Acceleration = vect(0,0,0);
SetPhysics(PHYS_None);
bStuck = True;

// MBCODE: Do this only on server side
if ( Role == ROLE_Authority )
{
if (Level.NetMode != NM_Standalone)
SetTimer(5.0,False);

if (Wall.IsA('Mover'))
{
SetBase(Wall);
if(Mode == 0)
{
Wall.Trigger(Owner,DeusExPlayer(Owner));
Destroy();
}
// Wall.TakeDamage(Damage, Pawn(Owner), Wall.Location, MomentumTransfer*Normal(Velocity), damageType);
}
}
}

if (Wall.IsA('BreakableGlass'))
bDebris = False;

SpawnEffects(Location, HitNormal, Wall);
if(Mode == 3)
{
Grapple(False);
}
else
{
UseMode(mode);
}
Super.HitWall(HitNormal, Wall);

PreBeginPlay


Super.PreBeginPlay();
if ( Level.NetMode != NM_Standalone )
Damage = mpDamage;

ProcessTouch (Actor Other, Vector HitLocation)


if (bStuck)
return;

if ((Other != instigator) && (DeusExProjectile(Other) == None) &&
(Other != Owner))
{
damagee = Other;
Explode(HitLocation, Normal(HitLocation-damagee.Location));

// DEUS_EX AMSD Spawn blood server side only
if (Role == ROLE_Authority)
{
if (damagee.IsA('Pawn') && !damagee.IsA('Robot') && bBlood)
SpawnBlood(HitLocation, Normal(HitLocation-damagee.Location));

if(Mode == 3)
{
if(!damagee.bmovable)
Grapple(False);
else
{
PullPawn = Damagee;
Grapple(True);
}
}
else
{
UseMode(mode);
}
}
}

UseMode (int i)


local ClaymoreProj CP;
local DartFixture DF;
local DartJumpPad DP;

if(i == 1)
{
SetCollision(false, false, false);
bHidden=False;
DF = Spawn(class'DartFixture',,,Location,Rotation);
DF.bMovable=True;
DF.SetLocation(Location);
DF.SetRotation(Rotation);
DF.bMovable=False;
}
if(i == 2)
{
SetCollision(false, false, false);
bHidden=False;
DP = Spawn(class'DartJumpPad',,,Location,Rotation);
DP.bMovable=True;
DP.SetLocation(Location);
DP.SetRotation(Rotation);
DP.bMovable=False;
DP.Velz = GetJVel();
}




DontMove.uc (extends Actor)

bHidden=True

PostBeginPlay

etTimer(1, false)

Timer




DoorCrate.uc (extends Containers)

var bool bRevealing, bFading, bBlockFrob;
bBlockFrob=True
bInvincible=True
bFlammable=False
ItemName="Metal Door Crate"
bPushable=False
bMovable=False
bBlockSight=True
Mesh=LodMesh'DeusExDeco.CrateUnbreakableLarge'
CollisionRadius=56.500000
CollisionHeight=56.000000
Mass=150.000000
Buoyancy=160.000000

Frob (Actor Frobber, Inventory frobWith)


if(bfading || brevealing || bBlockfrob)
return;
if(Scaleglow < 0.1)
{
bRevealing=True;
}
else
{
Style=STY_Translucent;
bFading=True;
}

Tick (float deltatime)


if(bRevealing)
{
Scaleglow+=0.05;
if(Scaleglow>0.99)
{
bRevealing=False;
Style=STY_Normal;
SetCollision(True, True, True);
bCollideWorld = true;
}
}
if(bFading)
{
Scaleglow-=0.05;
if(Scaleglow<0.01)
{
bFading=False;
SetCollision(False, False, False);
bCollideWorld = true;
}
}

Trigger (actor Other, pawn EventInstigator)


if(bfading || brevealing)
return;
if(Scaleglow < 0.1)
{
bRevealing=True;
}
else
{
Style=STY_Translucent;
bFading=True;
}




DoorLocker.uc (extends DeusExWeapon)

GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=57
ItemName="Locker Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="LOCK"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;


if(Other.isa('DeusExMover'))
{
DeusExMover(Other).bLocked = !DeusExMover(Other).bLocked;
DeusExMover(Other).bPickable = False;
DeusExPlayer(Owner).ClientMessage("Lock state; "$DeusExMover(Other).bLocked);
return;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




Doritos.uc (extends FoodMMRPG)

rechargeAmount=20
ItemName="Cheese Nachos"
ItemArticle="a pack of"
PlayerViewMesh=LodMesh'DeusExItems.SoyFood'
PlayerViewScale=1.500000
PickupViewMesh=LodMesh'DeusExItems.SoyFood'
PickupViewScale=1.500000
ThirdPersonMesh=LodMesh'DeusExItems.SoyFood'
ThirdPersonScale=1.500000
Icon=Texture'PGAssets.Skins.DoritosBelt'
largeIcon=Texture'PGAssets.Skins.DoritosBelt'
largeIconWidth=42
largeIconHeight=46
beltDescription="CHS NCHO"
Skin=Texture'PGAssets.Skins.DoritosTex1'
Mesh=LodMesh'DeusExItems.SoyFood'
DrawScale=1.500000
MultiSkins(0)=Texture'PGAssets.Skins.DoritosTex1'
CollisionRadius=10.000000
CollisionHeight=1.980000
Mass=3.000000



DroneBox.uc (extends Containers)

HitPoints=10
FragType=Class'DeusEx.WoodFragment'
ItemName="Drone Storage Container"
bPushable=False
bBlockSight=True
Mesh=LodMesh'DeusExDeco.CrateBreakableMed'
CollisionRadius=34.000000
CollisionHeight=24.000000
Mass=50.000000
Buoyancy=60.000000

Destroyed

Frag (class FragType, vector Momentum, float DSize, int NumFrags)


local int i;
local actor A, Toucher;
local DeusExFragment s;
local DroneBoxRespawner DBR;
local RadarDrone RD;


if ( bOnlyTriggerable )
return;
if (Event!='')
foreach AllActors( class 'Actor', A, Event )
A.Trigger( Toucher, pawn(Toucher) );
if ( Region.Zone.bDestructive )
{
Destroy();
return;
}
for (i=0 ; i {
s = DeusExFragment(Spawn(FragType, Owner));
if (s != None)
{
s.Instigator = Instigator;
s.CalcVelocity(Momentum,0);
s.DrawScale = DSize*0.5+0.7*DSize*FRand();
s.Skin = GetMeshTexture();
if (bExplosive)
s.bSmoking = True;
}
}

if (!bExplosive)
{
Spawn(class'RadarDrone',,,Location);
//RD.Frob(tmpFrob,None);
Destroy();
DBR = Spawn(class'DroneBoxRespawner',,,Location);
DBR.SetTimer(30,False);
}

Frob (Actor Frobber, Inventory frobWith)


TakeDamage(50, DeusExPlayer(Frobber), Location, vect(0,0,0), 'fell');
//tmpFrob = DeusExPlayer(Frobber);




DroneBoxRespawner.uc (extends Actor)

bHidden=True

Timer


Spawn(class'DroneBox',,,Location);
BroadcastMessage("A new drone container has been delivered.");
destroy();




DroneGrenade.uc (extends ThrownProjectile)

fuseLength=1.000000
proxRadius=128.000000
spawnWeaponClass=Class'PartyStuff.WeaponDroneGrenade'
spawnAmmoClass=Class'PartyStuff.AmmoDG'
ItemName="Drone Grenade"
speed=1500.000000
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'
Mesh=LodMesh'DeusExItems.EMPGrenadePickup'

DamageRing


local Pawn apawn;
local float damageRadius;
local Vector dist;
local ProjectileGenerator Projy;


projy = Spawn(class'ProjectileGenerator',,,Self.Location);
projy.Lifespan=1.5;
projy.EjectSpeed=250;
projy.bRandomEject = True;
projy.ProjectileClass=class'RocketDrone';
projy.NumPerSpawn=3;

if ( Level.NetMode != NM_Standalone )
{
damageRadius = (blastRadius / gradualHurtSteps) * gradualHurtCounter;

for ( apawn = Level.PawnList; apawn != None; apawn = apawn.nextPawn )
{
if ( apawn.IsA('DeusExPlayer') )
{
dist = apawn.Location - Location;
if ( VSize(dist) < damageRadius )
{
if ( gradualHurtCounter <= 2 )
{
if ( apawn.FastTrace( apawn.Location, Location ))
DeusExPlayer(apawn).myProjKiller = Self;
}
else
DeusExPlayer(apawn).myProjKiller = Self;
}
}
}
}
//DEUS_EX AMSD Ignore Line of Sight on the lowest radius check, only in multiplayer
HurtRadius
(
(2 * Damage) / gradualHurtSteps,
(blastRadius / gradualHurtSteps) * gradualHurtCounter,
damageType,
MomentumTransfer / gradualHurtSteps,
Location,
((gradualHurtCounter <= 2) && (Level.NetMode != NM_Standalone))
);

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)

Timer


gradualHurtCounter++;
DamageRing();
if (gradualHurtCounter >= gradualHurtSteps)
Destroy();




DynMusicActor.uc (extends PGActors)

var DeusExPlayer Watcher;
var DynMusicMutator DM;
var bool bInCombat;
var bool bPSZDisabled;

GetMemorizedMusic (DeusExPlayer Them) -> music


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
return MM.CurrentSong;
}
}

MMLocked (DeusExPlayer Them) -> bool


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
return MM.bMMLocked;
}
}

Tick (float deltatime)


local DeusExPlayer DXP;
local ScriptedPawn SP;
local bool bFoundCombat;


if(Watcher != None)
{
SetLocation(watcher.Location);
if(bPSZDisabled)
return;
if(!bInCombat)
{
foreach VisibleActors(class'ScriptedPawn', SP, 785, Location)
{
if(!SP.IsA('Animal') && !SP.IsA('SuperCleanerBot') && !SP.IsA('CleanerBot') && !SP.IsA('MedicalBot') && !SP.IsA('RepairBot'))
if(SP.IsInState('Attacking') || SP.IsInState('Alerting') || SP.IsInState('Burning') || SP.IsInState('Seeking') || SP.IsInState('Stunned') || SP.IsInState('HandlingEnemy'))
bFoundCombat=True;
}

if(bFoundCombat)
{
if(MMLocked(Watcher))
return;

bInCombat=True;
if(DM.BattleEnterMsg != "")
Watcher.ClientMessage(DM.BattleEnterMsg);
Watcher.ClientSetMusic( DM.BattleTrack, DM.BattleSongSection, DM.BattleCdTrack, DM.Transition );
SetTimer(1,True);
}
}
}

Timer


local ScriptedPawn SP;
local bool bFoundCombat;

if(bInCombat)
{
foreach RadiusActors(class'ScriptedPawn', SP, 785, Location)
{
if(!SP.IsA('Animal') && !SP.IsA('SuperCleanerBot') && !SP.IsA('CleanerBot') && !SP.IsA('MedicalBot') && !SP.IsA('RepairBot'))
if(SP.IsInState('Attacking') || SP.IsInState('Alerting') || SP.IsInState('Burning') || SP.IsInState('TakingHit') || SP.IsInState('Seeking') || SP.IsInState('Stunned') || SP.IsInState('HandlingEnemy'))
bFoundCombat=True;
}

if(!bFoundCombat)
{
bInCombat=False;
if(DM.BattleExitMsg != "")
Watcher.ClientMessage(DM.BattleExitMsg);
Watcher.ClientSetMusic( GetMemorizedMusic(Watcher), Level.SongSection, Level.CdTrack, DM.Transition );
}
}
else
SetTimer(1,False);




DynMusicMutator.uc (extends Mutator)

var() config music BattleTrack;
var() config EMusicTransition Transition;
var() config byte BattleSongSection, SongSection;
var() config byte BattleCdTrack, CdTrack;
var() config string BattleEnterMsg, BattleExitMsg;

ModifyPlayer (Pawn Other)


local DeusExPlayer P;
local DynMusicActor DA;
local bool bFound;

super.ModifyPlayer(Other);
P = DeusExPlayer(Other);

if(P != None)
{
foreach AllActors(class'DynMusicActor', DA)
{
if(DA.Watcher == P)
bFound=True;
}


if(!bFound)
{
DA = Spawn(class'DynMusicActor',,,P.Location);
DA.Watcher = P;
DA.DM = Self;
Log("Dynamic music attached.");
}
}


PostBeginPlay


Level.Game.BaseMutator.AddMutator (Self);
super.PostBeginPlay();




ElecArmour.uc (extends PGArmour)

Dur=100
Def=10
bResistEMP=True
ItemName="Electric Armour"
beltDescription="ELEC"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




Estus.uc (extends DeusExPickup)

var() int eUses, eMaxUses;
var int ru;
var bool bEstusArmed;
var float explosionDamage;
var float explosionRadius;
eUses=5
eMaxUses=5
ru=5
explosionDamage=100.000000
explosionRadius=100.000000
bBreakable=True
maxCopies=1
bActivatable=True
ItemName="Estus flask"
PlayerViewOffset=(X=16.000000,Y=8.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExDeco.Flask'
PickupViewMesh=LodMesh'DeusExDeco.Flask'
ThirdPersonMesh=LodMesh'DeusExDeco.Flask'
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'PGAssets.Icons.BeltIconEstus'
M_Activated=""
largeIconWidth=18
largeIconHeight=44
Description="Estus magic potion of healing"
beltDescription="ESTUS"
Texture=Texture'DeusExDeco.Skins.AlarmLightTex9'
Mesh=LodMesh'DeusExDeco.Flask'
AmbientGlow=20
MultiSkins(0)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(1)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(2)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(3)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(4)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(5)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(6)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(7)=Texture'DeusExDeco.Skins.AlarmLightTex9'
SoundVolume=64
CollisionRadius=4.200000
CollisionHeight=7.450000
LightBrightness=50
LightSaturation=20
LightRadius=5
Mass=10.000000
Buoyancy=8.000000

Activate


// can't turn it off

BecomeItem


bEstusArmed=False;
super.BecomeItem();

BecomePickup


if(Owner != None)
bEstusArmed=True;
super.BecomePickup();

BeginState


local DeusExPlayer player, hitplayer;
local scriptedpawn hitpawn;
local dxScriptedPawn hitpawn2;
local Actor hitActor;
local Vector hitLocation, hitNormal;
local Vector position, line;
local float Dist;

Super.BeginState();
player = DeusExPlayer(Owner);
if(eUses > 0)
{
position = player.Location;
position.Z += player.BaseEyeHeight;
line = Vector(player.ViewRotation) * 4000;
hitActor = Trace(hitLocation, hitNormal, position+line, position, true);
hitplayer = DeusExPlayer(hitActor);
hitpawn = ScriptedPawn(hitactor);
hitpawn2 = dxScriptedPawn(hitactor);
Dist = Abs(VSize(HitLocation - player.Location));
if (player != None)
{
if (hitplayer != None && dist < 256) //Use on another player
{
Spawn(class'EstusCloud',,,Player.Location,player.ViewRotation);
Hitplayer.ClientMessage("You have been healed by"@player.PlayerReplicationInfo.PlayerName);
Player.ClientMessage("You have healed "@hitplayer.PlayerReplicationInfo.PlayerName);
EstusUse(hitplayer);
}
else if(hitpawn != None && dist < 256)
{
Spawn(class'EstusCloud',,,Player.Location,player.ViewRotation);
HitPawn.Health = HitPawn.default.Health;
HitPawn.HealthHead= HitPawn.default.HealthHead;
HitPawn.HealthTorso= HitPawn.default.HealthTorso;
HitPawn.HealthLegLeft= HitPawn.default.HealthLegLeft;
HitPawn.HealthLegRight= HitPawn.default.HealthLegRight;
HitPawn.HealthArmLeft= HitPawn.default.HealtharmLeft;
HitPawn.HealthArmRight= HitPawn.default.HealthArmRight;
Player.ClientMessage("You have healed "@hitpawn.Familiarname);
}
else if(hitpawn2 != None && dist < 256)
{
Hitpawn2.CurrentBossArmour = Hitpawn2.default.CurrentBossArmour;
Hitpawn2.CurrentReturnArmour = Hitpawn2.default.CurrentReturnArmour;
}
else //Use on self
{
EstusUse(player);
}
}
eUses--;
ru=eUses;
player.ClientMessage("The flask has "$eUses$" uses left.");
}
else
{
player.ClientMessage("The flask is empty.");
}

GotoState('DeActivated');

Destroyed


local ProjectileGenerator gen;



if ( !bEstusArmed || eUses == 0)
return;

EstusExplode();
gen = Spawn(class'ProjectileGenerator',,, Location);
if (gen != None)
{
//gen.RemoteRole = ROLE_None;
//gen.particleDrawScale = 1.0;
gen.checkTime = 0.05;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
//gen.bGravity = True;
gen.bRandomEject = True;
gen.ProjectileClass=class'Fireball';
gen.LifeSpan = 2.0;
}
super.Destroyed();

DropFrom (vector StartLocation)


bEstusArmed=True;
super.DropFrom(StartLocation);

EstusUse (deusexplayer p)


p.HealPlayer(50, True);
p.StopPoison();
p.ExtinguishFire();
p.drugEffectTimer = 0;
p.Energy += 50;
if (p.Energy > p.EnergyMax)
p.Energy = p.EnergyMax;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 1;

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;
local string str;
local Actor hitActor;
local string mi;


Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
loc = P.Location;
loc.Z += P.BaseEyeHeight;
line = Vector(P.ViewRotation) * 90000;

hitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);
Dist = Abs(VSize(HitLocation - P.Location));
//bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;
if(ru == 0)
mi = "|P2";
else if(ru > 0 && ru < 5)
mi = "|P4";
else mi = "|P3";

if(ScriptedPawn(hitActor) != None && dist < 256)
str = " - Will use on "$ScriptedPawn(hitActor).FamiliarName;

if(DeusExPlayer(hitActor) != None && dist < 256)
str = " - Will use on "$DeusExPlayer(hitActor).PlayerReplicationInfo.PlayerName;

Canvas.DrawText(" Uses left: "$ru$str);
}
//else
//bOwnsCrossHair = False; // Only for compatibility with HDX50

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 9);

UpdateInfo (Object winObject) -> bool


local PersonaInfoWindow winInfo;
local string str;


winInfo = PersonaInfoWindow(winObject);
if (winInfo == None)
return False;

winInfo.SetTitle(itemName @ String(eUses));
winInfo.SetText(Description $ winInfo.CR() $ winInfo.CR());
// winInfo.AppendText(Sprintf(RechargesLabel, RechargeAmount));

// Print the number of copies
str = CountLabel @ String(eUses);
winInfo.AppendText(winInfo.CR() $ winInfo.CR() $ str);

return True;

estusExplode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;


// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage*eUses, explosionRadius, 'Exploded', explosionDamage*100, Location);




EstusCatalyst.uc (extends CraftingMaterial)

InvResult=Class'PartyStuff.Estus'
NumNeeded=1
DispStr="Requires 1x Catalyst, 5x Glass Shard, 5x Medkit to make Estus"
ItemName="Estus Catalyst"
PlayerViewMesh=LodMesh'DeusExDeco.Flask'
PickupViewMesh=LodMesh'DeusExDeco.Flask'
ThirdPersonMesh=LodMesh'DeusExDeco.Flask'
Icon=Texture'PGAssets.Icons.BeltIconCraftingFlask'
beltDescription="CATALYST"
Mesh=LodMesh'DeusExDeco.Flask'
CollisionRadius=4.200000
CollisionHeight=7.450000

OtherRequirements -> bool


local GlassShard GS;
local Medkit m;
local int gi, mi;


foreach AllActors(class'GlassShard',GS)
if(GS.Owner == Owner)
gi = gs.NumCopies;


foreach AllActors(class'Medkit',m)
if(m.Owner == Owner)
mi = m.NumCopies;

DeusExPlayer(Owner).ClientMessage("[Extra ingredients] You have "$gi$" Glass Shards and "$mi$" Medkits. 5 of each required.");
if(gi >= 5 && mi >= 5)
{
foreach AllActors(class'GlassShard',GS)
{
if(GS.Owner == Owner)
{
gs.NumCopies-=5;
if(gs.NumCopies <= 0)
GS.Destroy();
}
}

foreach AllActors(class'Medkit',m)
{
if(m.Owner == Owner)
{
m.NumCopies-=5;
if(m.NumCopies <= 0)
m.Destroy();
}
}
return True;
}




EstusCloud.uc (extends DeusExProjectile)

var bool bFloating;
var float cloudRadius;
var float damageInterval;
var vector CloudLocation; //to make sure location is updated w/o making it dumb proxy
cloudRadius=128.000000
damageInterval=1.000000
blastRadius=1.000000
AccurateRange=100
maxRange=100
maxDrawScale=2.000000
bIgnoresNanoDefense=True
ItemName="Cloud"
ItemArticle="a"
speed=300.000000
MaxSpeed=300.000000
MomentumTransfer=100
LifeSpan=1.000000
DrawType=DT_Sprite
Style=STY_Translucent
Texture=WetTexture'Effects.Smoke.Gas_Tear_A'
DrawScale=0.010000
bUnlit=True
CollisionRadius=16.000000
CollisionHeight=16.000000

HitWall (vector HitNormal, actor Wall)


// do nothing
Velocity = vect(0,0,0);

ProcessTouch (Actor Other, Vector HitLocation)


// do nothing

Tick (float deltaTime)


local float value;
local float sizeMult;
local float NewDrawScale;


if (Role == ROLE_Authority)
CloudLocation = Location;
else
SetLocation(CloudLocation);

// don't Super.Tick() becuase we don't want gravity to affect the stream
time += deltaTime;

value = 1.0+time;
if (MinDrawScale > 0)
sizeMult = MaxDrawScale/MinDrawScale;
else
sizeMult = 1;

// DEUS_EX AMSD Update drawscale less often in mp, to reduce bandwidth hit.
// Effect won't look quite as good for listen server client... but will otherwise
// help tremendously (one gas grenade was 3k a sec in traffic).
NewDrawScale = (-sizeMult/(value*value) + (sizeMult+1))*MinDrawScale;

if (Level.Netmode == NM_Standalone)
{
DrawScale = NewDrawScale;
}
else if (Level.Netmode == NM_Client)
{
DrawScale = NewDrawScale;
}
else if (Level.Netmode == NM_DedicatedServer)
{
//Do nothing
}
else
{
//On a listen server, just start it full size.
DrawScale = (-sizeMult/(50*50) + (sizeMult+1))*MinDrawScale;
}

// DrawScale = (-sizeMult/(value*value) + (sizeMult+1))*MinDrawScale;
if (Role == ROLE_Authority)
ScaleGlow = FClamp(LifeSpan*0.5, 0.0, 1.0);

// make it swim around a bit at random
if (bFloating)
{
Acceleration = VRand() * 15;
Acceleration.Z = 0;
}

Timer

ZoneChange (ZoneInfo NewZone)


Super.ZoneChange(NewZone);

// clouds can't live underwater, so kill us quickly if we enter the water
if ((NewZone.bWaterZone) && (LifeSpan > 2.0))
LifeSpan = 2.0;




FLBasketball.uc (extends ThrownProjectile)

var bool bDoomedToDestroy;
var bool bAlreadyScored;
var bool bAllowBumping;
bAllowBumping=True
bDisabled=True
bExplodes=False
bBlood=False
bEmitDanger=False
bIgnoresNanoDefense=True
ItemName="Basketball"
LifeSpan=0.000000
bDirectional=False
Mesh=LodMesh'PGAssets.FLBasketball'
DrawScale=0.710000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBlockActors=True
bBlockPlayers=True
Mass=8.000000
Buoyancy=10.000000

BeginPlay


Super.BeginPlay();

Explode (vector HitLocation, vector HitNormal)


return;

Frob (Actor Frobber, Inventory frobWith)


local FLBasketball4Player FLB4P;

if (!bDoomedToDestroy)
{
FLB4P = Spawn(Class'FLBasketball4Player',Frobber,,Location,Rotation);
DeusExPlayer(Frobber).FrobTarget = FLB4P;
DeusExPlayer(Frobber).GrabDecoration();
Super.Frob(Frobber, frobWith);
Destroy();
}
else
{
return;
}

HitWall (vector HitNormal, actor HitWall)


local float speed;


Velocity = 0.8*((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity);
speed = VSize(Velocity);
bFixedRotationDir = True;
RotationRate = RotRand(False);
if ((speed > 0) && (speed < 30) && (HitNormal.Z > 0.7))
{
SetPhysics(PHYS_None, HitWall);
if (Physics == PHYS_None)
bFixedRotationDir = False;
}

if (HitWall.IsA('Mover'))
{
HitWall.TakeDamage(speed/58, Pawn(Owner), HitWall.Location, MomentumTransfer*Normal(Velocity), 'Shot');
}

else if (speed > 30)
{
if ((FRand() >= 0.75) && (FRand() < 1.0))
{
PlaySound(sound'Bounce1', SLOT_None, 3);
}
else if ((FRand() >= 0.5) && (FRand() < 0.75))
{
PlaySound(sound'Bounce2', SLOT_None, 3);
}
else
{
PlaySound(sound'Bounce3', SLOT_None, 3);
}
}

TakeDamage (int Damage, Pawn instigatedBy, Vector HitLocation, Vector Momentum, name damageType)


return;

Tick (float deltaTime)


return;

Timer


if(!bAllowBumping)
{
bAllowBumping=True;
}
if (bDoomedToDestroy)
{
Destroy();
}
return;

bump (actor other)


local DeusExPlayer Player;

Player = DeusExPlayer(other);

if((other.IsA('DeusExPlayer')))
{
if(bAllowBumping)
{
frob(Other,None);
}
}




FLBasketball4Player.uc (extends DeusExDecoration)

bInvincible=True
ItemName="Basketball"
Mesh=LodMesh'PGAssets.FLBasketball'
DrawScale=0.710000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBounce=True
Mass=8.000000
Buoyancy=10.000000

BaseChange


local FLBasketball AdvB;

if (bWasCarried)
{
AdvB = Spawn(Class'FLBasketball',Owner,,Location,Rotation);
AdvB.Velocity = Velocity + 0.7 * Owner.Velocity;
AdvB.SetTimer(0.5,False);
Destroy();
}




FadeLamp.uc (extends Lamp)

bInvincible=True
ItemName="Fading Lamp"
Mesh=LodMesh'DeusExDeco.Lamp2'
CollisionRadius=15.000000
CollisionHeight=47.000000
LightSaturation=0
LightRadius=18

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);

if (bOn)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
}
else
{
LightType=LT_None;
}

PostBeginPlay


if (bOn)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
}

tick (float v)


LightHue++;
if(LightHue >= 255)
{
LightHue=0;
}




FakeSecurityConsole.uc (extends DeusExDecoration)

var bool bOn;
bInvincible=True
ItemName="Security Computer Terminal"
bPushable=False
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.ComputerSecurity'
CollisionRadius=11.590000
CollisionHeight=10.100000
bCollideWorld=False
Mass=10.000000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);

if (bOn)
{
PlayAnim('Deactivate');
}
else
{
PlayAnim('Activate');
}

bOn = !bOn;




FiberArmour.uc (extends PGArmour)

Dur=25
Def=1000
ItemName="Fiber Armour"
beltDescription="FIBER"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




FireBolt.uc (extends Rocket)

var() float shakeTime;
var() float shakeRollMagnitude;
var() float shakeVertMagnitude;
var SizableEffectSpawner efs;
bBlood=False
bDebris=False
blastRadius=512.000000
DamageType=Flamed
ItemName="Fire Bolt"
Damage=50.000000
SpawnSound=None
ImpactSound=Sound'DeusExSounds.Weapons.FlamethrowerFire'
Mesh=None
DrawScale=1.000000
AmbientSound=None

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ExplosionLight light;
local ParticleGenerator gen;
local ExplosionSmall expeffect;


//destroy the other effect
efs.Destroy();

// draw a pretty explosion
/*light = Spawn(class'ExplosionLight',,, HitLocation);
if (light != None)
{
light.RemoteRole = ROLE_None;
light.size = 12;
}*/

/*expeffect = Spawn(class'ExplosionSmall',,, HitLocation);
if (expeffect != None)
expeffect.RemoteRole = ROLE_None;*/

// create a particle generator shooting out white-hot fireballs
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 1.0;
gen.checkTime = 0.05;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleTexture = FireTexture'Effects.Fire.flame_b';
gen.LifeSpan = 2.0;
}

SpawnRocketEffects


efs = Spawn(class'SizableEffectSpawner',,,Location);
if (efs != None)
{
efs.SetBase(Self);
efs.RemoteRole = ROLE_None;
efs.EffectClass=class'MagicRing';
efs.EffectSkin = Texture'DeusExDeco.Skins.AlarmLightTex8';
efs.SizeofEffect = 3;
efs.Interval = 0.01;
efs.EffectLSpan = 1.0;
}

ZoneChange (ZoneInfo NewZone)


Super.ZoneChange(NewZone);

// If the dart enters water, extingish it
if (NewZone.bWaterZone)
{
//destroy the other effect
efs.Destroy();

Destroy();
}




FireHydrant.uc (extends DeusExDecoration)

var() ESkinColor SkinColor;
ItemName="Fire Hydrant"
Mesh=LodMesh'DeusExDeco.FirePlug'
CollisionRadius=8.000000
CollisionHeight=16.500000
Mass=50.000000
Buoyancy=30.000000

BeginPlay


Super.BeginPlay();

switch (SkinColor)
{
case SC_Red: Skin = Texture'FirePlugTex1'; break;
case SC_Orange: Skin = Texture'FirePlugTex2'; break;
case SC_Blue: Skin = Texture'FirePlugTex3'; break;
case SC_Gray: Skin = Texture'FirePlugTex4'; break;
}




FishingBait.uc (extends ThrownProjectile)

var FishingDevice MainDev;
MyDamageType=SpecialDamage
LifeSpan=20.000000
Skin=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExDeco.Basketball'
AmbientGlow=67
bUnlit=True
SoundRadius=112
SoundVolume=255
CollisionRadius=5.000000
CollisionHeight=5.000000
DesiredRotation=(Pitch=12000,Yaw=5666,Roll=2334)

Explode (vector HitLocation, vector HitNormal)


return;

HitWall (vector HitNormal, actor Wall)


Velocity = 0.75 * ((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity); // Reflect off Wall w/damping
speed = VSize(Velocity);
if ( Velocity.Z > 400 )
Velocity.Z = 0.5 * (400 + Velocity.Z);

Landed (vector HitNormal)


HitWall(HitNormal, None);

PostBeginPlay



Super.PostBeginPlay();

Velocity = Vector(Rotation) * Speed;
Velocity.Z -= 200;
SetTimer(10, false);
RandSpin(30000);

ProcessTouch (actor Other, vector HitLocation)


HitWall(Normal(HitLocation - Other.Location), None );

TakeDamage (int Damage, Pawn instigatedBy, Vector HitLocation, Vector Momentum, name damageType)


return;

Timer


DeusExPlayer(MainDev.Owner).ClientMessage("Bait timed out...");
MainDev.Bait = None;
MainDev.Stage = 0;
Destroy();

ZoneChange (ZoneInfo NewZone)


local FishingBait2 FB;


Super.ZoneChange(NewZone);
if (NewZone.bWaterZone)
{
FB = Spawn(class'FishingBait2',,,Location);
FB.MainDev = MainDev;
MainDev.Lure = FB;
MainDev.Stage = 2;
FB.SetTimer(RandRange(5,25), True);
Destroy();
}




FishingBait2.uc (extends Containers)

var FishingDevice MainDev;
var bool bHasCatch;
var int FishTime;
bFloating=True
ItemName="Fishing Bait"
bBlockSight=True
Skin=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExDeco.Basketball'
CollisionRadius=5.000000
CollisionHeight=5.000000
Mass=100.000000
Buoyancy=200.000000

PingCatch


MainDev.Catches++;
MainDev.Stage = 0;
DeusExPlayer(MainDev.Owner).ClientMessage("Got it! "$MainDev.Catches$" fish caught.");
MainDev.Lure = None;
Destroy();

Timer


if(!bHasCatch)
{
bHasCatch=True;
DeusExPlayer(MainDev.Owner).ClientMessage("Somethings biting!!");
SetTimer(Rand(5), False);
}
else
{
bHasCatch=False;
DeusExPlayer(MainDev.Owner).ClientMessage("It got away...");
}




FishingDevice.uc (extends DeusExPickup)

var FishingBait Bait;
var FishingBait2 Lure;
var int Catches;
var int Stage; // 0 - Idle, 1 - Casting (Bait is out, not landed), 2 - Lure is out
maxCopies=1
bActivatable=True
ItemName="Handheld Fishing Device"
PlayerViewOffset=(X=20.000000,Y=10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.MultitoolPOV'
PickupViewMesh=LodMesh'DeusExItems.Multitool'
ThirdPersonMesh=LodMesh'DeusExItems.Multitool3rd'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconMultitool'
M_Activated=""
largeIcon=Texture'DeusExUI.Icons.LargeIconMultitool'
largeIconWidth=28
largeIconHeight=46
Description=""
beltDescription="FISHING"
Mesh=LodMesh'DeusExItems.Multitool'
CollisionRadius=4.800000
CollisionHeight=0.860000
Mass=20.000000
Buoyancy=10.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player;


Super.BeginState();
player = DeusExPlayer(Owner);
if(Stage == 0)
{
if(Bait == None)
{
Bait = spawn(class'FishingBait',Owner,,Owner.Location,DeusExPlayer(Owner).Rotation);
Bait.Velocity = Velocity + 0.7 * Owner.Velocity;
Bait.MainDev = Self;
Stage = 1;
Player.ClientMessage("Bait cast.");
return;
}
}

if(Stage == 1)
{
if(Bait != None)
{
Bait.Destroy();
Player.ClientMessage("Bait recalled.");
Stage = 0;
return;
}
}

if(Stage == 2)
{
if(Lure != None)
{
if(Lure.bHasCatch)
{
Lure.PingCatch();
}
else
{
Player.ClientMessage("Lure recalled.");
Lure.Destroy();
Stage = 0;
}
}
}

GotoState('DeActivated');

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 1;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




FlameArmour.uc (extends PGArmour)

Dur=100
Def=10
bResistFire=True
ItemName="Flame Armour"
beltDescription="FLAME"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




FlashBang.uc (extends ThrownProjectile)

fuseLength=3.000000
proxRadius=128.000000
spawnWeaponClass=Class'PartyStuff.WeaponFlashBang'
spawnAmmoClass=Class'PartyStuff.AmmoFlashBang'
ItemName="Flash Bang Grenade"
speed=1500.000000
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'
Mesh=LodMesh'DeusExItems.EMPGrenadePickup'

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local DeusExPlayer player;
local ScriptedPawn pwn;
local Float TargetRange;


targetRange = 12;
foreach VisibleActors(class'DeusExPlayer',player,768)
{
TargetRange -= Abs(VSize(Player.Location - Location));
player.ClientFlash(1,Vect(20000,20000,20000));
player.IncreaseClientFlashLength(12.0);

}
foreach VisibleActors(class'ScriptedPawn',pwn,768)
{
pwn.TakeDamage(5,Pawn(Owner),pwn.Location,vect(0,0,0),'TearGas');
}




FlashLamp.uc (extends Lamp)

var() float switchTime;
SwitchTime=1.000000
bInvincible=True
ItemName="Flash Lamp"
Mesh=LodMesh'DeusExDeco.Lamp2'
CollisionRadius=15.000000
CollisionHeight=47.000000
LightSaturation=0
LightRadius=18

Frob (Actor Frobber, Inventory frobWith)


local int Random;

Super.Frob(Frobber, frobWith);

if (bOn)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
SetTimer(switchTime,false);
}
else
{
LightType=LT_None;
}

PostBeginPlay


if (bOn)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
SetTimer(switchTime,false);
}

timer


local int random;

if(bOn)
{
random = Rand(255);
LightHue = random;
SetTimer(switchTime,false);
}




FlyingCarpet.uc (extends HKMarketTarp)

var bool bActive;
bActive=True
bInvincible=True
bCanBeBase=True
Texture=Texture'HK_Interior.Textile.HKM_Rug_04'
Skin=Texture'HK_Interior.Textile.HKM_Rug_04'

Frob (Actor Frobber, Inventory frobWith)


local PortableCarpet cdc;

if(bActive)
{
bActive=False;
Destroy();
SilentAdd(class'PortableCarpet', DeusExPlayer(Frobber));
return;
}


SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass);
anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);




FoodMMRPG.uc (extends DeusExPickup)

var int rechargeAmount;
var localized String msgRecharged;
var localized String RechargesLabel;
var Sound EatSound;
rechargeAmount=25
msgRecharged="Replenished %d health points"
RechargesLabel="Replenished %d health points"
maxCopies=30
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="ERROR- T3h D3FAULT"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.BioCell'
PickupViewMesh=LodMesh'DeusExItems.BioCell'
ThirdPersonMesh=LodMesh'DeusExItems.BioCell'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconBioCell'
M_Activated=" eaten"
largeIcon=Texture'DeusExUI.Icons.LargeIconBioCell'
largeIconWidth=44
largeIconHeight=43
beltDescription="OMG LOL, IT's TEH HAWTZORZ"
Mesh=LodMesh'DeusExItems.BioCell'
CollisionRadius=4.700000
CollisionHeight=0.930000
Mass=5.000000
Buoyancy=4.000000

Activate


// can't turn it off

BecomeItem


LifeSpan = 0.0;
Super.BecomeItem();

BeginState


local DeusExPlayer player;


Super.BeginState();

player = DeusExPlayer(Owner);
if (player != None)
{
//player.ClientMessage(Sprintf(msgRecharged, rechargeAmount));

//player.PlaySound(EatSound, SLOT_None,,, 256);


player.HealPlayer(rechargeamount, True);

//player.Energy += rechargeAmount;
//if (player.Energy > player.EnergyMax)
// player.Energy = player.EnergyMax;
}

UseOnce();

DropFrom (vector StartLocation)


LifeSpan = 5.0;
Super.DropFrom(StartLocation);

PostBeginPlay


Super.PostBeginPlay();

PreBeginPlay


Super.PreBeginPlay();

//MainMan: NO, ph00'!
// If this is a netgame, then override defaults
// if ( Level.NetMode != NM_StandAlone )
// MaxCopies = 5;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UpdateInfo (Object winObject) -> bool


local PersonaInfoWindow winInfo;
local string str;


winInfo = PersonaInfoWindow(winObject);
if (winInfo == None)
return False;

winInfo.SetTitle(itemName);
winInfo.SetText(Description $ winInfo.CR() $ winInfo.CR());
winInfo.AppendText(Sprintf(RechargesLabel, RechargeAmount));

// Print the number of copies
str = CountLabel @ String(NumCopies);
winInfo.AppendText(winInfo.CR() $ winInfo.CR() $ str);

return True;




FreezeBolt.uc (extends Rocket)

bExplodes=False
bBlood=False
bDebris=False
blastRadius=0.000000
bTracking=False
ItemName="FreezeBolt"
speed=500.000000
MaxSpeed=1000.000000
SpawnSound=None
ImpactSound=None
Mesh=None
DrawScale=1.000000
SoundRadius=0
SoundVolume=0
AmbientSound=None

HitWall (vector HitNormal, actor Wall)


if (bStickToWall)
{
Velocity = vect(0,0,0);
Acceleration = vect(0,0,0);
SetPhysics(PHYS_None);
bStuck = False;
destroy();

// MBCODE: Do this only on server side
if ( Role == ROLE_Authority )
{
if (Level.NetMode != NM_Standalone)
SetTimer(5.0,False);

if (Wall.IsA('Mover'))
{
SetBase(Wall);
Wall.TakeDamage(Damage, Pawn(Owner), Wall.Location, MomentumTransfer*Normal(Velocity), damageType);
}
}
}

if (Wall.IsA('BreakableGlass'))
bDebris = False;
AISendEvent('LoudNoise', EAITYPE_Audio, 2.0, blastRadius*24);
SpawnEffects(Location, HitNormal, Wall);

Super.HitWall(HitNormal, Wall);

ProcessTouch (Actor Other, Vector HitLocation)


local ScriptedPawn pawn;
local FrozenPerson fperson;
local int i;
local DeusExDecoration deco;
local DeusExCarcass carcass;


if (bStuck)
return;


if (DeusExDecoration(Other) != None || ScriptedPawn(Other) != None || DeusExCarcass(Other) != None)
{
pawn = ScriptedPawn(Other);
deco = DeusExDecoration(Other);
carcass = DeusExCarcass(Other);

fperson = Spawn(class'FrozenPerson',,,Other.Location);
fperson.SetCollisionSize(Other.CollisionRadius,Other.CollisionHeight);
fperson.Texture = Other.Texture;
fperson.Mesh=Other.Mesh;
fperson.Mass=Other.Mass;

for (i=0;i<8;i++)
{
if ((Other.MultiSkins[i]==Texture'DeusExItems.Skins.GrayMaskTex')
|| (Other.MultiSkins[i]==Texture'DeusExItems.Skins.PinkMaskTex')
|| (Other.MultiSkins[i]==Texture'DeusExItems.Skins.BlackMaskTex'))
{
fperson.MultiSkins[i]=Other.MultiSkins[i];
}
else
fperson.MultiSkins[i] = Texture'IceTex';
}
fperson.setRotation(Other.Rotation);
Other.Destroy();
Destroy();
}


SpawnRocketEffects


//does nothing here

Tick (float deltaTime)


Local SizableEffectSpawner efs;


efs = Spawn(class'SizableEffectSpawner',,,Location);
if (efs != None)
{
efs.EffectClass=class'MagicRing';
efs.EffectSkin = Texture'BlueRay';
efs.SizeofEffect = 1;
efs.NumberSpawns = 1;
efs.Interval = 0;
efs.EffectLSpan = 1.0;
}




FreezeGrenade.uc (extends ThrownProjectile)

fuseLength=3.000000
proxRadius=128.000000
spawnWeaponClass=Class'PartyStuff.WeaponFreezeGrenade'
spawnAmmoClass=Class'PartyStuff.AmmoFreezeGrenade'
ItemName="Icer Grenade"
ItemArticle="an"
speed=1500.000000
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'
Mesh=LodMesh'DeusExItems.EMPGrenadePickup'

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local DeusExPlayer player;
local ScriptedPawn pwn;
local DeusExDecoration DXP;
local PlayerResetter PR;
local FrozenPerson fperson;
local DeusExCarcass DXC;
local int i;

//bmeshenviromap and texture ice
foreach VisibleActors(class'DeusExPlayer',player,768)
{
PR = Spawn(class'PlayerResetter');
PR.Target = player;
PR.SetTimer(15,False);
PR.myTodo = "unfreeze";
Player.bMeshEnviroMap=True;
Player.Texture = Texture'IceTex';
player.bMovable=False;
player.bBehindView=True;
}
/*foreach VisibleActors(class'ScriptedPawn',pwn,768)
{
fperson = Spawn(class'FrozenPerson',,,pwn.Location);
fperson.SetCollisionSize(pwn.CollisionRadius,pwn.CollisionHeight);
fperson.Texture = pwn.Texture;
fperson.Mesh=pwn.Mesh;
fperson.Mass=pwn.Mass;
for (i=0;i<8;i++)
{
if ((pwn.MultiSkins[i]==Texture'DeusExItems.Skins.GrayMaskTex')
|| (pwn.MultiSkins[i]==Texture'DeusExItems.Skins.PinkMaskTex')
|| (pwn.MultiSkins[i]==Texture'DeusExItems.Skins.BlackMaskTex'))
{
fperson.MultiSkins[i]=pwn.MultiSkins[i];
}
else
fperson.MultiSkins[i] = Texture'IceTex';
}
fperson.setRotation(pwn.Rotation);
pwn.Destroy();
}
foreach VisibleActors(class'DeusExDecoration',dxp,768)
{
fperson = Spawn(class'FrozenPerson',,,dxp.Location);
fperson.SetCollisionSize(dxp.CollisionRadius,dxp.CollisionHeight);
fperson.Texture = dxp.Texture;
fperson.Mesh=dxp.Mesh;
fperson.Mass=dxp.Mass;
for (i=0;i<8;i++)
{
if ((dxp.MultiSkins[i]==Texture'DeusExItems.Skins.GrayMaskTex')
|| (dxp.MultiSkins[i]==Texture'DeusExItems.Skins.PinkMaskTex')
|| (dxp.MultiSkins[i]==Texture'DeusExItems.Skins.BlackMaskTex'))
{
fperson.MultiSkins[i]=dxp.MultiSkins[i];
}
else
fperson.MultiSkins[i] = Texture'IceTex';
}
fperson.setRotation(dxp.Rotation);
dxp.Destroy();
}
foreach VisibleActors(class'DeusExCarcass',DXC,768)
{
fperson = Spawn(class'FrozenPerson',,,DXC.Location);
fperson.SetCollisionSize(DXC.CollisionRadius,DXC.CollisionHeight);
fperson.Texture = DXC.Texture;
fperson.Mesh=DXC.Mesh;
fperson.Mass=DXC.Mass;
for (i=0;i<8;i++)
{
if ((DXC.MultiSkins[i]==Texture'DeusExItems.Skins.GrayMaskTex')
|| (DXC.MultiSkins[i]==Texture'DeusExItems.Skins.PinkMaskTex')
|| (DXC.MultiSkins[i]==Texture'DeusExItems.Skins.BlackMaskTex'))
{
fperson.MultiSkins[i]=DXC.MultiSkins[i];
}
else
fperson.MultiSkins[i] = Texture'IceTex';
}
fperson.setRotation(DXC.Rotation);
DXC.Destroy();
}*/




FreezeGun.uc (extends DeusExWeapon)

var() int fzHitDamage;
fzHitDamage=20
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
ItemName="Freeze Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="FREEZE"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

FreezeIt (actor other)


local Pawn pawn;
local DeusExDecoration deco;
local DeusExCarcass carcass;
local FrozenPerson fperson;
local int i;


pawn = pawn(Other);
deco = DeusExDecoration(Other);
carcass = DeusExCarcass(Other);

fperson = Spawn(class'FrozenPerson',,,Other.Location);
fperson.SetCollisionSize(Other.CollisionRadius,Other.CollisionHeight);
fperson.Texture = Other.Texture;
fperson.Mesh=Other.Mesh;
fperson.Mass=Other.Mass/2;
fperson.drawscale=Other.Drawscale;

for (i=0;i<8;i++)
{
if ((Other.MultiSkins[i]==Texture'DeusExItems.Skins.GrayMaskTex')
|| (Other.MultiSkins[i]==Texture'DeusExItems.Skins.PinkMaskTex')
|| (Other.MultiSkins[i]==Texture'DeusExItems.Skins.BlackMaskTex'))
{
fperson.MultiSkins[i]=Other.MultiSkins[i];
}
else
fperson.MultiSkins[i] = Texture'IceTex';
}
fperson.setRotation(Other.Rotation);
if(!Other.IsA('DeusExPlayer'))
{
Other.Destroy();
}

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;


if(Other.isa('DeusExPlayer') && DeusExPlayer(Other).ReducedDamageType != 'all')
{
DeusExPlayer(Other).TakeDamage(fzHitDamage, DeusExPlayer(Owner), Other.Location, HitLocation,'Special');
/*if(DeusExPlayer(Other).Health <= 0)
{
FreezeIt(Other);
}*/
return;
}
else if(Other.isa('ScriptedPawn') && !ScriptedPawn(Other).bInvincible)
{
ScriptedPawn(Other).TakeDamage(fzHitDamage, DeusExPlayer(Owner), Other.Location, HitLocation,'Special');
if(Rand(100) > ScriptedPawn(Other).Health){
FreezeIt(Other);
}

return;

ScopeToggle


DeusExPlayer(Owner).ConsoleCommand("Mutate rcon.tp");

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




FrozenPerson.uc (extends Containers)

HitPoints=10
FragType=Class'DeusEx.GlassFragment'
bFlammable=False
bHighlight=False
ItemName="Ice"
bBlockSight=True
Texture=Texture'Engine.S_Pawn'
Mesh=LodMesh'DeusExDeco.CrateBreakableMed'
CollisionRadius=34.000000
CollisionHeight=24.000000
Mass=50.000000
Buoyancy=60.000000

Frag (class FragType, vector Momentum, float DSize, int NumFrags)


local int i;
local actor A, Toucher;
local DeusExFragment s;


NumFrags*=10;

if ( bOnlyTriggerable )
return;
if (Event!='')
foreach AllActors( class 'Actor', A, Event )
A.Trigger( Toucher, pawn(Toucher) );
if ( Region.Zone.bDestructive )
{
Destroy();
return;
}
for (i=0 ; i {
s = DeusExFragment(Spawn(FragType, Owner));
if (s != None)
{
s.Instigator = Instigator;
s.CalcVelocity(Momentum,0);
s.DrawScale = DSize*0.5+0.7*DSize*FRand();
s.Skin = GetMeshTexture();
if (bExplosive)
s.bSmoking = True;
}
}

if (!bExplosive)
Destroy();




GalaxyChoc.uc (extends FoodMMRPG)

ItemName="ChocoCrunch Chocolate Bar"
PlayerViewMesh=LodMesh'DeusExItems.Candybar'
PlayerViewScale=1.100000
PickupViewMesh=LodMesh'DeusExItems.Candybar'
PickupViewScale=1.100000
ThirdPersonMesh=LodMesh'DeusExItems.Candybar'
ThirdPersonScale=1.100000
Icon=Texture'PGAssets.Skins.GalaxyBelt'
largeIcon=Texture'PGAssets.Skins.GalaxyBelt'
largeIconWidth=46
largeIconHeight=36
beltDescription="CHOCOCRUNCH"
Skin=Texture'PGAssets.Skins.GalaxyTex1'
Mesh=LodMesh'DeusExItems.Candybar'
DrawScale=1.100000
MultiSkins(0)=Texture'PGAssets.Skins.GalaxyTex1'
CollisionRadius=6.250000
CollisionHeight=0.670000
Mass=3.000000



GalaxyChoc2.uc (extends FoodMMRPG)

ItemName="ChocoCrunch |p2[Strawberry]|p1 Bar"
PlayerViewMesh=LodMesh'DeusExItems.Candybar'
PlayerViewScale=1.100000
PickupViewMesh=LodMesh'DeusExItems.Candybar'
PickupViewScale=1.100000
ThirdPersonMesh=LodMesh'DeusExItems.Candybar'
ThirdPersonScale=1.100000
Icon=Texture'PGAssets.Skins.BeltIconChoc2'
largeIcon=Texture'PGAssets.Skins.BeltIconChoc2'
largeIconWidth=46
largeIconHeight=36
beltDescription="|p2CH STRWBRY"
Skin=Texture'PGAssets.Skins.GalaxyTex2'
Mesh=LodMesh'DeusExItems.Candybar'
DrawScale=1.100000
MultiSkins(0)=Texture'PGAssets.Skins.GalaxyTex2'
CollisionRadius=6.250000
CollisionHeight=0.670000
Mass=3.000000



GalaxyChoc3.uc (extends FoodMMRPG)

ItemName="ChocoCrunch |p2[Mint]|p1 Bar"
PlayerViewMesh=LodMesh'DeusExItems.Candybar'
PlayerViewScale=1.100000
PickupViewMesh=LodMesh'DeusExItems.Candybar'
PickupViewScale=1.100000
ThirdPersonMesh=LodMesh'DeusExItems.Candybar'
ThirdPersonScale=1.100000
Icon=Texture'PGAssets.Skins.BeltIconChoc3'
largeIcon=Texture'PGAssets.Skins.BeltIconChoc3'
largeIconWidth=46
largeIconHeight=36
Description="(c) MAINMAN"
beltDescription="|p2CH MINT"
Skin=Texture'PGAssets.Skins.GalaxyTex3'
Mesh=LodMesh'DeusExItems.Candybar'
DrawScale=1.100000
MultiSkins(0)=Texture'PGAssets.Skins.GalaxyTex3'
CollisionRadius=6.250000
CollisionHeight=0.670000
Mass=3.000000



GlassShard.uc (extends CraftingMaterial)

DispStr="[Ingredient] Required for Estus"
bIngredient=True
ItemName="Glass Shard"
beltDescription="Glass"
CollisionRadius=10.000000



GraffitiGun.uc (extends DeusExWeapon)

LowAmmoWaterMark=50
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.200000
bAutomatic=True
ShotTime=0.000000
reloadTime=0.000000
HitDamage=0
maxRange=100
AccurateRange=100
BaseAccuracy=0.700000
bPenetrating=False
StunDuration=15.000000
bHasMuzzleFlash=False
mpReloadTime=4.000000
mpBaseAccuracy=0.700000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'PartyStuff.SprayPaint'
ReloadCount=200
PickupAmmoCount=800
FireOffset=(X=-22.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.GraffitiSpray'
shakemag=10.000000
FireSound=Sound'DeusExSounds.Weapons.PepperGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.PepperGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PepperGunReload'
SelectSound=Sound'DeusExSounds.Weapons.PepperGunSelect'
InventoryGroup=164
ItemName="Graffiti Gun"
PlayerViewOffset=(X=16.000000,Y=-10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.PepperGun'
PickupViewMesh=LodMesh'DeusExItems.PepperGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.PepperGun3rd'
Icon=Texture'DeusExUI.Icons.BeltIconPepperSpray'
largeIcon=Texture'DeusExUI.Icons.LargeIconPepperSpray'
largeIconWidth=46
largeIconHeight=40
Description="The pepper gun will accept a number of commercially available riot control agents in cartridge form and disperse them as a fine aerosol mist that can cause blindness or blistering at short-range."
beltDescription="GRAFFITI"
Mesh=LodMesh'DeusExItems.PepperGunPickup'
CollisionRadius=7.000000
CollisionHeight=1.500000
Mass=7.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




GraffitiGunBlue.uc (extends DeusExWeapon)

LowAmmoWaterMark=50
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.200000
bAutomatic=True
ShotTime=0.000000
reloadTime=0.000000
HitDamage=0
maxRange=100
AccurateRange=100
BaseAccuracy=0.700000
bPenetrating=False
StunDuration=15.000000
bHasMuzzleFlash=False
mpReloadTime=4.000000
mpBaseAccuracy=0.700000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'PartyStuff.SprayPaintBlue'
ReloadCount=200
PickupAmmoCount=800
FireOffset=(X=-22.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.GraffitiSprayBlue'
shakemag=10.000000
FireSound=Sound'DeusExSounds.Weapons.PepperGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.PepperGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PepperGunReload'
SelectSound=Sound'DeusExSounds.Weapons.PepperGunSelect'
InventoryGroup=28
ItemName="Graffiti Gun blue"
PlayerViewOffset=(X=16.000000,Y=-10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.PepperGun'
PickupViewMesh=LodMesh'DeusExItems.PepperGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.PepperGun3rd'
Icon=Texture'DeusExUI.Icons.BeltIconPepperSpray'
largeIcon=Texture'DeusExUI.Icons.LargeIconPepperSpray'
largeIconWidth=46
largeIconHeight=40
Description="The pepper gun will accept a number of commercially available riot control agents in cartridge form and disperse them as a fine aerosol mist that can cause blindness or blistering at short-range."
beltDescription="BLUE"
Mesh=LodMesh'DeusExItems.PepperGunPickup'
CollisionRadius=7.000000
CollisionHeight=1.500000
Mass=7.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




GraffitiGunHyper.uc (extends GraffitiGun)

ItemName="Graffiti Gun [MODIFIED]"



GraffitiGunHyperBlue.uc (extends GraffitiGunblue)

ItemName="Graffiti Gun blue [MODIFIED]"



GraffitiGunHyperPink.uc (extends GraffitiGunpink)

ItemName="Graffiti Gun pink [MODIFIED]"



GraffitiGunHyperRed.uc (extends GraffitiGunRed)

ItemName="Graffiti Gun Red [MODIFIED]"



GraffitiGunHyperYellow.uc (extends GraffitiGunYellow)

ItemName="Graffiti Gun Yellow [MODIFIED]"



GraffitiGunRed.uc (extends DeusExWeapon)

LowAmmoWaterMark=50
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.200000
bAutomatic=True
ShotTime=0.000000
reloadTime=0.000000
HitDamage=0
maxRange=100
AccurateRange=100
BaseAccuracy=0.700000
bPenetrating=False
StunDuration=15.000000
bHasMuzzleFlash=False
mpReloadTime=4.000000
mpBaseAccuracy=0.700000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'PartyStuff.SprayPaintRed'
ReloadCount=200
PickupAmmoCount=800
FireOffset=(X=-22.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.GraffitiSprayRed'
shakemag=10.000000
FireSound=Sound'DeusExSounds.Weapons.PepperGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.PepperGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PepperGunReload'
SelectSound=Sound'DeusExSounds.Weapons.PepperGunSelect'
InventoryGroup=92
ItemName="Graffiti Gun Red"
PlayerViewOffset=(X=16.000000,Y=-10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.PepperGun'
PickupViewMesh=LodMesh'DeusExItems.PepperGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.PepperGun3rd'
Icon=Texture'DeusExUI.Icons.BeltIconPepperSpray'
largeIcon=Texture'DeusExUI.Icons.LargeIconPepperSpray'
largeIconWidth=46
largeIconHeight=40
Description="The pepper gun will accept a number of commercially available riot control agents in cartridge form and disperse them as a fine aerosol mist that can cause blindness or blistering at short-range."
beltDescription="RED"
Mesh=LodMesh'DeusExItems.PepperGunPickup'
CollisionRadius=7.000000
CollisionHeight=1.500000
Mass=7.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




GraffitiGunYellow.uc (extends DeusExWeapon)

LowAmmoWaterMark=50
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.200000
bAutomatic=True
ShotTime=0.000000
reloadTime=0.000000
HitDamage=0
maxRange=100
AccurateRange=100
BaseAccuracy=0.700000
bPenetrating=False
StunDuration=15.000000
bHasMuzzleFlash=False
mpReloadTime=4.000000
mpBaseAccuracy=0.700000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'PartyStuff.SprayPaintYellow'
ReloadCount=200
PickupAmmoCount=800
FireOffset=(X=-22.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.GraffitiSprayYellow'
shakemag=10.000000
FireSound=Sound'DeusExSounds.Weapons.PepperGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.PepperGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PepperGunReload'
SelectSound=Sound'DeusExSounds.Weapons.PepperGunSelect'
InventoryGroup=105
ItemName="Graffiti Gun Yellow"
PlayerViewOffset=(X=16.000000,Y=-10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.PepperGun'
PickupViewMesh=LodMesh'DeusExItems.PepperGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.PepperGun3rd'
Icon=Texture'DeusExUI.Icons.BeltIconPepperSpray'
largeIcon=Texture'DeusExUI.Icons.LargeIconPepperSpray'
largeIconWidth=46
largeIconHeight=40
Description="The pepper gun will accept a number of commercially available riot control agents in cartridge form and disperse them as a fine aerosol mist that can cause blindness or blistering at short-range."
beltDescription="YELLOW"
Mesh=LodMesh'DeusExItems.PepperGunPickup'
CollisionRadius=7.000000
CollisionHeight=1.500000
Mass=7.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




GraffitiGunpink.uc (extends DeusExWeapon)

LowAmmoWaterMark=50
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.200000
bAutomatic=True
ShotTime=0.000000
reloadTime=0.000000
HitDamage=0
maxRange=100
AccurateRange=100
BaseAccuracy=0.700000
bPenetrating=False
StunDuration=15.000000
bHasMuzzleFlash=False
mpReloadTime=4.000000
mpBaseAccuracy=0.700000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'PartyStuff.SprayPaintPink'
ReloadCount=200
PickupAmmoCount=800
FireOffset=(X=-22.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.GraffitiSprayPink'
shakemag=10.000000
FireSound=Sound'DeusExSounds.Weapons.PepperGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.PepperGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PepperGunReload'
SelectSound=Sound'DeusExSounds.Weapons.PepperGunSelect'
InventoryGroup=69
ItemName="Graffiti Gun pink"
PlayerViewOffset=(X=16.000000,Y=-10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.PepperGun'
PickupViewMesh=LodMesh'DeusExItems.PepperGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.PepperGun3rd'
Icon=Texture'DeusExUI.Icons.BeltIconPepperSpray'
largeIcon=Texture'DeusExUI.Icons.LargeIconPepperSpray'
largeIconWidth=46
largeIconHeight=40
Description="The pepper gun will accept a number of commercially available riot control agents in cartridge form and disperse them as a fine aerosol mist that can cause blindness or blistering at short-range."
beltDescription="PINK"
Mesh=LodMesh'DeusExItems.PepperGunPickup'
CollisionRadius=7.000000
CollisionHeight=1.500000
Mass=7.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




GraffitiMark.uc (extends AveDecal)

var float spreadTime;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gdefault'

Tick (float deltaTime)


time += deltaTime;
if (time <= spreadTime)
{
DrawScale = maxDrawScale * time / spreadTime;
ReattachDecal(vect(0.1,0.1,0));
}




GraffitiMarkBlue.uc (extends AveDecal)

var float spreadTime;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gblue'

Tick (float deltaTime)


time += deltaTime;
if (time <= spreadTime)
{
DrawScale = maxDrawScale * time / spreadTime;
ReattachDecal(vect(0.1,0.1,0));
}




GraffitiMarkPink.uc (extends AveDecal)

var float spreadTime;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gpink'

Tick (float deltaTime)


time += deltaTime;
if (time <= spreadTime)
{
DrawScale = maxDrawScale * time / spreadTime;
ReattachDecal(vect(0.1,0.1,0));
}




GraffitiMarkRed.uc (extends AveDecal)

var float spreadTime;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gred'

Tick (float deltaTime)


time += deltaTime;
if (time <= spreadTime)
{
DrawScale = maxDrawScale * time / spreadTime;
ReattachDecal(vect(0.1,0.1,0));
}




GraffitiMarkYellow.uc (extends AveDecal)

var float spreadTime;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gyellow'

Tick (float deltaTime)


time += deltaTime;
if (time <= spreadTime)
{
DrawScale = maxDrawScale * time / spreadTime;
ReattachDecal(vect(0.1,0.1,0));
}




GraffitiSpray.uc (extends DeusExProjectile)

blastRadius=1.000000
DamageType=Poison
AccurateRange=200
maxRange=200
bIgnoresNanoDefense=True
ItemName="Graffiti Spray"
ItemArticle="some"
speed=800.000000
MaxSpeed=800.000000
Damage=2.000000
MomentumTransfer=400
ExplosionDecal=Class'PartyStuff.GraffitiMark'
LifeSpan=0.500000
Texture=Texture'PGAssets.Skins.gdefault'
DrawScale=0.250000
bUnlit=True



GraffitiSprayBlue.uc (extends DeusExProjectile)

blastRadius=1.000000
DamageType=Poison
AccurateRange=200
maxRange=200
bIgnoresNanoDefense=True
ItemName="Graffiti Spray"
ItemArticle="some"
speed=800.000000
MaxSpeed=800.000000
Damage=2.000000
MomentumTransfer=400
ExplosionDecal=Class'PartyStuff.GraffitiMarkBlue'
LifeSpan=0.500000
Texture=Texture'PGAssets.Skins.gblue'
DrawScale=0.250000
bUnlit=True



GraffitiSprayPink.uc (extends DeusExProjectile)

blastRadius=1.000000
DamageType=Poison
AccurateRange=200
maxRange=200
bIgnoresNanoDefense=True
ItemName="Graffiti Spray"
ItemArticle="some"
speed=800.000000
MaxSpeed=800.000000
Damage=2.000000
MomentumTransfer=400
ExplosionDecal=Class'PartyStuff.GraffitiMarkPink'
LifeSpan=0.500000
Texture=Texture'PGAssets.Skins.gpink'
DrawScale=0.250000
bUnlit=True



GraffitiSprayRed.uc (extends DeusExProjectile)

blastRadius=1.000000
DamageType=Poison
AccurateRange=200
maxRange=200
bIgnoresNanoDefense=True
ItemName="Graffiti Spray"
ItemArticle="some"
speed=800.000000
MaxSpeed=800.000000
Damage=2.000000
MomentumTransfer=400
ExplosionDecal=Class'PartyStuff.GraffitiMarkRed'
LifeSpan=0.500000
Texture=Texture'PGAssets.Skins.gred'
DrawScale=0.250000
bUnlit=True



GraffitiSprayYellow.uc (extends DeusExProjectile)

blastRadius=1.000000
DamageType=Poison
AccurateRange=200
maxRange=200
bIgnoresNanoDefense=True
ItemName="Graffiti Spray"
ItemArticle="some"
speed=800.000000
MaxSpeed=800.000000
Damage=2.000000
MomentumTransfer=400
ExplosionDecal=Class'PartyStuff.GraffitiMarkYellow'
LifeSpan=0.500000
Texture=Texture'PGAssets.Skins.gyellow'
DrawScale=0.250000
bUnlit=True



GrayShoot.uc (extends GraySpit)

ItemName="Bio Shot"
ItemArticle="a"
Damage=20.000000



GreaselShoot.uc (extends GreaselSpit)

ItemName="Bio Spit"
ItemArticle="a"
Damage=20.000000



HiddenFrob.uc (extends DeusExDecoration)

var() bool bMessage, bTrigger, bTimedrepeat;
var() int TimedRepeat;
var() string mMessage;
bInvincible=True
ItemName="???"
bPushable=False
bMovable=False
Physics=PHYS_None
Style=STY_Translucent
Sprite=Texture'DeusExUI.UserInterface.LogIcon'
Texture=Texture'DeusExUI.UserInterface.LogIcon'
Skin=Texture'DeusExUI.UserInterface.LogIcon'
CollisionRadius=25.200001
CollisionHeight=25.000000
bBlockPlayers=False

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;

P = DeusExPlayer(Frobber);
if(bMessage)
{
P.ClientMessage(mMessage);
}
if(bTrigger)
{
Super.Frob(frobber, frobwith);
if(bTimedrepeat)
SetTimer(TimedRepeat,False);
}

Timer




HideFailActor.uc (extends Actor)

var DeusExPlayer BadPlayer;
bHidden=True
LifeSpan=5.000000



HideyBoxItem.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="Box readiness:"
ItemName="Portable Hideybox"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExDeco.BoxLarge'
PlayerViewScale=0.200000
PickupViewMesh=LodMesh'DeusExDeco.BoxLarge'
ThirdPersonMesh=LodMesh'DeusExDeco.BoxLarge'
ThirdPersonScale=0.250000
Charge=8
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="BOX"
Mesh=LodMesh'DeusExDeco.BoxLarge'
CollisionRadius=45.000000
CollisionHeight=32.000000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local Vector loc,X,Y,Z;

// local HideyBox CD;

Spawn(Class'HideyBox',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );

Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




Hideybox.uc (extends BoxLarge)

var vector OldLocation;
var bool bInBox;
var PlayerPawn StoredPlayer;
var bool bFixWeapons;
var bool bActive;
bFixWeapons=True
bActive=True
bInvincible=True
bPushable=False

EjectPlayer (DeusExPlayer Frobber)


local rotator Z2F;

Z2F=Frobber.Rotation;
Frobber.SetLocation(Location + (Frobber.CollisionRadius + CollisionRadius + 30) * vector(Rotation) + vect(0.00,0.00,1.00));
Frobber.bHidden=False;
Frobber.SetCollision(true, true , true);
Frobber.bCollideWorld = true;
Frobber.SetPhysics(Phys_Falling);
Frobber.bBehindView=False;
Frobber.ViewTarget = None;
Frobber.ClientReStart();
bInBox = False;
StoredPlayer.ClientMessage("Left box successfully.");
StoredPlayer = None;

Frob (Actor Frobber, Inventory frobWith)


local HideyBoxItem h;


if(!bInBox)
{
if(DeusExPlayer(Frobber).bIsCrouching)
{
if(bActive)
{
bActive=False;
Destroy();
SilentAdd(class'HideyboxItem', DeusExPlayer(frobber));
}

}
else
{
OldLocation = Frobber.Location;

Frobber.SetLocation(Self.Location);
Frobber.bHidden=True;
Frobber.SetCollision(false, false, false);
Frobber.bCollideWorld = true;
DeusExPlayer(Frobber).SetPhysics(Phys_None);
DeusExPlayer(Frobber).bBehindView=True;
PlayerPawn(Frobber).ViewTarget = Self;
StoredPlayer = PlayerPawn(Frobber);
StoredPlayer.ClientMessage("Crouch to exit the box.");
StoredPlayer.ClientMessage("If Crouch doesn't work, enter the command |P2Mutate Box");
bInBox=True;
}

}
else
{
if(PlayerPawn(Frobber) == StoredPlayer)
{
EjectPlayer(DeusExPlayer(Frobber));
}
else
{
DeusExPlayer(Frobber).ClientMessage("Box is full...");
}

}


SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass);
anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);

Tick (float deltatime)


if(StoredPlayer != None)
{
StoredPlayer.SetPhysics(PHYS_None);
StoredPlayer.SetLocation(Location);

if(StoredPlayer.Health <= 0)
{
EjectPlayer(DeusExPlayer(StoredPlayer));
}
if(bFixWeapons)
{
DeusExPlayer(StoredPlayer).inHand = none;
}

if(StoredPlayer.bIsCrouching)
{
EjectPlayer(DeusExPlayer(StoredPlayer));
}
}




Hostager.uc (extends PGActors)

var Pawn Player;
var Actor Intigator;
var int Timed;
Timed=300

SetLoc


if(Instigator != None && Player != None)
{
DeusExPlayer(Player).SetCollision(False, True, False);
DeusExPlayer(Player).SetLocation(Instigator.Location + (Instigator.CollisionRadius + Player.Default.CollisionRadius +30) * Vector(instigator.Rotation) + vect(0,0,1) * 15);
DeusExPlayer(Player).SetCollision(True, True, True);
}

Tick (float deltatime)


SetLoc();

Timed--;

if(Timed < 1)
{
Destroy();
}

if(Player.Health <= 0 || Player == None || Instigator.Health <= 0 || Instigator == None || DeusExPlayer(Player).PlayerReplicationInfo.bAdmin)
{
Destroy();
}




HotBomb.uc (extends CrateExplosiveSmall)

var bool bArmed;
var() int AffectRadius;
var int Randy, curCount, minCount, maxCount;
AffectRadius=700
minCount=5
MaxCount=20
bInvincible=True
ItemName="Hot BOMB"
bPushable=False
Mesh=LodMesh'PGAssets.hellfire'
MultiSkins(0)=Texture'Area51Textures.Metal.pa_nukewste_a'
MultiSkins(1)=Texture'Area51Textures.Metal.area51shere_a'
MultiSkins(2)=Texture'Area51Textures.Metal.A51_Wall_11'
CollisionRadius=14.000000
CollisionHeight=34.000000

BeepLocal (string Str)


local DeusExPlayer P;


foreach RadiusActors(class'DeusExPlayer', P, AffectRadius)
{
P.ClientMessage(str,'TeamSay');
}

Bump (actor Other)

ExplodeTime


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 300;
explosionRadius = 150;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
Destroy();

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer Player;


if(!bArmed)
{
Randy = randrange(minCount,maxCount);
SetTimer(float(Randy),False);
bArmed = True;
bPushable = True;
BeepLocal("|Cfff005Timer started!");
LightBrightness=255;
Lighttype=LT_Steady;
LightRadius=15;
Ambientglow=255;
LightSaturation=0;
ambientSound = sound'ambient.lamambient';
super.Frob(Frobber, frobWith);
}
else
{
super.Frob(Frobber, frobWith);
}

PostBeginPlay


BeepLocal("|Cfff005Hot BOMB in play!! Pick up to activate");

Timer


BeepLocal("|Cfff005HOT BOMB HAS BLOWN.");
ExplodeTime();

Trigger (actor Other, pawn EventInstigator)


if(!bArmed)
{
Randy = randrange(minCount,maxCount);
SetTimer(float(Randy),False);
bArmed = True;
bPushable = True;
ambientSound = sound'ambient.lamambient';
LightBrightness=255;
Lighttype=LT_Steady;
LightRadius=15;
Ambientglow=255;
LightSaturation=0;
BeepLocal("|Cfff005Timer started!");
}




Insult.uc (extends DeusExDecoration)

var config string actions[20], objects[20];
var config float frobDelay;
var deusexplayer victarray[16];
var bool bDisableFrob;
actions(0)="slapped"
actions(1)="smothered"
actions(2)="fucked"
actions(3)="tickled"
actions(4)="smashed"
actions(5)="bit"
actions(6)="twatted"
actions(7)="rekt"
actions(8)="engulfed"
actions(9)="morphed"
actions(10)="terminated"
actions(11)="infused"
actions(12)="expanded"
actions(13)="punched"
actions(14)="shot"
actions(15)="spit on"
actions(16)="spilled"
actions(17)="slashed"
actions(18)="wasted"
actions(19)="prodded"
objects(0)="a motherfucking truck"
objects(1)="a big fucking fish"
objects(2)="a dong"
objects(3)="a fucking huge dong"
objects(4)="a darko machine"
objects(5)="a turd"
objects(6)="some kind of giant bitch"
objects(7)="a booby trap"
objects(8)="a mouldy vagina"
objects(9)="a fat woman"
objects(10)="a pussy cat"
objects(11)="a pigeon"
objects(12)="toilet paper"
objects(13)="a knuckle duster"
objects(14)="a bowl of noodles"
objects(15)="a bowl of pasta"
objects(16)="an oriental daily news!"
objects(17)="a maggie chow"
objects(18)="a chicken leg"
objects(19)="an octopus dick"
frobDelay=3.000000
bInvincible=True
ItemName="The Glowing Orb of Insultery"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P, vict, finalvict;
local int iact, iobj, maxact, maxobj, k, j, l, v;
local string act, obj, complete;
local bool bSelf;


P=DeusExPlayer(Frobber);

if(!bDisableFrob)
{
Super.Frob(frobber, frobwith);

if(objects[19] == "")
{
for(j=0;j<20;j++)
{
if(objects[j] == "" && j <= 19)
{
maxobj = j;
break;
}
}
}
else
{
maxobj = 20;
}

if(actions[19] == "")
{
for(k=0;k<20;k++)
{
if(actions[k] == "" && k <= 19)
{
maxact = k;
break;
}
}
}
else
{
maxact = 20;
}

//iact = Rand(maxact);
//iobj = Rand(maxobj);
foreach allactors(Class'deusexplayer', vict)
{
if(victarray[l] == none)
{
Victarray[l] = vict;
}
l++;
}

for(l=0;l<16;l++)
{
if(victarray[l] == None)
{
v = l;
break;
}
}

finalvict = victarray[Rand(v)];
act = actions[Rand(maxact)];
obj = objects[Rand(maxobj)];

if(finalvict == P)
{
bSelf=True;
}

if(FRand() < 0.5)
{
BroadcastMessage(finalvict.playerreplicationinfo.playername$" is "$obj);
}
else
{
if(!bSelf)
{
BroadcastMessage(p.playerreplicationinfo.playername@act@finalvict.playerreplicationinfo.playername@"with"@obj);
}
else
{
BroadcastMessage(p.playerreplicationinfo.playername@act@"themself with"@obj);
}
}

for(l=0;l<16;l++)
{
if(victarray[l] != None)
{
victarray[l] = None;
}
}

bDisableFrob=True;
SetTimer(frobDelay,False);
}

PreBeginPlay


local Insult ins;
local int i;

foreach AllActors(class'Insult', ins)
i++;

if(i > 3)
{
Log("Insulter destroyed due to limits. Max 3 due to spamming.");
Destroy();
}


Timer


bDisableFrob=False;




JPNWeaponBastardSword.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
reloadTime=0.000000
maxRange=64
AccurateRange=64
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bFallbackWeapon=True
mpHitDamage=20
mpBaseAccuracy=1.000000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-25.000000,Y=10.000000,Z=24.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.SwordFire'
SelectSound=Sound'DeusExSounds.Weapons.SwordSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.SwordHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.SwordHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.SwordHitSoft'
InventoryGroup=13
ItemName="Bastard Sword"
PlayerViewOffset=(X=25.000000,Y=-10.000000,Z=-24.000000)
PlayerViewMesh=LodMesh'DeusExItems.Sword'
PickupViewMesh=LodMesh'DeusExItems.SwordPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Sword3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconSword'
largeIcon=Texture'DeusExUI.Icons.LargeIconSword'
largeIconWidth=130
largeIconHeight=40
invSlotsX=3
Description="A rather nasty-looking sword."
beltDescription="BSWORD"
Texture=Texture'DeusExItems.Skins.ReflectionMapTex1'
Mesh=LodMesh'DeusExItems.SwordPickup'
CollisionRadius=26.000000
CollisionHeight=0.500000
Mass=20.000000

Fire (Float value)


local ThrownSword S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Defensive)
{
return;
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

cycleammo


switch Mode
{
case MODE_Normal:
Mode = Mode_Defensive;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Defending...");
break;

case Mode_Defensive:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode...");
break;

}




JPNWeaponBeamRifle.uc (extends DeusExWeapon)

LowAmmoWaterMark=12
GoverningSkill=Class'DeusEx.SkillWeaponHeavy'
reloadTime=2.000000
HitDamage=35
maxRange=24000
AccurateRange=14400
BaseAccuracy=0.600000
bCanHaveScope=True
bHasScope=True
ScopeFOV=20
bCanHaveLaser=True
bHasLaser=True
AreaOfEffect=AOE_Cone
bPenetrating=False
recoilStrength=0.300000
mpReloadTime=0.200000
mpHitDamage=50
mpBaseAccuracy=1.500000
mpAccurateRange=9000
mpMaxRange=10000
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
ReloadCount=0
bInstantHit=True
shakemag=50.000000
FireSound=Sound'PGAssets.Generic.kiss'
AltFireSound=Sound'DeusExSounds.Weapons.PlasmaRifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PlasmaRifleReload'
SelectSound=Sound'DeusExSounds.Weapons.PlasmaRifleSelect'
InventoryGroup=8
ItemName="Beam Rifle"
PlayerViewOffset=(X=18.000000,Z=-7.000000)
PlayerViewMesh=LodMesh'DeusExItems.PlasmaRifle'
PickupViewMesh=LodMesh'DeusExItems.PlasmaRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.PlasmaRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconPlasmaRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconPlasmaRifle'
largeIconWidth=203
largeIconHeight=66
invSlotsX=4
invSlotsY=2
Description="A weapon made with TOP-SECRET technology from labs."
beltDescription="BEAM"
Mesh=LodMesh'DeusExItems.PlasmaRiflePickup'
CollisionRadius=15.600000
CollisionHeight=5.200000
Mass=1.000000

DrawBeam (vector HitLocation, vector SmokeLocation, PlayerPawn P)


local BeamActorPink Smoke;
local Vector DVector;
local int NumPoints;
local rotator SmokeRotation;
local DeusExPlayer PlayerOwner;



PlayerOwner=DeusExPlayer(P);
DVector = HitLocation - SmokeLocation;
NumPoints = VSize(DVector)/64.0; // Draw a point every 4 feet.
if ( NumPoints < 1)
return;
SmokeRotation = rotator(DVector);
SmokeRotation.roll = Rand(6553595);

Smoke = Spawn(class'BeamActorPink',PlayerOwner,,SmokeLocation,SmokeRotation);
Smoke.MoveAmount = DVector/NumPoints;
Smoke.NumPuffs = NumPoints - 1;
Smoke.SetOwner(PlayerOwner);

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local DeusExWeapon W;
local JailPoint JP;
local bool bFoundJail;
local int Jails;
local int Decider;

super.ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);
DrawBeam(HitLocation, Owner.Location, PlayerPawn(Owner));

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




JailPoint.uc (extends Actor)

var() int JailSlot;
bHidden=True



JobScanner.uc (extends DeusExDecoration)

var DeusExPlayer assist1, assist2, assist3;
var(Job) string JobAlias, JobString;
var(Job) int Payoutcreds;
var(Job) int payoutdelay;
var(Job) string JobSkin;
var(Job) string JobInventory1;
var(Job) string JobInventory2;
var(Job) string JobInventory3;
var(Job) string JobInventory4;
JobAlias="DEFAULT JOB NAME"
Payoutcreds=15
payoutdelay=60
bInvincible=True
ItemName="Job Scanner"
bPushable=False
Physics=PHYS_None
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Buoyancy=12.000000

BeginPlay


SetTimer(payoutdelay,True);

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer p;
local JobScanner js;
local class SCR;
local class invy, invy2, invy3, invy4;
local inventory inv;


p = DeusExPlayer(Frobber);

foreach AllActors(class'JobScanner',js)
{
if(js != Self)
{
if(js.Assist1 == P || js.Assist2 == P || js.Assist3 == P)
{
P.ClientMessage("You already have a job elsewhere.");
return;
}
}
}

if(P == Assist1)
{
Assist1 = None;
P.ClientMessage(JobAlias$" job resigned.");
return;
}

if(P == Assist2)
{
Assist2 = None;
P.ClientMessage(JobAlias$" job resigned.");
return;
}

if(P == Assist3)
{
Assist3 = None;
P.ClientMessage(JobAlias$" job resigned.");
return;
}

if(Assist1 == None)
{
if(JobSkin != "")
P.ConsoleCommand("say /skin"@JobSkin);

if(JobInventory1 != "")
invy = class( DynamicLoadObject( JobInventory1, class'Class' ) );
if(JobInventory2 != "")
invy2 = class( DynamicLoadObject( JobInventory2, class'Class' ) );
if(JobInventory3 != "")
invy3 = class( DynamicLoadObject( JobInventory3, class'Class' ) );
if(JobInventory4 != "")
invy4 = class( DynamicLoadObject( JobInventory4, class'Class' ) );
if( invy !=None )
{
inv=Spawn(invy);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy2 !=None )
{
inv=Spawn(invy2);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy3 !=None )
{
inv=Spawn(invy3);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy4 !=None )
{
inv=Spawn(invy4);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}
Assist1 = P;
P.ClientMessage(JobAlias$" job joined.");
if(JobString != "")
{
P.ClientMessage(JobString);
}
return;
}

if(Assist2 == None)
{
if(JobSkin != "")
P.ConsoleCommand("say /skin"@JobSkin);
if(JobInventory1 != "")
invy = class( DynamicLoadObject( JobInventory1, class'Class' ) );
if(JobInventory2 != "")
invy2 = class( DynamicLoadObject( JobInventory2, class'Class' ) );
if(JobInventory3 != "")
invy3 = class( DynamicLoadObject( JobInventory3, class'Class' ) );
if(JobInventory4 != "")
invy4 = class( DynamicLoadObject( JobInventory4, class'Class' ) );
if( invy !=None )
{
inv=Spawn(invy);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy2 !=None )
{
inv=Spawn(invy2);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy3 !=None )
{
inv=Spawn(invy3);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy4 !=None )
{
inv=Spawn(invy4);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}
Assist2 = P;
P.ClientMessage(JobAlias$" job joined.");
if(JobString != "")
{
P.ClientMessage(JobString);
}
return;
}

if(Assist3 == None)
{
if(JobSkin != "")
P.ConsoleCommand("say /skin"@JobSkin);
if(JobInventory1 != "")
invy = class( DynamicLoadObject( JobInventory1, class'Class' ) );
if(JobInventory2 != "")
invy2 = class( DynamicLoadObject( JobInventory2, class'Class' ) );
if(JobInventory3 != "")
invy3 = class( DynamicLoadObject( JobInventory3, class'Class' ) );
if(JobInventory4 != "")
invy4 = class( DynamicLoadObject( JobInventory4, class'Class' ) );

if( invy !=None )
{
inv=Spawn(invy);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy2 !=None )
{
inv=Spawn(invy2);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy3 !=None )
{
inv=Spawn(invy3);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}

if( invy4 !=None )
{
inv=Spawn(invy4);
Inv.Frob(DeusExPlayer(Frobber),None);
inv.Destroy();
}
Assist3 = P;
P.ClientMessage(JobAlias$" job joined.");
if(JobString != "")
{
P.ClientMessage(JobString);
}
return;
}

Timer


local DeusExPlayer p;


if(Assist1 != None)
{
Assist1.Credits += Payoutcreds;
Assist1.ClientMessage("You have been paid by a job, "$JobAlias$". Income: "$Payoutcreds);
}
if(Assist2 != None)
{
Assist2.Credits += Payoutcreds;
Assist2.ClientMessage("You have been paid by a job, "$JobAlias$". Income: "$Payoutcreds);
}
if(Assist3 != None)
{
Assist3.Credits += Payoutcreds;
Assist3.ClientMessage("You have been paid by a job, "$JobAlias$". Income: "$Payoutcreds);
}




KnifeBomb.uc (extends ThrownProjectile)

fuseLength=1.000000
proxRadius=128.000000
spawnWeaponClass=Class'PartyStuff.WeaponKnifeBomb'
spawnAmmoClass=Class'PartyStuff.AmmoKB'
ItemName="Knife Bomb"
speed=1500.000000
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'
Mesh=LodMesh'DeusExItems.EMPGrenadePickup'

DamageRing


local Pawn apawn;
local float damageRadius;
local Vector dist;
local ProjectileGenerator Projy;


projy = Spawn(class'ProjectileGenerator',,,Self.Location);
projy.Lifespan=0.7;
projy.EjectSpeed=400;
projy.bRandomEject = True;
projy.ProjectileClass=class'PoisonKnife';
projy.NumPerSpawn=12;
if ( Level.NetMode != NM_Standalone )
{
damageRadius = (blastRadius / gradualHurtSteps) * gradualHurtCounter;

for ( apawn = Level.PawnList; apawn != None; apawn = apawn.nextPawn )
{
if ( apawn.IsA('DeusExPlayer') )
{
dist = apawn.Location - Location;
if ( VSize(dist) < damageRadius )
{
if ( gradualHurtCounter <= 2 )
{
if ( apawn.FastTrace( apawn.Location, Location ))
DeusExPlayer(apawn).myProjKiller = Self;
}
else
DeusExPlayer(apawn).myProjKiller = Self;
}
}
}
}
//DEUS_EX AMSD Ignore Line of Sight on the lowest radius check, only in multiplayer
HurtRadius
(
(2 * Damage) / gradualHurtSteps,
(blastRadius / gradualHurtSteps) * gradualHurtCounter,
damageType,
MomentumTransfer / gradualHurtSteps,
Location,
((gradualHurtCounter <= 2) && (Level.NetMode != NM_Standalone))
);

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)


local int i;
local SmokeTrail puff;
local TearGas gas;
local Fragment frag;
local ParticleGenerator gen;
local ProjectileGenerator projgen;
local vector loc;
local rotator rot;
local ExplosionLight light;
local DeusExDecal mark;
local AnimatedSprite expeffect;


rot.Pitch = 16384 + FRand() * 16384 - 8192;
rot.Yaw = FRand() * 65536;
rot.Roll = 0;

// don't draw damage art on destroyed movers
if (DeusExMover(Other) != None)
if (DeusExMover(Other).bDestroyed)
ExplosionDecal = None;

if (ExplosionDecal != None)
{
mark = DeusExDecal(Spawn(ExplosionDecal, Self,, HitLocation, Rotator(HitNormal)));
if (mark != None)
{
mark.DrawScale = FClamp(damage/30, 0.1, 3.0);
mark.ReattachDecal();
if (!bDamaged)
mark.RemoteRole = ROLE_None;
}
}

for (i=0; i {
if (FRand() < 0.9)
{
if (bDebris && bStuck)
{
frag = spawn(FragmentClass,,, HitLocation);
if (!bDamaged)
frag.RemoteRole = ROLE_None;
if (frag != None)
frag.CalcVelocity(VRand(), blastRadius);
}

loc = Location;
loc.X += FRand() * blastRadius - blastRadius * 0.5;
loc.Y += FRand() * blastRadius - blastRadius * 0.5;

if (damageType == 'Exploded')
{
light = Spawn(class'ExplosionLight',,, HitLocation);
if ((light != None) && (!bDamaged))
light.RemoteRole = ROLE_None;

if (FRand() < 0.5)
{
expeffect = spawn(class'ExplosionSmall',,, loc);
light.size = 2;
}
else
{
expeffect = spawn(class'ExplosionMedium',,, loc);
light.size = 4;
}
if ((expeffect != None) && (!bDamaged))
expeffect.RemoteRole = ROLE_None;
}
else if (damageType == 'EMP')
{
light = Spawn(class'ExplosionLight',,, HitLocation);
if (light != None)
{
if (!bDamaged)
light.RemoteRole = ROLE_None;
light.size = 6;
light.LightHue = 170;
light.LightSaturation = 64;
}
}
}
}

Timer


gradualHurtCounter++;
DamageRing();
if (gradualHurtCounter >= gradualHurtSteps)
Destroy();




LB.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=5.000000
mpBlastRadius=100.000000
bExplodes=True
blastRadius=128.000000
DamageType=Sabot
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Laser Bolt"
ItemArticle="a"
speed=1500.000000
MaxSpeed=1500.000000
Damage=5.000000
MomentumTransfer=5000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Texture=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExItems.Tracer'
DrawScale=3.000000
bUnlit=True
LightBrightness=200
LightHue=80
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;


// create a particle generator shooting out plasma spheres
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 2.0;
gen.checkTime = 0.10;
gen.frequency = 2.0;
gen.ejectSpeed = 100.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleLifeSpan = 14.00;
gen.particleTexture = FireTexture'Effects.Laser.LaserSpot1';
gen.LifeSpan = 18.5;
}

PostBeginPlay


Super.PostBeginPlay();

if ((Level.NetMode == NM_Standalone) || (Level.NetMode == NM_ListenServer))
SpawnPlasmaEffects();

PostNetBeginPlay


SpawnPlasmaEffects();

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;

SpawnPlasmaEffects


local Rotator rot;

rot = Rotation;
rot.Yaw -= 32768;

pGen2 = Spawn(class'ParticleGenerator', Self,, Location, rot);
if (pGen2 != None)
{
pGen2.RemoteRole = ROLE_None;
pGen2.particleTexture = FireTexture'Effects.Laser.LaserSpot1';
pGen2.particleDrawScale = 2.0;
pGen2.checkTime = 0.04;
pGen2.riseRate = 0.0;
pGen2.ejectSpeed = 100.0;
pGen2.particleLifeSpan = 4.0;
pGen2.bRandomEject = True;
pGen2.SetBase(Self);
}





LB2.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=5.000000
mpBlastRadius=100.000000
bExplodes=True
blastRadius=128.000000
DamageType=Sabot
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Beam Bolt"
ItemArticle="a"
speed=1500.000000
MaxSpeed=1500.000000
Damage=5.000000
MomentumTransfer=5000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Texture=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExItems.Tracer'
DrawScale=1.300000
bUnlit=True
LightBrightness=200
LightHue=80
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;




LB3.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=20.000000
mpBlastRadius=255.000000
bExplodes=True
blastRadius=128.000000
DamageType=exploded
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Heavy Bolt"
ItemArticle="a"
speed=1500.000000
MaxSpeed=1500.000000
Damage=5.000000
MomentumTransfer=5000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Texture=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExItems.Tracer'
DrawScale=3.500000
bUnlit=True
LightBrightness=200
LightHue=80
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

PostBeginPlay


Super.PostBeginPlay();

if ((Level.NetMode == NM_Standalone) || (Level.NetMode == NM_ListenServer))
SpawnPlasmaEffects();

PostNetBeginPlay


SpawnPlasmaEffects();

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;

SpawnPlasmaEffects


local Rotator rot;

rot = Rotation;
rot.Yaw -= 32768;

pGen2 = Spawn(class'ParticleGenerator', Self,, Location, rot);
if (pGen2 != None)
{
pGen2.RemoteRole = ROLE_None;
pGen2.particleTexture = FireTexture'Effects.Laser.LaserSpot1';
pGen2.particleDrawScale = 2.0;
pGen2.checkTime = 0.04;
pGen2.riseRate = 0.0;
pGen2.ejectSpeed = 100.0;
pGen2.particleLifeSpan = 4.0;
pGen2.bRandomEject = True;
pGen2.SetBase(Self);
}





LaserController.uc (extends DeusExWeapon)

var bool bFailure;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=61
ItemName="Laser Controller Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="LASER"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetName (DeusExPlayer P) -> string


return p.PlayerReplicationInfo.PlayerName;

LaserToggle


local LaserProj LP;

foreach allactors(class'LaserProj', LP)
{
LP.DisArm();
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local LaserProj LP;


if(LaserProj(Other) != None)
{
if(LaserProj(Other).bIsOn)
{
LaserProj(Other).Disarm();
}
else
{
//LaserProj(Other).Arm();
LaserProj(Other).SetTimer(1,False);
}
}

ScopeToggle


local LaserProj LP;

foreach allactors(class'LaserProj', LP)
{
//LP.Arm();
LP.SetTimer(1,False);
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




LaserProj.uc (extends ThrownProjectile)

var() bool bIsOn;
DrawScale=1.300000



LightBall.uc (extends GraySpit)

var float TotalTime;
var() float TimeLimit; //until when should I spawn?
TimeLimit=0.500000
Damage=0.000000
SpawnSound=None
DrawType=DT_Sprite
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4'
Mesh=None

Tick (float deltaTime)


local PlayerPawn Player;


TotalTime+=deltaTime;

if (TotalTime > TimeLimit)
{
Self.Destroy();
}




Lightshow.uc (extends ThrownProjectile)

fuseLength=1.000000
proxRadius=128.000000
spawnWeaponClass=Class'PartyStuff.WeaponLightshow'
spawnAmmoClass=Class'PartyStuff.AmmoLS'
ItemName="Lightshow"
speed=1500.000000
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'
Mesh=LodMesh'DeusExItems.EMPGrenadePickup'

DamageRing


local Pawn apawn;
local float damageRadius;
local Vector dist;
local ProjectileGenerator Projy;


projy = Spawn(class'ProjectileGenerator',,,Self.Location);
projy.Lifespan=1.5;
projy.EjectSpeed=250;
projy.bRandomEject = True;
projy.ProjectileClass=class'DartLight';
projy.NumPerSpawn=3;

if ( Level.NetMode != NM_Standalone )
{
damageRadius = (blastRadius / gradualHurtSteps) * gradualHurtCounter;

for ( apawn = Level.PawnList; apawn != None; apawn = apawn.nextPawn )
{
if ( apawn.IsA('DeusExPlayer') )
{
dist = apawn.Location - Location;
if ( VSize(dist) < damageRadius )
{
if ( gradualHurtCounter <= 2 )
{
if ( apawn.FastTrace( apawn.Location, Location ))
DeusExPlayer(apawn).myProjKiller = Self;
}
else
DeusExPlayer(apawn).myProjKiller = Self;
}
}
}
}
//DEUS_EX AMSD Ignore Line of Sight on the lowest radius check, only in multiplayer
HurtRadius
(
(2 * Damage) / gradualHurtSteps,
(blastRadius / gradualHurtSteps) * gradualHurtCounter,
damageType,
MomentumTransfer / gradualHurtSteps,
Location,
((gradualHurtCounter <= 2) && (Level.NetMode != NM_Standalone))
);

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)

Timer


gradualHurtCounter++;
DamageRing();
if (gradualHurtCounter >= gradualHurtSteps)
Destroy();




Lumination.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="Lum readiness:"
ItemName="Temporary Lumination Spawner"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Charge=8
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconVialAmbrosia'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="LUM"
Mesh=LodMesh'DeusExItems.VialAmbrosia'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local Luminous lum;
local Vector loc,X,Y,Z, v2;


lum = Spawn(class'Luminous', Player,, Location,);
if (lum != None)
{
v2 = Player.Location;
v2.Z += player.collisionHeight + 50;
lum.SetLocation(v2);
lum.LumOwner = Player;
lum.Lifespan = 120;
//lum.SetBase(Self);
}
Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




Luminous.uc (extends DeusExDecoration)

var Pawn LumOwner;
var int lLifespan;
bInvincible=True
bHighlight=False
ItemName="Lumination Point"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
AmbientGlow=255
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False
LightType=LT_Steady
LightBrightness=124
LightSaturation=255
LightRadius=40

ExplodeLum


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 256;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'FleshFragment',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
Destroy();

Tick (float deltatime)


local vector v2;


if (lumOwner != None)
{
if(lumOwner.Health <= 0)
ExplodeLum();
v2 = lumOwner.Location;
v2.Z += LumOwner.collisionHeight + 50;
SetLocation(v2);
}
else
ExplodeLum();




MM.uc (extends DeusExPickup)

var int rechargeAmount;
var int mpRechargeAmount;
var localized String msgRecharged;
var localized String RechargesLabel;
rechargeAmount=5
mpRechargeAmount=10
msgRecharged="Recharged %d points"
RechargesLabel="Recharges %d Energy Units"
maxCopies=20
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Medical Marijuana"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Flare'
PickupViewMesh=LodMesh'DeusExItems.Flare'
ThirdPersonMesh=LodMesh'DeusExItems.Flare'
Icon=Texture'DeusExUI.Icons.BeltIconFlare'
largeIcon=Texture'DeusExUI.Icons.LargeIconFlare'
largeIconWidth=24
largeIconHeight=38
Description="a spliff m7"
beltDescription="MARIJUANA"
Texture=Texture'CoreTexPaper.Paper.ClenWhitPaint_A'
Skin=Texture'CoreTexPaper.Paper.ClenWhitPaint_A'
Mesh=LodMesh'DeusExItems.Flare'
MultiSkins(0)=Texture'CoreTexPaper.Paper.ClenWhitPaint_A'
CollisionRadius=6.200000
CollisionHeight=1.200000
Mass=5.000000
Buoyancy=4.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player;
local vector loc;
local rotator rot;
local SmokeTrail puff;

Super.BeginState();

player = DeusExPlayer(Owner);
if (player != None)
{
player.ClientMessage(Sprintf(msgRecharged, rechargeAmount));

player.PlaySound(sound'MaleBurp', SLOT_None,,, 256);

player.Energy += rechargeAmount;
if (player.Energy > player.EnergyMax)
player.Energy = player.EnergyMax;
player.HealPlayer(15, False);

loc = Owner.Location;
rot = Owner.Rotation;
loc += 2.0 * Owner.CollisionRadius * vector(Player.ViewRotation);
loc.Z += Owner.CollisionHeight * 0.9;
puff = Spawn(class'SmokeTrail', Owner,, loc, rot);
if (puff != None)
{
puff.DrawScale = 1.0;
puff.origScale = puff.DrawScale;
}
PlaySound(sound'MaleCough');
}

UseOnce();

PostBeginPlay


Super.PostBeginPlay();
if (Level.NetMode != NM_Standalone)
rechargeAmount = mpRechargeAmount;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 20;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




MPCarcass.uc (extends DeusExCarcass)

CollisionRadius=40.000000

AddInventory (inventory NewItem) -> bool


local inventory Inv;

// Skip if already in the inventory.

for( Inv=Inventory; Inv!=None; Inv=Inv.Inventory )
if( Inv == NewItem )
return false;

// The item should not have been destroyed if we get here.
assert(NewItem!=None);

// Add to front of inventory chain.
NewItem.SetOwner(Self);
NewItem.Inventory = Inventory;
NewItem.InitialState = 'Idle2';
Inventory = NewItem;

return true;

AddReceivedItem (DeusExPlayer player, Inventory item, int count)


local DeusExWeapon w;
local Inventory altAmmo;


if (!bSearchMsgPrinted)
{
player.ClientMessage(msgSearching);
bSearchMsgPrinted = True;
}

DeusExRootWindow(player.rootWindow).hud.receivedItems.AddItem(item, 1);

// Make sure the object belt is updated
if (item.IsA('Ammo'))
player.UpdateAmmoBeltText(Ammo(item));
else
player.UpdateBeltText(item);

// Deny 20mm and WP rockets off of bodies in multiplayer
if ( Level.NetMode != NM_Standalone )
{
if ( item.IsA('WeaponAssaultGun') || item.IsA('WeaponGEPGun') )
{
w = DeusExWeapon(player.FindInventoryType(item.Class));
if (( Ammo20mm(w.AmmoType) != None ) || ( AmmoRocketWP(w.AmmoType) != None ))
{
altAmmo = Spawn( w.AmmoNames[0] );
DeusExAmmo(altAmmo).AmmoAmount = w.PickupAmmoCount;
altAmmo.Frob(player,None);
altAmmo.Destroy();
w.AmmoType.Destroy();
w.LoadAmmo( 0 );
}
}
}

ChunkUp (int Damage)


local int i;
local float size;
local Vector loc;
local FleshFragment chunk;


// gib the carcass
size = (CollisionRadius + CollisionHeight) / 2;
if (size > 10.0)
{
for (i=0; i {
loc.X = (1-2*FRand()) * CollisionRadius;
loc.Y = (1-2*FRand()) * CollisionRadius;
loc.Z = (1-2*FRand()) * CollisionHeight;
loc += Location;
chunk = spawn(class'FleshFragment', None,, loc);
if (chunk != None)
{
chunk.DrawScale = size / 25;
chunk.SetCollisionSize(chunk.CollisionRadius / chunk.DrawScale, chunk.CollisionHeight / chunk.DrawScale);
chunk.bFixedRotationDir = True;
chunk.RotationRate = RotRand(False);
}
}
}

Super.ChunkUp(Damage);

DeleteInventory (inventory Item) -> bool


local actor Link;

// If this item is in our inventory chain, unlink it.

for( Link = Self; Link!=None; Link=Link.Inventory )
{
if( Link.Inventory == Item )
{
Link.Inventory = Item.Inventory;
break;
}
}
Item.SetOwner(None);

Destroyed


if (flyGen != None)
{
flyGen.StopGenerator();
flyGen = None;
}

Super.Destroyed();

Frob (Actor Frobber, Inventory frobWith)


local Inventory item, nextItem, startItem;
local Pawn P;
local DeusExWeapon W;
local bool bFoundSomething;
local DeusExPlayer player;
local ammo AmmoType;
local bool bPickedItemUp;
local POVCorpse corpse;
local DeusExPickup invItem;
local int itemCount;


//log("DeusExCarcass::Frob()--------------------------------");

// Can we assume only the *PLAYER* would actually be frobbing carci?
player = DeusExPlayer(Frobber);

// No doublefrobbing in multiplayer.
if (bQueuedDestroy)
return;

// if we've already been searched, let the player pick us up
// don't pick up animal carcii
if (!bAnimalCarcass)
{
// DEUS_EX AMSD Since we don't have animations for carrying corpses, and since it has no real use in multiplayer,
// and since the PutInHand propagation doesn't just work, this is work we don't need to do.
// Were you to do it, you'd need to check the respawning issue, destroy the POVcorpse it creates and point to the
// one in inventory (like I did when giving the player starting inventory).
if ((Inventory == None) && (player != None) && (player.inHand == None) && (Level.NetMode == NM_Standalone))
{
if (!bInvincible)
{
corpse = Spawn(class'POVCorpse');
if (corpse != None)
{
// destroy the actual carcass and put the fake one
// in the player's hands
corpse.carcClassString = String(Class);
corpse.KillerAlliance = KillerAlliance;
corpse.KillerBindName = KillerBindName;
corpse.Alliance = Alliance;
corpse.bNotDead = bNotDead;
corpse.bEmitCarcass = bEmitCarcass;
corpse.CumulativeDamage = CumulativeDamage;
corpse.MaxDamage = MaxDamage;
corpse.CorpseItemName = itemName;
corpse.CarcassName = CarcassName;
corpse.Frob(player, None);
corpse.SetBase(player);
player.PutInHand(corpse);
bQueuedDestroy=True;
Destroy();
return;
}
}
}
}

bFoundSomething = False;
bSearchMsgPrinted = False;
P = Pawn(Frobber);
if (P != None)
{
// Make sure the "Received Items" display is cleared
// DEUS_EX AMSD Don't bother displaying in multiplayer. For propagation
// reasons it is a lot more of a hassle than it is worth.
if ( (player != None) && (Level.NetMode == NM_Standalone) )
DeusExRootWindow(player.rootWindow).hud.receivedItems.RemoveItems();

if (Inventory != None)
{

item = Inventory;
startItem = item;

do
{
// log("===>DeusExCarcass:item="$item );

nextItem = item.Inventory;

bPickedItemUp = False;

if (item.IsA('Ammo'))
{
// Only let the player pick up ammo that's already in a weapon
DeleteInventory(item);
item.Destroy();
item = None;
}
else if ( (item.IsA('DeusExWeapon')) )
{
// Any weapons have their ammo set to a random number of rounds (1-4)
// unless it's a grenade, in which case we only want to dole out one.
// DEUS_EX AMSD In multiplayer, give everything away.
W = DeusExWeapon(item);

// Grenades and LAMs always pickup 1
if (W.IsA('WeaponNanoVirusGrenade') ||
W.IsA('WeaponGasGrenade') ||
W.IsA('WeaponEMPGrenade') ||
W.IsA('WeaponLAM'))
W.PickupAmmoCount = 1;
else if (Level.NetMode == NM_Standalone)
W.PickupAmmoCount = Rand(4) + 1;
}

if (item != None)
{
bFoundSomething = True;

if (item.IsA('NanoKey'))
{
if (player != None)
{
player.PickupNanoKey(NanoKey(item));
AddReceivedItem(player, item, 1);
DeleteInventory(item);
item.Destroy();
item = None;
}
bPickedItemUp = True;
}
else if (item.IsA('Credits')) // I hate special cases
{
if (player != None)
{
AddReceivedItem(player, item, Credits(item).numCredits);
player.Credits += Credits(item).numCredits;
P.ClientMessage(Sprintf(Credits(item).msgCreditsAdded, Credits(item).numCredits));
DeleteInventory(item);
item.Destroy();
item = None;
}
bPickedItemUp = True;
}
else if (item.IsA('DeusExWeapon')) // I *really* hate special cases
{
// Okay, check to see if the player already has this weapon. If so,
// then just give the ammo and not the weapon. Otherwise give
// the weapon normally.
W = DeusExWeapon(player.FindInventoryType(item.Class));

// If the player already has this item in his inventory, piece of cake,
// we just give him the ammo. However, if the Weapon is *not* in the
// player's inventory, first check to see if there's room for it. If so,
// then we'll give it to him normally. If there's *NO* room, then we
// want to give the player the AMMO only (as if the player already had
// the weapon).

if ((W != None) || ((W == None) && (!player.FindInventorySlot(item, True))))
{
// Don't bother with this is there's no ammo
if ((Weapon(item).AmmoType != None) && (Weapon(item).AmmoType.AmmoAmount > 0))
{
AmmoType = Ammo(player.FindInventoryType(Weapon(item).AmmoName));

if ((AmmoType != None) && (AmmoType.AmmoAmount < AmmoType.MaxAmmo))
{
AmmoType.AddAmmo(Weapon(item).PickupAmmoCount);
AddReceivedItem(player, AmmoType, Weapon(item).PickupAmmoCount);

// Update the ammo display on the object belt
player.UpdateAmmoBeltText(AmmoType);

// if this is an illegal ammo type, use the weapon name to print the message
if (AmmoType.PickupViewMesh == Mesh'TestBox')
P.ClientMessage(item.PickupMessage @ item.itemArticle @ item.itemName, 'Pickup');
else
P.ClientMessage(AmmoType.PickupMessage @ AmmoType.itemArticle @ AmmoType.itemName, 'Pickup');

// Mark it as 0 to prevent it from being added twice
Weapon(item).AmmoType.AmmoAmount = 0;
}
}

// Print a message "Cannot pickup blah blah blah" if inventory is full
// and the player can't pickup this weapon, so the player at least knows
// if he empties some inventory he can get something potentially cooler
// than he already has.
if ((W == None) && (!player.FindInventorySlot(item, True)))
P.ClientMessage(Sprintf(Player.InventoryFull, item.itemName));

// Only destroy the weapon if the player already has it.
if (W != None)
{
// Destroy the weapon, baby!
DeleteInventory(item);
item.Destroy();
item = None;
}

bPickedItemUp = True;
}
}

else if (item.IsA('DeusExAmmo'))
{
if (DeusExAmmo(item).AmmoAmount == 0)
bPickedItemUp = True;
}

if (!bPickedItemUp)
{
// Special case if this is a DeusExPickup(), it can have multiple copies
// and the player already has it.

if ((item.IsA('DeusExPickup')) && (DeusExPickup(item).bCanHaveMultipleCopies) && (player.FindInventoryType(item.class) != None))
{
invItem = DeusExPickup(player.FindInventoryType(item.class));
itemCount = DeusExPickup(item).numCopies;

// Make sure the player doesn't have too many copies
if ((invItem.MaxCopies > 0) && (DeusExPickup(item).numCopies + invItem.numCopies > invItem.MaxCopies))
{
// Give the player the max #
if ((invItem.MaxCopies - invItem.numCopies) > 0)
{
itemCount = (invItem.MaxCopies - invItem.numCopies);
DeusExPickup(item).numCopies -= itemCount;
invItem.numCopies = invItem.MaxCopies;
P.ClientMessage(invItem.PickupMessage @ invItem.itemArticle @ invItem.itemName, 'Pickup');
AddReceivedItem(player, invItem, itemCount);
}
else
{
P.ClientMessage(Sprintf(msgCannotPickup, invItem.itemName));
}
}
else
{
invItem.numCopies += itemCount;
DeleteInventory(item);

P.ClientMessage(invItem.PickupMessage @ invItem.itemArticle @ invItem.itemName, 'Pickup');
AddReceivedItem(player, invItem, itemCount);
}
}
else
{
// check if the pawn is allowed to pick this up
if ((P.Inventory == None) || (Level.Game.PickupQuery(P, item)))
{
DeusExPlayer(P).FrobTarget = item;
if (DeusExPlayer(P).HandleItemPickup(Item) != False)
{
DeleteInventory(item);

// DEUS_EX AMSD Belt info isn't always getting cleaned up. Clean it up.
item.bInObjectBelt=False;
item.BeltPos=-1;

item.SpawnCopy(P);

// Show the item received in the ReceivedItems window and also
// display a line in the Log
AddReceivedItem(player, item, 1);

P.ClientMessage(Item.PickupMessage @ Item.itemArticle @ Item.itemName, 'Pickup');
PlaySound(Item.PickupSound);
}
}
else
{
DeleteInventory(item);
item.Destroy();
item = None;
}
}
}
}

item = nextItem;
}
until ((item == None) || (item == startItem));
}

//log(" bFoundSomething = " $ bFoundSomething);

if (!bFoundSomething)
P.ClientMessage(msgEmpty);
}

if ((player != None) && (Level.Netmode != NM_Standalone))
{
player.ClientMessage(Sprintf(msgRecharged, 25));

PlaySound(sound'BioElectricHiss', SLOT_None,,, 256);

player.Energy += 25;
if (player.Energy > player.EnergyMax)
player.Energy = player.EnergyMax;
}

Super.Frob(Frobber, frobWith);

if ((Level.Netmode != NM_Standalone) && (Player != None))
{
bQueuedDestroy = true;
Destroy();
}

HandleLanding


local Vector HitLocation, HitNormal, EndTrace;
local Actor hit;
local BloodPool pool;


if (!bNotDead)
{
// trace down about 20 feet if we're not in water
if (!Region.Zone.bWaterZone)
{
EndTrace = Location - vect(0,0,320);
hit = Trace(HitLocation, HitNormal, EndTrace, Location, False);
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
pool = None;
}
else
{
pool = spawn(class'BloodPool',,, HitLocation+HitNormal, Rotator(HitNormal));
}
if (pool != None)
pool.maxDrawScale = CollisionRadius / 40.0;
}

// alert NPCs that I'm food
AIStartEvent('Food', EAITYPE_Visual);
}

// by default, the collision radius is small so there won't be as
// many problems spawning carcii
// expand the collision radius back to where it's supposed to be
// don't change animal carcass collisions
if (!bAnimalCarcass)
SetCollisionSize(40.0, Default.CollisionHeight);

// alert NPCs that I'm really disgusting
if (bEmitCarcass)
AIStartEvent('Carcass', EAITYPE_Visual);

InitFor (Actor Other)


if (Other != None)
{
// set as unconscious or add the pawns name to the description
if (!bAnimalCarcass)
{
if (bNotDead)
itemName = msgNotDead;
else if (Other.IsA('ScriptedPawn'))
itemName = itemName $ " (" $ ScriptedPawn(Other).FamiliarName $ ")";
}

Mass = Other.Mass;
Buoyancy = Mass * 1.2;
MaxDamage = 0.8*Mass;
if (ScriptedPawn(Other) != None)
if (ScriptedPawn(Other).bBurnedToDeath)
CumulativeDamage = MaxDamage-1;

SetScaleGlow();

// Will this carcass spawn flies?
if (bAnimalCarcass)
{
itemName = msgAnimalCarcass;
if (FRand() < 0.2)
bGenerateFlies = true;
}
else if (!Other.IsA('Robot') && !bNotDead)
{
if (FRand() < 0.1)
bGenerateFlies = true;
bEmitCarcass = true;
}

if (Other.AnimSequence == 'DeathFront')
Mesh = Mesh2;

// set the instigator and tag information
if (Other.Instigator != None)
{
KillerBindName = Other.Instigator.BindName;
KillerAlliance = Other.Instigator.Alliance;
}
else
{
KillerBindName = Other.BindName;
KillerAlliance = '';
}
Tag = Other.Tag;
Alliance = Pawn(Other).Alliance;
CarcassName = Other.Name;
}

PostBeginPlay


local int i, j;
local Inventory inv;


bCollideWorld = true;

// Use the carcass name by default
CarcassName = Name;

// Add initial inventory items
for (i=0; i<8; i++)
{
if ((InitialInventory[i].inventory != None) && (InitialInventory[i].count > 0))
{
for (j=0; j {
inv = spawn(InitialInventory[i].inventory, self);
if (inv != None)
{
inv.bHidden = True;
inv.SetPhysics(PHYS_None);
AddInventory(inv);
}
}
}
}

// use the correct mesh
if (Region.Zone.bWaterZone)
{
Mesh = Mesh3;
bNotDead = False; // you will die in water every time
}

if (bAnimalCarcass)
itemName = msgAnimalCarcass;

MaxDamage = 0.8*Mass;
SetScaleGlow();

SetTimer(30.0, False);

Super.PostBeginPlay();

SetScaleGlow


local float pct;


// scaleglow based on damage
pct = FClamp(1.0-float(CumulativeDamage)/MaxDamage, 0.1, 1.0);
ScaleGlow = pct;

TakeDamage (int Damage, Pawn instigatedBy, Vector hitLocation, Vector momentum, name damageType)


local int i;


if (bInvincible)
return;

// only take "gib" damage from these damage types
if ((damageType == 'Shot') || (damageType == 'Sabot') || (damageType == 'Exploded') || (damageType == 'Munch') ||
(damageType == 'Tantalus'))
{
if ((damageType != 'Munch') && (damageType != 'Tantalus'))
{
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
}
else
{
spawn(class'BloodSpurt',,,HitLocation);
spawn(class'BloodDrop',,, HitLocation);
for (i=0; i spawn(class'BloodDrop',,, HitLocation);
}
}

// this section copied from Carcass::TakeDamage() and modified a little
if (!bDecorative)
{
bBobbing = false;
SetPhysics(PHYS_Falling);
}
if ((Physics == PHYS_None) && (Momentum.Z < 0))
Momentum.Z *= -1;
Velocity += 3 * momentum/(Mass + 200);
if (DamageType == 'Shot')
Damage *= 0.4;
CumulativeDamage += Damage;
if (CumulativeDamage >= MaxDamage)
ChunkUp(Damage);
if (bDecorative)
Velocity = vect(0,0,0);
}

SetScaleGlow();

Tick (float deltaSeconds)


if (!bInit)
{
bInit = true;
if (bEmitCarcass)
AIStartEvent('Carcass', EAITYPE_Visual);
}
Super.Tick(deltaSeconds);

Timer


if (bGenerateFlies)
{
flyGen = Spawn(Class'FlyGenerator', , , Location, Rotation);
if (flyGen != None)
flyGen.SetBase(self);
}

ZoneChange (ZoneInfo NewZone)


Super.ZoneChange(NewZone);

// use the correct mesh for water
if (NewZone.bWaterZone)
Mesh = Mesh3;




MPLaserEmitter.uc (extends Effects)

var LaserSpot spot[2]; // max of 2 reflections
var bool bIsOn;
var actor HitActor;
var bool bFrozen; // are we out of the player's sight?
var bool bRandomBeam;
var bool bBlueBeam; // is this beam blue?
var bool bHiddenBeam; // is this beam hidden?
var LaserProxy proxy;
var bool bInitialized;
bBlueBeam=True
bAlwaysRelevant=True
SoundRadius=16
AmbientSound=Sound'Ambient.Ambient.Laser'
CollisionRadius=40.000000
CollisionHeight=40.000000
NetUpdateFrequency=15.000000
RenderIteratorClass=Class'PartyStuff.MPLaserIterator'

CalcTrace (float deltaTime)


local vector StartTrace, EndTrace, HitLocation, HitNormal, Reflection;
local actor target;
local int i, texFlags;
local name texName, texGroup;


StartTrace = Location;
EndTrace = Location + 5000 * vector(Rotation);
HitActor = None;

// trace the path of the reflected beam and draw points at each hit
for (i=0; i {
foreach TraceTexture(class'Actor', target, texName, texGroup, texFlags, HitLocation, HitNormal, EndTrace, StartTrace)
{
if ((target.DrawType == DT_None) || target.bHidden)
{
// do nothing - keep on tracing
}
else if ((target == Level) || target.IsA('Mover'))
{
break;
}
else
{
HitActor = target;
break;
}
}

if(spot[i] != none)
{
Reflection = MirrorVectorByNormal(Normal(spot[i].location - StartTrace), HitNormal);
StartTrace = HitLocation + HitNormal;
EndTrace = Reflection * 10000;
}

if(Level.NetMode != NM_DedicatedServer)
{
//GetPlayerPawn().ClientMessage("calcing:"@deltaTime);
// draw first beam
if (i == 0)
{
// log("drawing at rot:"@Rotation);
if (MPLaserIterator(RenderInterface) != None)
MPLaserIterator(RenderInterface).AddBeam(i, Location, rotator(spot[i].location - Location), VSize(Location - spot[i].location));
}
else
{
if (MPLaserIterator(RenderInterface) != None)
MPLaserIterator(RenderInterface).AddBeam(i, StartTrace - HitNormal, Rotator(Reflection), VSize(StartTrace - spot[i].location - HitNormal));
}
}
if(level.netmode != NM_Client)
{
if (spot[i] == None)
{
spot[i] = Spawn(class'LaserSpot', Self, , HitLocation, Rotator(HitNormal));
spot[i].RemoteRole=ROLE_DumbProxy;
spot[i].bAlwaysRelevant=true;
spot[i].NetUpdateFrequency=10;
if (bBlueBeam && (spot[i] != None))
spot[i].Skin = Texture'LaserSpot2';
}
else
{
// Broadcastmessage("oldloc="$spot[i].location$", newloc="$hitlocation);
spot[i].SetLocation(HitLocation);
spot[i].SetRotation(Rotator(HitNormal));
}
}
// don't reflect any more if we don't hit a mirror
// 0x08000000 is the PF_Mirrored flag from UnObj.h
if ((texFlags & 0x08000000) == 0)
{
// kill all of the other spots after this one
if (i < ArrayCount(spot)-1)
{
do
{
i++;
if(level.netmode != NM_Client)
{
if (spot[i] != None)
{
spot[i].Destroy();
spot[i] = None;
}
}
else if(Level.NetMode != NM_DedicatedServer)
if (MPLaserIterator(RenderInterface) != None)
MPLaserIterator(RenderInterface).DeleteBeam(i);

} until (i>=ArrayCount(spot)-1);
}

return;
}


}

Destroyed


TurnOff();

if (proxy != None)
{
proxy.Destroy();
proxy = None;
}

Super.Destroyed();

PostBeginPlay


Super.PostBeginPlay();
if (proxy == None && level.netMode != NM_Client)
{
proxy = Spawn(class'LaserProxy',,, Location, Rotation);
if(proxy != none)
{
proxy.bAlwaysRelevant=bAlwaysRelevant;
proxy.NetUpdateFrequency=NetUpdateFrequency;
}
//proxy.Mesh=LodMesh'DeusExItems.NanoSwordPickup';
if(bBlueBeam)
SetBlueBeam();
//broadcastmessage("postbeginplay server("$level.netmode$").. proxy:"@proxy@" proxyrot:"@proxy.rotation@" skin:"@proxy.Skin);
}
if(level.netMode != NM_DedicatedServer)
SetTimer(0.5,false);
// log("pbp");

SetBlueBeam


bBlueBeam = True;
if (proxy != None)
proxy.Skin = Texture'LaserBeam2';

SetHiddenBeam (bool bHide)


bHiddenBeam = bHide;
if (proxy != None)
proxy.bHidden = bHide;

Tick (float deltaTime)


local DeusExPlayer player;
local int i;


// check for visibility
player = DeusExPlayer(GetPlayerPawn());

if (bIsOn)
{
// if we are a weapon's laser sight, do not freeze us
if ((Owner != None) && (Owner.IsA('Weapon') || Owner.IsA('ScriptedPawn')))
bFrozen = False;
else if (proxy != None)
{
// if we are close, say 60 feet
if (proxy.DistanceFromPlayer < 960)
bFrozen = False;
else
{
// can the player see the generator?
if (proxy.LastRendered() <= 2.0)
bFrozen = False;
else
bFrozen = True;
}
}
else
bFrozen = True;

if (bFrozen)
return;


CalcTrace(deltaTime);
}

Timer


if(level.NetMode != NM_DedicatedServer)
{
//GetPlayerPawn().ClientMessage("timer called clientside("$level.netmode$").. proxy:"@proxy@" proxyrot:"@proxy.rotation@" skin:"@proxy.Skin);
if(Proxy != none)
{
//GetPlayerPawn().ClientMessage("PROXY FOUND - setting old rotation ("$Rotation$") to new rotation:"@proxy.Rotation);
SetRotation(proxy.Rotation);
//GetPlayerPawn().ClientMessage("NEW ROTATION:"@Rotation);
bInitialized=true;

}
else
SetTimer(0.5,false);
}
// log("setting rotation to"@owner.Rotation);
// create our proxy laser beam


TurnOff


local int i;


if (bIsOn)
{
for (i=0; i if (spot[i] != None)
{
spot[i].Destroy();
spot[i] = None;
}

HitActor = None;
bIsOn = False;

if (!bHiddenBeam)
{
proxy.DrawType=DT_None;
proxy.bHidden = True;
}
SoundVolume = 0;
}

TurnOn


if (!bIsOn)
{
bIsOn = True;
HitActor = None;
//CalcTrace(0.0);
if (!bHiddenBeam)
{
proxy.DrawType=DT_Mesh;
proxy.bHidden = False;
}
SoundVolume = 45;
}




MPLaserIterator.uc (extends LaserIterator)

Init (PlayerPawn Camera)


local MPLaserEmitter Owner;
local int i;


Owner = MPLaserEmitter(Outer);
if (Owner != None)
{
MaxItems = 0;
nextItem = 0;
prevLoc = Owner.Location;
prevRand = vect(0,0,0);
savedLoc = Owner.Location;
savedRot = Owner.Rotation;
proxy = Owner.proxy;
bRandomBeam = Owner.bRandomBeam;
if (!Owner.bFrozen && !Owner.bHiddenBeam)
{
// set MaxItems based on length of beams
for (i=0; i if (Beams[i].bActive)
MaxItems += Beams[i].numSegments;

// make sure we render the last one
if (MaxItems > 0)
MaxItems++;
}
}

getBeam (int i) -> sBeam


return beams[i];




MPLaserTrigger.uc (extends Trigger)

var MPLaserEmitter emitter;
var() bool bIsOn;
var() bool bNoAlarm; // if True, does NOT sound alarm
var actor LastHitActor;
var bool bConfused; // used when hit by EMP
var float confusionTimer; // how long until trigger resumes normal operation
var() float confusionDuration; // how long does EMP hit last?
var int HitPoints;
var int minDamageThreshold;
var float lastAlarmTime; // last time the alarm was sounded
var int alarmTimeout; // how long before the alarm silences itself
var actor triggerActor; // actor which last triggered the alarm
var vector actorLocation; // last known location of actor that triggered alarm
var() bool bDisableAtStart; //Added to provide a way to start the lasers disabled
bIsOn=True
confusionDuration=10.000000
HitPoints=50
minDamageThreshold=50
alarmTimeout=30
bHidden=False
InitialState=OtherTriggerToggles
bDirectional=True
Mesh=LodMesh'DeusExDeco.LaserEmitter'
CollisionRadius=2.500000
CollisionHeight=2.500000

BeginAlarm


AmbientSound = Sound'Klaxon2';
SoundVolume = 128;
SoundRadius = 64;
lastAlarmTime = Level.TimeSeconds;
AIStartEvent('Alarm', EAITYPE_Audio, SoundVolume/255.0, 25*(SoundRadius+1));

// make sure we can't go into stasis while we're alarming
bStasis = False;

BeginPlay


Super.BeginPlay();

LastHitActor = None;
emitter = Spawn(class'MPLaserEmitter',self,,location,rotation);

if (emitter != None)
{
emitter.TurnOn();
bIsOn = True;

// turn off the sound if we should
if (SoundVolume == 0)
emitter.AmbientSound = None;
}
else
bIsOn = False;

if(bDisableAtStart)
{
Trigger(None, None);
}

Destroyed


if (emitter != None)
{
emitter.Destroy();
emitter = None;
}

Super.Destroyed();

EndAlarm


AmbientSound = None;
lastAlarmTime = 0;
AIEndEvent('Alarm', EAITYPE_Audio);

// reset our stasis info
bStasis = Default.bStasis;

ProcessTriggers (Actor Inst)


local Actor A;


foreach AllActors(class'Actor', A, Event)
{
A.Trigger(Self, Pawn(Inst));
}

TakeDamage (int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType)


local MetalFragment frag;


if ((DamageType == 'EMP') || (DamageType == 'Exploded') || (DamageType == 'Shot'))
{
confusionTimer = 0;
if (!bConfused)
{
bConfused = True;
PlaySound(sound'EMPZap', SLOT_None,,, 1280);
}
}
/*else if ((DamageType == 'Exploded') || (DamageType == 'Shot'))
{
if (Damage >= minDamageThreshold)
HitPoints -= Damage;

if (HitPoints <= 0)
{
frag = Spawn(class'MetalFragment', Owner);
if (frag != None)
{
frag.Instigator = EventInstigator;
frag.CalcVelocity(Momentum,0);
frag.DrawScale = 0.5*FRand();
frag.Skin = GetMeshTexture();
}

Destroy();
}
}*/

Tick (float deltaTime)


local Actor A;
local AdaptiveArmor armor;
local bool bTrigger;


if (emitter != None)
{
// shut off the alarm if the timeout has expired
if (lastAlarmTime != 0)
{
if (Level.TimeSeconds - lastAlarmTime >= alarmTimeout)
EndAlarm();
}

// if we've been EMP'ed, act confused
if (bConfused && bIsOn)
{
confusionTimer += deltaTime;

// randomly turn on/off the beam
if (FRand() > 0.95)
emitter.TurnOn();
else
emitter.TurnOff();

if (confusionTimer > confusionDuration)
{
bConfused = False;
confusionTimer = 0;
emitter.TurnOn();
}

return;
}

//emitter.SetLocation(Location);
//emitter.SetRotation(Rotation);

if (!bNoAlarm)
{
if ((emitter.HitActor != None) && (LastHitActor != emitter.HitActor))
{
// TT_PlayerProximity actually works with decorations, too
if (IsRelevant(emitter.HitActor) ||
((TriggerType == TT_PlayerProximity) && emitter.HitActor.IsA('Decoration')))
{
bTrigger = True;

if (emitter.HitActor.IsA('DeusExPlayer'))
{
// check for adaptive armor - makes the player invisible
foreach AllActors(class'AdaptiveArmor', armor)
if ((armor.Owner == emitter.HitActor) && armor.bActive)
{
bTrigger = False;
break;
}
}

if (bTrigger)
{
// now, the trigger sounds its own alarm
if (AmbientSound == None)
{
triggerActor = emitter.HitActor;
actorLocation = emitter.HitActor.Location - vect(0,0,1)*(emitter.HitActor.CollisionHeight-1);
BeginAlarm();
ProcessTriggers(emitter.HitActor);
}

// play "beam broken" sound
PlaySound(sound'Beep2',,,, 1280, 3.0);
}
}
}
}

LastHitActor = emitter.HitActor;
}

Touch (Actor Other)


// does nothing when touched

Trigger (Actor Other, Pawn Instigator)


if (bConfused)
return;

if (emitter != None)
{
if (!bIsOn)
{
emitter.TurnOn();
bIsOn = True;
LastHitActor = None;
MultiSkins[1] = Texture'LaserSpot1';
}
else
{
emitter.TurnOff();
bIsOn = False;
LastHitActor = None;
MultiSkins[1] = Texture'BlackMaskTex';
EndAlarm();
}
}

Super.Trigger(Other, Instigator);

UnTrigger (Actor Other, Pawn Instigator)




MPParticleProxy.uc (extends Actor)

var ParticleGenerator pg;
var() bool bParticlesUnlit;
var() bool bTranslucent;
var() float particleDrawScale;
var() float checkTime;
var() float frequency;
var() float riseRate;
var() float ejectSpeed;
var() float particleLifeSpan;
var() bool bRandomEject;
var() float numPerSpawn;
var() texture particleTexture;
bParticlesUnlit=True
bTranslucent=True
particleDrawScale=0.050000
checkTime=0.250000
Frequency=0.800000
RiseRate=5.000000
ejectSpeed=10.000000
particleLifeSpan=2.000000
bRandomEject=True
numPerSpawn=2.000000
particleTexture=FireTexture'Effects.Smoke.SmokePuff1'
bHidden=True

Destroyed


if (pg != None)
pg.DelayedDestroy();

Super.Destroyed();

PostBeginPlay


local ParticleGenerator ToxicDrip;

Super.PostBeginPlay();

ToxicDrip = Spawn(class'ParticleGenerator', Self,, Location, rot(16384,0,0));
if (ToxicDrip != None)
{
ToxicDrip.bParticlesUnlit = bParticlesUnlit;
ToxicDrip.bTranslucent = bTranslucent;
ToxicDrip.particleDrawScale = particleDrawScale;
ToxicDrip.checkTime = checkTime;
ToxicDrip.frequency = frequency;
ToxicDrip.riseRate = riseRate;
ToxicDrip.ejectSpeed = ejectSpeed;
ToxicDrip.particleLifeSpan = particleLifeSpan;
ToxicDrip.bRandomEject = bRandomEject;
ToxicDrip.numPerSpawn = numPerSpawn;
ToxicDrip.particleTexture = particleTexture;
ToxicDrip.SetBase(Self);
pg = ToxicDrip;
}




MSGR.uc (extends DeusExDecoration)

var bool bNew, bReturning;
var(MSGR) string myMSG, MSGSender, MSGTimestamp;
var bool bSentByPlayer;
myMSG="DEFAULT MSG - REPORT AS BUG"
msgsender="NO SENDER DATA"
MSGTimestamp="NO:TIME"
bInvincible=True
ItemName="Player Created Message"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Sprite=Texture'DeusExUI.UserInterface.LogIcon'
Texture=Texture'DeusExUI.UserInterface.LogIcon'
Skin=Texture'DeusExUI.UserInterface.LogIcon'
CollisionRadius=25.200001
CollisionHeight=25.000000
bBlockPlayers=False

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;


/*if(bNew)
{
bNew=False;
LightType=LT_None;
}*/

P = DeusExPlayer(Frobber);
// P.ClientMessage("|P3"$MSGSender$"|P3 @ "$MSGTimestamp);
if(bSentByPlayer)
{
P.ClientMessage("|P3["$MSGSender$"|P3 @ "$MSGTimestamp$"]");
P.ClientMessage("|P1"$myMsg);
}
else
{
if(MSGSender != "")
P.ClientMessage("|P3["$MSGSender$"|P3]");
P.ClientMessage("|P1"$myMsg);
}

if(P.bIsCrouching && P.bAdmin && bSentByPlayer)
{
P.ClientMessage("Message deleted.");
Destroy();
}

Super.Frob(frobber, frobwith);

Tick (float v)


/*if(bNew && LightType != LT_Steady)
{
LightHue=0;
LightRadius=18;
LightSaturation=175;
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
}*/

if(!bReturning)
{
Drawscale+=0.02;
if(Drawscale >= 1.5)
{
bReturning=True;
}
}
else
{
Drawscale-=0.02;
if(Drawscale <= 1.0)
{
bReturning=False;
}
}





MagicRing.uc (extends SizableEffects)

LifeSpan=1.500000
Skin=Texture'PGAssets.Skins.YellowRay'
Mesh=LodMesh'DeusExItems.FlatFX'



var MenuUIActionButtonWindow SendButton, exitButton;
var MenuUIEditWindow editCommand, editPassword;
var MenuUIHeaderWindow winText;
var localized string exitbuttontext, passwordlabel, sendbuttontext, commandlabel;
var DeusExPlayer _windowOwner;
var PSComputer Ac;
var PSComputerReplicationActor Mastah;
var localized string Username;
var string Password;
var bool bRem;
var MenuUIMessageBoxWindow AlertWin;
exitbuttontext="Exit"
PasswordLabel="Password"
sendbuttontext="Send "
commandlabel="Command"
ClientWidth=600
ClientHeight=150
clientTextures(0)=Texture'DeusExUI.UserInterface.MenuMessageBoxBackground_1'
clientTextures(1)=Texture'DeusExUI.UserInterface.MenuMessageBoxBackground_2'
textureRows=3
textureCols=2
bUsesHelpWindow=False

local MenuUILabelWindow newLabel;


newLabel = MenuUILabelWindow(winParent.NewChild(Class'MenuUILabelWindow'));

newLabel.SetPos(posX, posY);
newLabel.SetText(strLabel);
newLabel.SetWordWrap(True);
newLabel.SetMinWidth(300);
newLabel.SetFont(Font'FontMenuSmall_DS');
return newLabel;


winText = CreateMenuHeader(21, 13, "", winClient);
winText.SetTextAlignments(HALIGN_Center, VALIGN_Center);
winText.SetFont(Font'FontMenuHeaders_DS');
winText.SetWindowAlignments(HALIGN_Full, VALIGN_Full, 20, 14);


local float i;

i = ClientWidth;
i += Len(Str)*10;
SetTitle(title);
CreateMenuLabelX(10, 22, str, winClient);
SetSize(ClientWidth,ClientHeight);
AskParentForReconfigure();


local Window W;


Super.InitWindow();
CreateTextWindow();
//SendButton = winButtonBar.AddButton(sendButtonText, HALIGN_Right);
// exitButton = winButtonBar.AddButton(exitButtonText, HALIGN_Right);

winClient.SetBackground(Texture'DeusExUI.MaskTexture');
winClient.SetBackgroundStyle(DSTY_Modulated);

W = winClient.NewChild(Class'Window');
W.SetSize(ClientWidth, ClientHeight);
W.SetBackground(Texture'DeusExDeco.BlackMaskTex');//(Texture'DeusExUI.MaskTexture');
W.SetBackgroundStyle(DSTY_normal); //modulated
W.Lower();


if (key == IK_Enter)// &&//(iState == IST_Release))
{
return False;
}
else
{
return false;
}


winText.SetText(msgText);

AskParentForReconfigure();


local bool bHandled;


switch( key )
{
case IK_Enter:
bHandled = True;
break;
}

return bHandled;




Mercury.uc (extends OutdoorThings)

bStatic=False
Physics=PHYS_Rotating
Texture=Texture'DeusExDeco.Skins.DXLogoTex1'
Mesh=LodMesh'DeusExDeco.Earth'
DrawScale=2.250000
bMeshEnviroMap=True
CollisionRadius=123.639999
CollisionHeight=125.699997
bCollideActors=False
bCollideWorld=False
bBlockActors=False
bBlockPlayers=False
bFixedRotationDir=True
Mass=5000.000000
Buoyancy=500.000000
RotationRate=(Yaw=8192)



MomsKnife.uc (extends DeusExProjectile)

var float mpDamage;
var int mpAccurateRange;
var int mpMaxRange;
mpDamage=90.000000
mpAccurateRange=640
mpMaxRange=640
bBlood=True
bStickToWall=True
DamageType=shot
AccurateRange=640
maxRange=1280
bIgnoresNanoDefense=True
ItemName="Knife"
ItemArticle="Mom's"
speed=500.000000
MaxSpeed=500.000000
Damage=100.000000
MomentumTransfer=1000
ImpactSound=Sound'DeusExSounds.Generic.BulletHitFlesh'
Mesh=LodMesh'DeusExItems.CombatKnifePickup'
CollisionRadius=12.650000
CollisionHeight=0.800000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
Damage = mpDamage;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

Tick (float deltaTime)


local Rotator rot;


if (bStuck)
return;

Super.Tick(deltaTime);

if (Level.Netmode != NM_DedicatedServer)
{
rot = Rotation;
rot.Roll += 16384;
rot.Pitch -= 13384;
SetRotation(rot);
}




MomsKnifeRespawner.uc (extends PGActors)

var PlayerPawn Giver;

SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass,,,addTarget.Location);
anItem.SpawnCopy(addTarget);
anItem.Destroy();
/*anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);*/

Timer


SilentAdd(class'WeaponMomsKnife', DeusExPlayer(Giver));
destroy();




MusicBotWindow.uc (extends PlayMusicWindow)

DestroyWindow

InitWindow


Super.InitWindow();

SetTitle("Radio");
EnableWindow(True);
Show(True);

PlaySong (int rowID)


local String songName;
local Int songSection;


if (btnAmbient.GetToggle())
songSection = 0;
else if (btnCombat.GetToggle())
songSection = 3;
else if (btnConversation.GetToggle())
songSection = 4;
else if (btnOutro.GetToggle())
songSection = 5;
else if (btnDying.GetToggle())
songSection = 1;

songName = lstSongs.GetField(rowID, 1);
player.ConsoleCommand("Set LevelInfo Song None");

player.PlayMusic(songName, songSection);




MusicMemory.uc (extends PGActors)

var DeusExPlayer Watcher;
var music CurrentSong;
var bool bMMLocked;

PostBeginPlay


SetTimer(5,True);

Timer


if(Watcher == None)
Destroy();




MusicPoint.uc (extends DeusExDecoration)

var int PlaySlot;
var() music myTrackList[10];
var() EMusicTransition Transition;
var() byte SongSection;
var() byte CdTrack;
var() bool bAffectAllPlayers;
Transition=MTRAN_Fade
CdTrack=255
bAffectAllPlayers=True
bInvincible=True
ItemName="Music Point"
bPushable=False
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex8'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex8'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False

BeginPlay


PlaySlot = 0;

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;
local Pawn A;


if( bAffectAllPlayers )
{
PlaySlot++;
if(myTrackList[PlaySlot] == None || PlaySlot >= Arraycount(myTrackList))
{
PlaySlot=0;
}
BroadcastMessage(DeusExPlayer(Frobber).PlayerReplicationInfo.PlayerName$"("$DeusExPlayer(Frobber).PlayerReplicationInfo.PlayerID$"): Now playing track: "$Left(string(myTrackList[PlaySlot]), InStr(string(myTrackList[PlaySlot]), ".")));
foreach AllActors(class'DeusExPlayer',P)
if(!mmIsPlaying( myTrackList[PlaySlot], P) && !mmLocked(P))
MemorizeMusic(myTrackList[PlaySlot], P);

//P.ClientSetMusic( myTrackList[PlaySlot], SongSection, CdTrack, Transition );
}
else
{
P = DeusExPlayer(Frobber);
if( P==None )
return;
PlaySlot++;
if(myTrackList[PlaySlot] == None || PlaySlot > Arraycount(myTrackList))
{ //IT DOESNT RESET
PlaySlot=0;
}
// Go to music.
P.ClientSetMusic( myTrackList[PlaySlot], SongSection, CdTrack, Transition );
if(!mmIsPlaying( myTrackList[PlaySlot], P))
MemorizeMusic(myTrackList[PlaySlot], P);
P.ClientMessage("Now playing track: "$Left(string(myTrackList[PlaySlot]), InStr(string(myTrackList[PlaySlot]), ".")));

MMLocked (DeusExPlayer Them) -> bool


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
return MM.bMMLocked;
}
}

MemorizeMusic (music This, DeusExPlayer Them)


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
MM.CurrentSong = This;
//Log("Track memorized."@This@them.playerreplicationinfo.playername);
Them.ClientSetMusic( This, SongSection, CdTrack, Transition );
}
}

mmIsPlaying (music This, DeusExPlayer Them) -> bool


local MusicMemory MM;
local bool bFound;


foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
bFound=True;
if(MM.CurrentSong == This)
return true;
}
}

if(!bFound)
{
MM = Spawn(class'MusicMemory');
MM.Watcher=Them;
Log("New music memory."@This@them.playerreplicationinfo.playername);
}




Nail.uc (extends DeusExProjectile)

var float mpDamage;
mpDamage=30.000000
bBlood=True
bStickToWall=True
DamageType=shot
bIgnoresNanoDefense=True
ItemName="Nail Gun"
ItemArticle="a"
speed=5000.000000
MaxSpeed=7000.000000
Damage=15.000000
MomentumTransfer=10000
ImpactSound=Sound'DeusExSounds.Generic.BulletHitFlesh'
Texture=Texture'PGAssets.Skins.NailTex4'
Skin=Texture'PGAssets.Skins.NailTex4'
Mesh=LodMesh'DeusExItems.Dart'
CollisionRadius=3.000000
CollisionHeight=0.500000

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
Damage = mpDamage;




Nail2.uc (extends DeusExProjectile)

var float mpDamage;
mpDamage=3.000000
bBlood=True
bStickToWall=True
DamageType=shot
bIgnoresNanoDefense=True
ItemName="Nail Gun"
ItemArticle="a"
speed=5000.000000
MaxSpeed=7000.000000
Damage=4.000000
MomentumTransfer=10000
ImpactSound=Sound'DeusExSounds.Generic.BulletHitFlesh'
Texture=Texture'PGAssets.Skins.NailTex4'
Skin=Texture'PGAssets.Skins.NailTex4'
Mesh=LodMesh'DeusExItems.Dart'
CollisionRadius=3.000000
CollisionHeight=0.500000

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
Damage = mpDamage;




Nail3.uc (extends DeusExProjectile)

var float mpDamage;
mpDamage=30.000000
bBlood=True
bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Nail Gun"
ItemArticle="a"
speed=5000.000000
MaxSpeed=7000.000000
Damage=15.000000
MomentumTransfer=10000
ImpactSound=Sound'DeusExSounds.Generic.BulletHitFlesh'
Texture=Texture'PGAssets.Skins.NailTex3'
Skin=Texture'PGAssets.Skins.NailTex3'
Mesh=LodMesh'DeusExItems.Dart'
DrawScale=2.000000
CollisionRadius=3.000000
CollisionHeight=0.500000

BeginPlay


spawn(class'SmokeTrail',,, Location);

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
Damage = mpDamage;




NanoArmour.uc (extends PGArmour)

Dur=10000
Def=10
ItemName="Nano Armour"
beltDescription="NANO"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




NanoCompactor.uc (extends DeusExWeapon)

var() class StoredActor, rstoredactor;
var() rotator storedRotation;
var bool bRotLock;
var string storedstr;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=131
ItemName="Nano Compactor Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="COMPACTOR"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetDisplayString (Actor P) -> string


if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

LaserToggle


if(StoredActor != None)
{
bRotLock = !bRotLock;
DeusExPlayer(Owner).ClientMessage("rotation Lock: "$bRotLock);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
storedstr = "none";
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;
local Actor a;

if(StoredActor == None)
{
if(Other.isa('ScriptedPawn') || Other.isa('Decoration'))
{
if(Other.isa('HackableDevices') || other.isa('Switch1') || other.isa('Switch2'))
{
DeusExPlayer(Owner).ClientMessage("This object can't be moved.");
return;
}
StoredActor = Other.Class;
rStoredActor = StoredActor;
storedstr = GetDisplayString(Other);
StoredRotation = Other.Rotation;
DeusExPlayer(Owner).ClientMessage("Stored: "$GetDisplayString(Other));
DeusExPlayer(Owner).ClientMessage("Fire now spawns. Laser to toggle rotation.");
Other.Destroy();
return;
}
}
else
{
if(bRotLock)
{
a = Spawn(StoredActor,,,HitLocation, StoredRotation);
if(a!=none)
{
DeusExPlayer(Owner).ClientMessage("Object spawned.");
StoredActor=None;
rStoredActor = StoredActor;
storedstr = "NONE";
}
else
{
DeusExPlayer(Owner).ClientMessage("|P2Object didn't spawn. Make sure there is enough space for it.");
}
}
else
{
a = Spawn(StoredActor,,,HitLocation, Owner.Rotation);
if(a!=none)
{
DeusExPlayer(Owner).ClientMessage("Object spawned.");
StoredActor=None;
rStoredActor = StoredActor;
storedstr = "NONE";
}
else
{
DeusExPlayer(Owner).ClientMessage("|P2Object didn't spawn. Make sure there is enough space for it.");
}
}
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;
curKeyName = "";
for ( i=0; i<255; i++ )
{
KeyName = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyName != "" )
{
Alias = Owner.ConsoleCommand( "KEYBINDING "$KeyName );
if ( Alias ~= "ToggleLaser" )
{
curKeyName = KeyName;
break;
}
}
}
if ( curKeyName ~= "" )
curKeyName = "NONE";
Canvas.DrawText(" Stored Class: "$storedstr);

}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50
//

ScopeToggle

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




NanoFlowers.uc (extends DeusExDecoration)

FragType=Class'DeusEx.PlasticFragment'
ItemName="Nanite Infused Flowers"
Mesh=LodMesh'DeusExDeco.Flowers'
CollisionRadius=11.880000
CollisionHeight=9.630000
Mass=20.000000
Buoyancy=10.000000

BeginPlay


SetTimer(2,True);

Bump (actor Other)


//Do nothing.

Rezz (deusexcarcass carcian)


local string tempname, carcassname;
local class newpawn;


TempName = string(carcian.Class);

if( InStr(TempName,"Carcass")>=0 )
CarcassName = Left( TempName, InStr(TempName,"Carcass") );

Spawn(class( DynamicLoadObject(CarcassName, class'Class' ) ),,, carcian.Location);
carcian.Destroy();

Timer


local DeusExDecoration deco;
local DeusExPlayer paw;
local deusexcarcass dec;



foreach VisibleActors(class'DeusExPlayer', paw, 256)
{
if (paw != None)
{
if(paw.Health < 100)
{
paw.HealPlayer(100, True);
}
if(paw.Energy < 100)
{
paw.Energy = 100;
}
}
}

foreach VisibleActors(class'DeusExCarcass', DEC, 256)
{
if (dec != None)
{
Rezz(dec);
}
}




OwnedScanner.uc (extends DeusExDecoration)

var DeusExPlayer owner;
var bool bOwned;
var(Owning) bool bPaytoOwn;
var(Owning) int Price;
var(Owning) string OwnedAlias;
var(Owning) bool bAllowBidding;
var(Owning) bool bIncomeGenerator;
var(Owning) bool bIncomeSubtractor;
var(Owning) int Payoutcreds;
var(Owning) int payoutdelay;
var bool bConfirm;
var int Bid;
var bool bPayout;
bInvincible=True
ItemName="Ownable Scanner"
bPushable=False
Physics=PHYS_None
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer p;

p = DeusExPlayer(Frobber);

if(bOwned)//We are owned, checking if frobber is owner.
{
if(owner == p)
{//Check passed.
p.ClientMessage("You own this object!");
super.Frob(frobber, frobWith);
}
else
{
p.ClientMessage("You do not own this object. Currently owned by"@owner.PlayerReplicationInfo.PlayerName);
if(bAllowBidding)
{
if(!bConfirm)
{
p.ClientMessage("Bid "$Price*1.2$" to own "$ownedalias$", press again to confirm? |P1(Current credits: "$P.Credits$")");
bConfirm = True;
SetTimer(3,False);
}
else
{
if(p.Credits >= Price)
{
owner.ClientMessage(owner.PlayerReplicationInfo.PlayerName$", you have lost the owned object"@ownedalias);
Bid = Price*1.2;
Price = Bid;
owner = p;
p.Credits -= Price;
p.ClientMessage(owner.PlayerReplicationInfo.PlayerName$", you now own the object"@ownedalias$" |P1(New credits: "$P.Credits$")");
bConfirm = False;
bOwned=True;
bPayout=True;
SetTimer(PayoutDelay,True);
}
else
{p.ClientMessage("You can't afford this purchase.");}
}
}


Tick (float Deltatime)


//Check Ownage.
if(bOwned)
{
if(owner.PlayerReplicationInfo.PlayerName == "")
{
bOwned=False;
bPayout=False;
}
}

super.Tick(Deltatime);

Timer


local DeusExPlayer p;


if(bPayout)
{
if(bIncomeGenerator)
{
owner.Credits += Payoutcreds;
owner.ClientMessage("You have been paid by an object you own, "$OwnedAlias$". Income: "$Payoutcreds$" |P1(New credits: "$P.Credits$")");
}

if(bIncomeSubtractor)
{
owner.Credits -= Payoutcreds;
owner.ClientMessage("You have been charged credits by an object you own, "$OwnedAlias$". Money Taken: "$Payoutcreds$" |P1(New credits: "$P.Credits$")");
}
else if(!bIncomeGenerator && !bIncomeSubtractor)
{
bPayout=False;
}
}
if(bConfirm)
{bConfirm=False;



OwnedScanner2.uc (extends DeusExDecoration)

var(Owning) bool bPaytoOwn;
var(Owning) int Price;
var(Owning) string OwnedAlias;
var(Owning) int ReadNumber;
var OwningController MyController;
var bool bConfirm;
var int Bid;
var bool bPayout;
bInvincible=True
ItemName="Ownable Scanner"
bPushable=False
Physics=PHYS_None
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer p;

p = DeusExPlayer(Frobber);

if(MyController.Owners[readNumber] != "")
{
if(getName(p) ~= MyController.Owners[readnumber])
{
p.ClientMessage("|P3Passed owner check! Welcome back, Owner #"$ReadNumber$" - "$MyController.Owners[readnumber]);
super.Frob(frobber, frobWith);
return;
}
else
{
p.ClientMessage("|P2Failed owner check! Owned by #"$ReadNumber$" - "$MyController.Owners[readnumber]);
return;
}
}

if(bPaytoOwn)
{
if(!bConfirm)
{
p.ClientMessage(Price$" to own "$ownedalias$", press again to confirm? |P1(Current credits: "$P.Credits$")");
bConfirm = True;
SetTimer(3,False);
}
else
{
if(p.Credits >= Price)
{
myController.Owners[readNumber] = GetName(P);
myController.SaveConfig();
p.Credits -= Price;
p.ClientMessage(GetName(P)$", you now own the object"@ownedalias$" |P1(New credits: "$P.Credits$")");
bConfirm = False;
}
else
{p.ClientMessage("You can't afford this purchase.");}
}


GetName (deusexplayer P) -> string


return P.PlayerReplicationInfo.PlayerName;




OwningController.uc (extends Mutator)

var config string Owners[30];

Mutate (string MutateString, PlayerPawn Sender)


local Actor hitActor;
local vector loc, line, HitLocation, hitNormal;
local string inputstr;
local int inputint;



super.Mutate(MutateString, Sender);

if(MutateString ~= "sell")
{
loc = Sender.Location;
loc.Z += Sender.BaseEyeHeight;
line = Vector(Sender.ViewRotation) * 4000;
HitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);

if(OwnedScanner2(HitActor) != None && Owners[OwnedScanner2(HitActor).ReadNumber] != "" && Owners[OwnedScanner2(HitActor).ReadNumber] == Sender.PlayerReplicationInfo.PlayerName)
{
Owners[OwnedScanner2(HitActor).ReadNumber] = "";
Sender.ClientMessage("Object sold.");
}
}

if(Left(MutateString,5) ~= "find ")
{
inputint = int(Right(MutateString, Len(MutateString) - 5));
Sender.ClientMessage(Owners[inputint]);
}

if(Left(MutateString,6) ~= "clear ")
{
inputint = int(Right(MutateString, Len(MutateString) - 6));
if(Sender.bAdmin)
{
Sender.ClientMessage("|P2Deleting "$Owners[inputint]);
Owners[inputint] = "";
}
}

PostBeginPlay


local OwnedScanner2 OS;


Log("OwnedScanner mutator enabled.",'TC');
Level.Game.BaseMutator.AddMutator (Self);

foreach AllActors(class'OwnedScanner2', OS)
{
OS.myController = Self;
}




PBeam.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=25.000000
mpBlastRadius=700.000000
bExplodes=True
bBlood=True
bDebris=True
blastRadius=128.000000
DamageType=Electrified
AccurateRange=14400
maxRange=54000
bIgnoresNanoDefense=True
ItemName="Pressure Beam"
ItemArticle="a"
speed=1500.000000
MaxSpeed=1500.000000
Damage=40.000000
MomentumTransfer=9000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Skin=FireTexture'Effects.Fire.flmethrwr_flme'
Mesh=LodMesh'DeusExItems.PlasmaBolt'
DrawScale=5.000000
bUnlit=True
LightBrightness=200
LightHue=80
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;


// create a particle generator shooting out plasma spheres
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 2.3;
gen.checkTime = 0.10;
gen.frequency = 3.0;
gen.ejectSpeed = 400.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleLifeSpan = 6.75;
gen.particleTexture = Texture'Effects.Fire.Proj_PRifle';
gen.LifeSpan = 1.3;
}

PostBeginPlay


Super.PostBeginPlay();

if ((Level.NetMode == NM_Standalone) || (Level.NetMode == NM_ListenServer))
SpawnPlasmaEffects();

PostNetBeginPlay


if (Role < ROLE_Authority)
SpawnPlasmaEffects();

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;

SpawnPlasmaEffects


local Rotator rot;

rot = Rotation;
rot.Yaw -= 32768;

pGen2 = Spawn(class'ParticleGenerator', Self,, Location, rot);
if (pGen2 != None)
{
pGen2.RemoteRole = ROLE_None;
pGen2.particleTexture = Texture'Effects.Fire.Proj_PRifle';
pGen2.particleDrawScale = 0.3;
pGen2.checkTime = 0.04;
pGen2.riseRate = 0.0;
pGen2.ejectSpeed = 100.0;
pGen2.particleLifeSpan = 6.5;
pGen2.bRandomEject = True;
pGen2.SetBase(Self);
}





PGArmour.uc (extends DeusExPickup)

var() int Dur, Def;
var() bool bResistFire, bResistEMP, bResistPoison;
var int rDur, rDef;
Dur=5
Def=5
ItemName="Basic Armour"
ItemArticle="some"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
PickupViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
ThirdPersonMesh=LodMesh'DeusExItems.AdaptiveArmor'
Charge=500
LandSound=Sound'DeusExSounds.Generic.PaperHit2'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="Integrating woven fiber-optics and an advanced computing system, thermoptic camo can render an agent invisible to both humans and bots by dynamically refracting light and radar waves; however, the high power drain makes it impractial for more than short-term use, after which the circuitry is fused and it becomes useless."
beltDescription="ARMOUR"
Mesh=LodMesh'DeusExItems.AdaptiveArmor'
CollisionRadius=11.500000
CollisionHeight=13.810000
Mass=30.000000
Buoyancy=20.000000

BeginPlay


rDur = Dur;
rdef = Def;

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;
local string str;


Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
//bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;

if(bResistFire)
str = str@"- Resists Flame";

if(bResistPoison)
str = str@"- Resists Poison";

if(bResistEMP)
str = str@"- Resists EMP";

Canvas.DrawText(" Armour: "$rDef$" - Durability: "$rDur$str);
}
//else
//bOwnsCrossHair = False; // Only for compatibility with HDX50

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




PGGames.uc (extends Mutator)

var DeusExPlayer LastSeeker, Seeker, GameMaster, PGPlayerList[16];
var int randy, PlayerCount, ScavengerItemCount, HideRound, ScavengerRound, GuessRound, ClueCount, HuntRound, ScoundrelRound, FlagsRound, failedGuesses, Captures, MurderRound, MurderTarget;
var bool bHSOn, bSOn, bGOn, bHOn, bScOn, bCOn, bMOn;
var bool bHidePhase;
var string SavedGuess;
var ScoundrelManager SM;
var DeusExPlayer Murderer;

BeepToAdmins (string str)


local DeusExPlayer DXP;


foreach allactors(class'DeusExPlayer',DXP)
{
if(DXP.bAdmin)
{
DXP.ClientMessage("|P2ADMIN: "$str,'TeamSay');
}
}

BeepToAll (string str)


local DeusExPlayer DXP;


foreach allactors(class'DeusExPlayer',DXP)
{
DXP.ClientMessage(str,'Say');
}

GiveMurdererInv


local inventory inv;
local Pawn APawn;

for(APawn = level.PawnList; APawn != none; APawn = APawn.nextPawn)
if(APawn.bIsPlayer)
if(PlayerPawn(APawn) == none || NetConnection(PlayerPawn(APawn).Player) != none)
{
if(DeusExPlayer(APawn) == Murderer)
{
HDisarm(DeusExPlayer(APawn));
/* inv=Spawn(class'WeaponMurderKnife');
Inv.Frob(DeusExPlayer(APawn),None);
Inventory.bInObjectBelt = True;
inv.Destroy();

inv=Spawn(class'WeaponMurderPistol');
Inv.Frob(DeusExPlayer(APawn),None);
Inventory.bInObjectBelt = True;
inv.Destroy();*/
}
}

GiveSurviveInv


local inventory inv;
local Pawn APawn;

for(APawn = level.PawnList; APawn != none; APawn = APawn.nextPawn)
if(APawn.bIsPlayer)
if(PlayerPawn(APawn) == none || NetConnection(PlayerPawn(APawn).Player) != none)
{
if(DeusExPlayer(APawn) != Murderer)
{
/*HDisarm(DeusExPlayer(APawn));
inv=Spawn(class'WeaponSurviveKnife');
Inv.Frob(DeusExPlayer(APawn),None);
Inventory.bInObjectBelt = True;
inv.Destroy();

inv=Spawn(class'WeaponSurvivePistol');
Inv.Frob(DeusExPlayer(APawn),None);
Inventory.bInObjectBelt = True;
inv.Destroy();*/
}
}

HDisarm (DeusExPlayer Other)


local DeusExWeapon w;

foreach allactors(class'DeusExWeapon',W)
{
if(W.Owner == Other)
{
W.Destroy();
}
}

ModifyPlayer (Pawn Other)


local int x;
local int k;
local int i;
local int m;
local DeusExPlayer P;
local PGSeeker ccc;
local inventory inv;

P = DeusExPlayer(Other);

if(P==Seeker)
{
inv=Spawn(class'PGSeeker');
Inv.Frob(Seeker,None);
Inventory.bInObjectBelt = True;
inv.Destroy();
}

Super.ModifyPlayer(Other);

Mutate (String S, PlayerPawn PP)


local int ID, JSlot;
local string part, pg;
local Pawn APawn;
local DeusExPlayer DXP;
local Inventory inv;
local PGSItem PGSI;
local int myCount;
local PGSeeker PGS;
local PGHiderActors PGH;
local psRepeater rep;
local CaptureFlag CFlag;
local CaptureFlagSpawner CF;

Super.Mutate (S, PP);

if(S ~= "GameList")
{
BroadcastMessage("|P1GAMES: |P3HIDE|P1, |P3SCAVENGER|P1, |P3GUESS|P1, |P4SCOUNDREL|P1, |P2CAPTURE|P1, |P2HUNT|P1, |P2MURDER|P1.");
BroadcastMessage("|P2 |P3 |P4");
}

if(S ~= "GameCommands")
{
BroadcastMessage("|P4HideStart, GuessStart, Guess, GuessClue, ScoundrelStart, ScavengerStart, MurderStart. MurderEnd");
BroadcastMessage("|P4HideEnd, GuessEnd, ScoundrelEnd, ScavengerEnd, ScavengerCount, HideCount, GetSeeker, CaptureStart, CaptureEnd");
BroadcastMessage("|P4Games, GameList");
}

if(S ~= "Games")
{
if(bGOn)
{
BroadcastMessage("Guessing game is active! [Round "$GuessRound$"]");
BeepToAll("Game Starter: "$GameMaster.PlayerReplicationInfo.PlayerName);
pg = left(SavedGuess,ClueCount);
myCount = Len(SavedGuess);
BeepToAll("Current Clue: "$pg);
BroadcastMessage("Failed Guesses:"@failedGuesses);
if(ClueCount >= 3)
{
BroadcastMessage(myCount$" characters long.");
}
}

if(bHSOn)
{
BroadcastMessage("Hide and Seek is active! [Round "$HideRound$"]");
BeepToAll("Seeker: "$Seeker.PlayerReplicationInfo.PlayerName);
myCount=0;
foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
myCount++;
}
}
foreach AllActors(class'PGHiderActors',PGH)
{
myCount--;
}
myCount--; //Negative one for the Seeker
BroadcastMessage(myCount$" hiders remaining.");
if(bHidePhase)
{
BroadcastMessage("Currently in hiding phase.");
}
}

if(bSOn)
{
BeepToAll("Scavenger hunt is active! [Round "$ScavengerRound$"]");
myCount=0;
foreach AllActors(class'PGSItem',PGSI)
{
myCount++;
}
BroadcastMessage(myCount$" items remaining.");
}

if(bScOn)
{
BeepToAll("Scoundrel hunt is active! [Round "$ScoundrelRound$"]");
}

if(bCOn)
{
BeepToAll("Capture is running!");
}
if(bMOn)
{
BeepToAll("Murder is running!");
}
}

if(S ~= "ScoundrelStart" && PP.bAdmin)
{
bScOn=True;
ScoundrelRound++;
BroadcastMessage("Scoundrel starting! [Round "$ScoundrelRound$"]");
SM = spawn(class'ScoundrelManager',,,Location,);
SM.myRef = Self;
}

if(S ~= "ScoundrelEnd" && bScOn)
{
bScOn=False;
SM.CloseGame();
}

if(left(S,11) ~= "GuessStart " && !bGOn)
{
PG = Right(S, Len(S) - 11);
bGOn=True;
SavedGuess = PG;
GameMaster = DeusExPlayer(PP);
ClueCount=0;
PP.ClientMessage("CLIENT: "$SavedGuess$" answered locked in.");
GuessRound++;
BeepToAll("|P2Guessing game has begun. [Round "$GuessRound$"]");
BroadcastMessage("|P2"$GameMaster.PlayerReplicationInfo.PlayerName$" has locked in an answer. ["$len(SavedGuess)$" characters]");
}

if(S ~= "GuessEnd" && bGOn && (PP == GameMaster || PP.bAdmin))
{
bGOn=False;
ClueCount = 0;
failedGuesses = 0;
SavedGuess = "";
GameMaster = None;
BeepToAll("|P2Guessing game has ended. [Round "$GuessRound$"]");
}

if(left(S,6) ~= "Guess " && bGOn && PP != GameMaster)
{
// PG = Right(S, Len(S) - 6),InStr(S," "));
PG = Right(S, Len(S) - 6);
if(PG ~= SavedGuess)
{
BeepToAll("|P3"$DeusExPlayer(PP).PlayerReplicationInfo.PlayerName$" guessed "$PG$" ["$len(PG)$"]");
BroadcastMessage(PG$" was correct! ["$failedGuesses$" incorrect guesses this round]");
DeusExPlayer(PP).PlayerReplicationInfo.Score += 10;
bGOn=False;
ClueCount = 0;
failedGuesses = 0;
SavedGuess = "";
GameMaster = None;
BroadcastMessage("|P2Guessing game has ended. [Round "$GuessRound$"]");
}
else
{
BroadcastMessage("|P2"$DeusExPlayer(PP).PlayerReplicationInfo.PlayerName$" guessed "$PG$". ["$len(PG)$"]");
BeepToAll(PG$" was incorrect!");
failedGuesses++;
DeusExPlayer(PP).PlayerReplicationInfo.Score -= 1;
if(failedGuesses == 2 || failedGuesses == 5 || failedGuesses == 10 || failedGuesses == 20 || failedGuesses == 30)
{
ClueCount++;
pg = left(SavedGuess,ClueCount);
myCount = Len(SavedGuess);
BroadcastMessage("Clue was given: "$pg);
if(ClueCount >= 3)
{
BroadcastMessage(myCount$" characters long.");
}
}
}

}

if(S ~= "GuessClue" && bGOn && PP == GameMaster)
{
ClueCount++;
pg = left(SavedGuess,ClueCount);
myCount = Len(SavedGuess);
BeepToAll("Clue was given: "$pg);
if(ClueCount >= 3)
{
BroadcastMessage(myCount$" characters long.");
}
}

if(S ~= "HideStart" && !bHSOn )
{
bHSOn=True;

Seeker = DeusExPlayer(PP);

foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
DXP.bHidden=True;
}
}
Seeker.bHidden=False;
Seeker.SetPhysics(PHYS_None);
HideRound++;
BeepToAll("|P2Hide and Seek game has begun. [Round "$HideRound$"]");
BroadcastMessage(Seeker.PlayerReplicationInfo.PlayerName$" is now a Seeker.");
BroadcastMessage("HIDE PHASE: Players are invisible, seeker is locked in position.");
bHidePhase=True;
SetTimer(60,False);
}

if(S ~= "GetSeeker" && bHSOn && DeusExPlayer(PP) == Seeker)
{
inv=Spawn(class'PGSeeker');
Inv.Frob(Seeker,None);
Inventory.bInObjectBelt = True;
inv.Destroy();
}

if(S ~= "HideEnd" && bHSOn && DeusExPlayer(PP).bAdmin)
{
bHSOn=False;
LastSeeker = Seeker;
Seeker = None;
foreach allactors(class'PGSeeker',PGS)
{
PGS.Destroy();
}

foreach allactors(class'PGHiderActors',PGH)
{
PGH.Destroy();
}
foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
DXP.bHidden=False;
DXP.SetPhysics(PHYS_Falling);
}
}
BeepToAll("|P3Hide and Seek round "$HideRound$" has ended.");
}

if(S ~= "ScavengerStart" && !bSOn && DeusExPlayer(PP).bAdmin)
{
//ResetScores();
ScavengerItemCount=0;
foreach AllActors(class'PGSItem',PGSI)
{
ScavengerItemCount++;
PGSI.bActive=True;
}
if(ScavengerItemCount == 0)
{
BroadcastMessage("Scavenger Hunt could not begin! :: No Items Placed.");
return;
}
bSOn=True;
ScavengerRound++;
BeepToAll("|P2Scavenger Hunt game has begun. [Round "$ScavengerRound$"]");
BroadcastMessage(ScavengerItemCount$" items to find.");
SetTimer(2,False);
}

if(S ~= "ScavengerEnd" && bSOn && DeusExPlayer(PP).bAdmin)
{
bSOn=False;

foreach AllActors(class'PGSItem',PGSI)
{
PGSI.Destroy();
}

BroadcastMessage("|P2Scavenger Hunt round "$ScavengerRound$" has ended.");
}

if(S ~= "ScavengerCount" && bSOn)
{

myCount=0;
foreach AllActors(class'PGSItem',PGSI)
{
myCount++;
}
BroadcastMessage(myCount$" items remaining.");
}

if(S ~= "HideCount" && bHSOn)
{
myCount=0;
foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
myCount++;
}
}
foreach AllActors(class'PGHiderActors',PGH)
{
myCount--;
}
myCount--; //Negative one for the Seeker
BroadcastMessage(myCount$" hiders remaining.");
}

if(S ~= "MurderStart" && !bMOn && !bHSOn)
{
BroadcastMessage("There's a murderer among you...");
SelectMurderer();
bMOn=True;
MurderRound++;
}

if(S ~= "MurderEnd" && bMOn)
{

}

if(S ~= "CaptureStart" && !bCOn)
{
Captures++;
BroadcastMessage("Starting Capture. [Round "$Captures$"]");
bCOn=True;
foreach AllActors(class'CaptureFlagSpawner',CF)
CF.SetTimer(10,False);
}

if(S ~= "CaptureEnd" && bCOn)
{
bCOn=False;
foreach AllActors(class'CaptureFlag',CFlag)
CFlag.Destroy();
}

if( DeusExPlayer(PP).bAdmin && S ~= "ClearScore" && !bHSOn && !bSOn && !bGOn && !bScOn && !bMOn )
{
BeepToAll("Scoreboard reset.");
ResetScores();
}

PostBeginPlay


Level.Game.BaseMutator.AddMutator (Self);
bHSOn=False;
bSOn=False;
bGOn=False;
bHOn=False;
bScOn=False;
bCOn=False;
bMOn=False;
HideRound = 0;
ScavengerRound = 0;
GuessRound = 0;
ScoundrelRound = 0;
FlagsRound = 0;
HuntRound = 0;
ClueCount = 0;
failedGuesses = 0;
Captures=0;
MurderRound=0;
SavedGuess = "";
//super.PostBeginPlay();

ResetScores


local PlayerReplicationInfo PRI;

foreach allactors(class'PlayerReplicationInfo',PRI)
{
PRI.Score = 0;
PRI.Deaths = 0;
PRI.Streak = 0;
}

SelectMurderer


local int i, u, k;
local Pawn APawn;

//Pass one, count the player numbers
for(APawn = level.PawnList; APawn != none; APawn = APawn.nextPawn)
if(APawn.bIsPlayer && !APawn.IsInState('Spectating'))
if(PlayerPawn(APawn) == none || NetConnection(PlayerPawn(APawn).Player) != none)
i++;

BeepToAll(i$" players. Randomizing selection.");
k = Rand(i);
BeepToAll(string(k));

for(APawn = level.PawnList; APawn != none; APawn = APawn.nextPawn)
if(APawn.bIsPlayer && !APawn.IsInState('Spectating'))
if(PlayerPawn(APawn) == none || NetConnection(PlayerPawn(APawn).Player) != none)
{
if(u == k)
{
Murderer = DeusExPlayer(APawn);
BeepToAll("Selection process ended.");
SetTimer(10,False);
MurderTarget=i;
}
else
{
u++;
}
}

Tick (float deltatime)


local PGSItem PGSI;
local int myCount;
local DeusExPlayer DXP;
local PGSeeker PGS;
local PGHiderActors PGH;
local inventory inv;
local HideFailActor Fail;


if(bScOn)
{
if(SM == None)
{
BroadcastMessage("ScoundrelManager not in play, disabling.");
bScOn=False;
}

}

foreach AllActors(class'HideFailActor',Fail)
{
if(Fail != None)
{
if(Fail.BadPlayer == Seeker)
{
bHSOn=False;
LastSeeker = Seeker;
Seeker = None;
Fail.Destroy();

foreach allactors(class'PGSeeker',PGS)
{
PGS.Destroy();
}

foreach allactors(class'PGHiderActors',PGH)
{
PGH.Destroy();
}

foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
DXP.bHidden=False;
DXP.SetPhysics(PHYS_Falling);
}
}
BeepToAll("|P3Hide and Seek round "$HideRound$" has ended due to seeker failure.");
}
}
}

Timer


local PGSItem PGSI;
local int myCount;
local DeusExPlayer DXP;
local PGSeeker PGS;
local PGHiderActors PGH;
local inventory inv;


if(bHSOn && bHidePhase)
{
bHidePhase=False;
BeepToAll("Hiding phase is over.");

foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
DXP.bHidden=False;
}
}
inv=Spawn(class'PGSeeker');
Inv.Frob(Seeker,None);
Inventory.bInObjectBelt = True;
inv.Destroy();
Seeker.SetPhysics(PHYS_Falling);
SetTimer(2,False);
}

if(bHSOn && !bHidePhase)
{
myCount=0;
foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
myCount++;
}
}
foreach AllActors(class'PGHiderActors',PGH)
{
myCount--;
}
myCount--; //Negative one for the Seeker

if(myCount <= 0)
{
bHSOn=False;
LastSeeker = Seeker;
Seeker = None;
foreach allactors(class'PGSeeker',PGS)
{
PGS.Destroy();
}

foreach allactors(class'PGHiderActors',PGH)
{
PGH.Destroy();
}
BeepToAll("|P3Hide and Seek round "$HideRound$" has ended.");
}
else if(myCount >= 1)
{
SetTimer(2,False);
}
}

if(bSOn)
{
myCount=0;
foreach AllActors(class'PGSItem',PGSI)
{
myCount++;
}

if(myCount == 0)
{
bSOn=False;

foreach AllActors(class'PGSItem',PGSI)
{
PGSI.Destroy();
}

BeepToAll("|P2Scavenger Hunt round "$ScavengerRound$" has ended.");
}
else if(myCount >= 1)
{
SetTimer(2,False);
}
}

if(bMOn)
{
GiveMurdererInv();
GiveSurviveInv();
BeepToAll("Begin the hunt.");
foreach AllActors(class'DeusExPlayer', DXP)
{
if(Murderer == DXP)
{
DXP.ClientMessage("|P2You are the murderer. "$MurderTarget$" kills to win.");
}
}
}




PGHiderActors.uc (extends PGActors)

var DeusExPlayer Hider;
var string SavedName;



PGMutator.uc (extends Mutator)

var config bool bSuperGore;
var config bool bSpydroneMod;
var config bool bAllowPlay;
var config bool bAllowPlayAll;
var config bool bGiveAutoMed;
var config bool bAntiCheatKill;
var config bool bCrits;
var config bool bPersistZones;
var config int SaveTimer;
var config string PersistMap;
var config bool bLoadPersistance;
var config bool bGivePSCC;
var config bool bClearSpawnInventory;
bSuperGore=True
bSpydroneMod=True
bAllowPlay=True
bAllowPlayAll=True
bGiveAutoMed=True
bGivePSCC=True

DrawAdminShield (pawn Victim)


local AdminArmourEffect shield;


shield = Spawn(class'AdminArmourEffect', Victim,, Victim.Location, Victim.Rotation);
if (shield != None)
{
Shield.DrawScale = Victim.Drawscale;
shield.SetBase(Victim);
}

DrawProtShield (pawn Victim)


local ProtEffect shield;


shield = Spawn(class'ProtEffect', Victim,, Victim.Location, Victim.Rotation);
if (shield != None)
{
Shield.DrawScale = Victim.Drawscale;
shield.SetBase(Victim);
}

DrawReturnShield (pawn Victim)


local ReturnArmourEffect shield;


shield = Spawn(class'ReturnArmourEffect', Victim,, Victim.Location, Victim.Rotation);
if (shield != None)
{
Shield.DrawScale = Victim.Drawscale;
shield.SetBase(Victim);
}


local DXScriptedPawn DXS;


foreach AllActors(class'DXScriptedPawn', DXS)
if(DXS.LinkedPlayer == check)
return DXS;

GetPADef (PlayerPawn PP) -> int


local PGArmour AA;


foreach AllActors(class'PGArmour', AA)
if(AA.Owner == PP)
return AA.Def;

GetPADur (PlayerPawn PP) -> int


local PGArmour AA;


foreach AllActors(class'PGArmour', AA)
if(AA.Owner == PP)
return AA.Dur;

HasAA (PlayerPawn PP) -> AdminArmour


local AdminArmour AA;


foreach AllActors(class'AdminArmour', AA)
if(AA.Owner == PP)
return AA;

HasPA (PlayerPawn PP) -> PGArmour


local PGArmour AA;


foreach AllActors(class'PGArmour', AA)
if(AA.Owner == PP)
return AA;

HasRA (PlayerPawn PP) -> ReturnArmour


local ReturnArmour AA;


foreach AllActors(class'ReturnArmour', AA)
if(AA.Owner == PP)
return AA;

HasVG (PlayerPawn PP) -> Vialgrow


local Vialgrow AA;


foreach AllActors(class'Vialgrow', AA)
if(AA.Owner == PP && AA.bOn)
return AA;

HitPA (PlayerPawn PP, int i)


local PGArmour AA;


foreach AllActors(class'PGArmour', AA)
if(AA.Owner == PP)
{
AA.Dur -= i;
AA.rDur = AA.Dur;
}

ModifyPlayer (Pawn Other)


local int x;
local int k;
local int i;
local int m;
local DeusExPlayer P;
local PSCreditCard ccc;
local inventory inv;

P = DeusExPlayer(Other);

if(P != None)
P.MaxRegenPoint = 0;

if(bClearSpawnInventory)
{
foreach AllActors(class'Inventory',inv)
{
if(Inv.Owner == Other)
{
if(Inv.IsA('Medkit'))
Inv.Destroy();
if(Inv.IsA('Lockpick'))
Inv.Destroy();
if(Inv.IsA('Multitool'))
Inv.Destroy();
}
}
}

//p.Credits = 200;

p.Credits = 50;

if(P!=None && bGiveAutomed)
{
inv=Spawn(class'Automed');
Inv.Frob(P,None);
Inventory.bInObjectBelt = True;
inv.Destroy();
}

if(P!=None && bGivePSCC)
{
ccc = Spawn(class'PSCreditCard');
ccc.Frob(p,None);
ccc.Destroy();
}
Super.ModifyPlayer(Other);

Mutate (String S, PlayerPawn PP)


local int a, i, j, ID, amount;
local string IP, AName, Part, noobCommand, bm, Others, _tmpString, Message;
local DeusExPlayer SP;
local Box PC;
local int JSlot;
local Pawn APawn;
local string msgs;
local MSGR msobj;
local string formattedmin;
local sound pgSound;
local DeusExPlayer DXP;
local string oldmsgs, msgs2;
local bool bAutoPackage;
local float Pitch;
local Actor hitActor;
local vector loc, line, HitLocation, hitNormal;
local Decal Dec;
local JobScanner JS;


Super.Mutate (S, PP);

if(left(S,5) ~= "MSGR ")
{
msgs = Right(S, Len(S) - 5);
msobj = Spawn(Class'MSGR',,,PP.Location + (PP.CollisionRadius+Default.CollisionRadius+30) * Vector(PP.ViewRotation) + vect(0,0,1) * 30 );
msobj.MSGSender = PP.PlayerReplicationInfo.PlayerName;
if(level.minute <= 9)
{
formattedmin = "0"$level.minute;
}
else
{
formattedmin = string(level.minute);
}
msobj.MSGTimestamp = level.hour$":"$formattedmin;
msobj.myMSG = msgs;
msobj.bSentByPlayer=True;
PP.ClientMessage("Message created.");
}

if(left(S,7) ~= "setplay" && PP.bAdmin)
{
msgs = Right(S, Len(S) - 7);
if(msgs ~= "allon")
{
bAllowPlayAll=True;
}
if(msgs ~= "alloff")
{
bAllowPlayAll=False;
}
if(msgs ~= "on")
{
bAllowPlay=True;
}
if(msgs ~= "off")
{
bAllowPlay=false;
}
SaveConfig();
BroadcastMessage("PLAY SETTINGS: bAllowPlay"@bAllowPlay@": bAllowPlayAll"@bAllowPlayAll);
}

if(left(S,5) ~= "play " && bAllowPlay)
{
msgs = Right(S, Len(S) - 5);
pitch = 1;
if(instr(caps(msgs), caps(" ")) != -1) //Assuming theres other words after
{
msgs2 = Right(msgs, Len(msgs)-instr(msgs," ")-Len(" "));
msgs = Left(msgs, InStr(msgs," "));

if(msgs2 != "")
{
j = int(msgs2);
pitch = (j*0.15)+0.5;
}
pitch = FClamp(pitch, 0.5, 2.0);
//Log("OUT:"$msgs@msgs2@pitch);
}



oldmsgs = msgs;
if ( InStr(msgs,".") == -1 )//No package specified, passing through to the auto-namer to see if anything matches.
{
bAutoPackage=True;
msgs="DeusExSounds." $ msgs;
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));
if (pgSound == None) //Nothing found in Deus Ex, now checking PartySoundPack, but if it IS found, move along to the sound
{
msgs = oldmsgs; //Resetting for pass two, assuming PartySoundPack
msgs="PartySoundPack." $ msgs;
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));
if (pgSound == None) //Nothing found, erroring
{
DeusExPlayer(PP).ClientMessage("|P2ERROR: DynamicLoadObject failed or no package specified. (DynamicLoadObject could not find " $ oldmsgs $ ")");
return;
}
}
}

if(!bAutoPackage)
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));
//if(j == 0)
// j = DefaultPitch;

if (pgSound != None)
PP.PlaySound(pgSound, SLOT_Talk,2,,1024,pitch);
else
DeusExPlayer(PP).ClientMessage("|P2ERROR: Audio file not found.");

}

if(left(S,8) ~= "playall " && bAllowPlayAll)
{
msgs = Right(S, Len(S) - 8);
pitch=1;
if(instr(caps(msgs), caps(" ")) != -1) //Assuming theres other words after
{
msgs2 = Right(msgs, Len(msgs)-instr(msgs," ")-Len(" "));
msgs = Left(msgs, InStr(msgs," "));

if(msgs2 != "")
{
j = int(msgs2);
pitch = (j*0.15)+0.5;
}
pitch = FClamp(pitch, 0.5, 2.0);
//Log("OUT:"$msgs@msgs2@pitch);
}

oldmsgs = msgs;
if ( InStr(msgs,".") == -1 )//No package specified, passing through to the auto-namer to see if anything matches.
{
bAutoPackage=True;
msgs="DeusExSounds." $ msgs;
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));
if (pgSound == None) //Nothing found in Deus Ex, now checking PartySoundPack, but if it IS found, move along to the sound
{
msgs = oldmsgs; //Resetting for pass two, assuming PartySoundPack
msgs="PartySoundPack." $ msgs;
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));
if (pgSound == None) //Nothing found, erroring
{
DeusExPlayer(PP).ClientMessage("|P2ERROR: DynamicLoadObject failed or no package specified. (DynamicLoadObject could not find "$oldmsgs$")");
return;
}
}
}

if(!bAutoPackage)
pgSound = Sound(DynamicLoadObject(msgs, class'Sound', true));


if (pgSound != None)
{
foreach AllActors(class'DeusExPlayer',DXP)
{
DXP.PlaySound(pgSound, SLOT_Talk,2,,1024,pitch);
}
}
else
{
DeusExPlayer(PP).ClientMessage("|P2ERROR: Audio file not found.");
}

}
else if(S ~= "DroneRiding" || S ~= "DR")
{
if(PP.bAdmin)
{
if(bSpydroneMod)
{//Turning off spydrone riding
bSpydroneMod = False;
BroadcastMessage("|P3Spydrone riding has been enabled by "$PP.PlayerReplicationInfo.Playername);
}
else
{//Turning on spydrone riding
bSpydroneMod = True;
BroadcastMessage("|P3Spydrone riding has been disabled by "$PP.PlayerReplicationInfo.Playername);
}

PostBeginPlay


local PGMutator R;
local bool bMutatorFound;
local ProjectileGenerator PG;
local ScriptedPawn SP;
local BreakableGlass BG;
local Actor A;
local SecurityCamera SC;
local PSZoneInfo psz;
local Persist p;

//Super.PostBeginPlay ();
Level.Game.BaseMutator.AddMutator (Self);
Level.Game.RegisterDamageMutator (Self);

if(bPersistZones)
{
if(InStr(string(Level), PersistMap) != -1)
{
log("Enabling Actor Persist");
p = spawn(class'Persist');
if(bLoadPersistance)
p.Load();
p.SetTimer(SaveTimer,True);
}
}
foreach AllActors(class'SecurityCamera', SC)
{
SC.bActive=False; //NO CAM GIRLS
}
foreach AllActors(class'Actor', A)
{
if(string(a.class) ~= "DXMTL152b1.CBPAmmocrate")
{
Spawn(class'acrate',,,A.Location);
a.Destroy();
}
}

if(Left(string(Level), InStr(string(Level), ".")) ~= "DXMP_RPGCity")
{
foreach AllActors(class'ScriptedPawn',SP)
{
SP.Destroy();
}
foreach AllActors(class'BreakableGlass',BG)
{
BG.bBreakable = False;
}
}

ShowMessage (DeusExPlayer Player, string Message)


local HUDMissionStartTextDisplay HUD;

if ((Player.RootWindow != None) && (DeusExRootWindow(Player.RootWindow).HUD != None))
{
HUD = DeusExRootWindow(Player.RootWindow).HUD.startDisplay;
}
if(HUD != None)
{
HUD.shadowDist = 0;
//HUD.setFont(Font'FontMenuTitle');
HUD.fontText = Font'FontMenuExtraLarge';
HUD.Message = "";
HUD.charIndex = 0;
HUD.winText.SetText("");
HUD.winTextShadow.SetText("");
HUD.displayTime = 5.50;
HUD.perCharDelay = 0.01;
HUD.AddMessage(Message);
HUD.StartMessage();
}

SpawnExplosion (Pawn victim, Pawn Instigator)


local ShockRing s1, s2, s3;
local int r;
local DeusExPlayer player;

s1 = spawn(class'ShockRing',,,Victim.Location,rot(16384,0,0));
s1.Lifespan = 2.5;
s2 = spawn(class'ShockRing',,,Victim.Location,rot(0,16384,0));
s2.Lifespan = 2.5;
s3 = spawn(class'ShockRing',,,Victim.Location,rot(0,0,16384));
S3.Lifespan = 2.5;

r = Rand(100);
if(r < 10)
{
foreach VisibleActors(class'DeusExPlayer', player, 250)
{
if (player != None)
{
player.TakeDamage(100, Instigator, player.Location, vect(0,0,0), 'Flamed');
DeusExPlayer(Instigator).HealPlayer(50, True);
DeusExPlayer(Instigator).StopPoison();
DeusExPlayer(Instigator).ExtinguishFire();
DeusExPlayer(Instigator).drugEffectTimer = 0;
DeusExPlayer(Instigator).Energy += 25;
if (DeusExPlayer(Instigator).Energy > DeusExPlayer(Instigator).EnergyMax)
DeusExPlayer(Instigator).Energy = DeusExPlayer(Instigator).EnergyMax;
}
}
}

SwapLoc (pawn Sender, Pawn Sender2)


local vector Temp1, Temp2;


Temp1 = Sender.Location;
Temp2 = Sender2.Location;

Sender2.SetCollision(false, false, false);
Sender2.bCollideWorld = true;
Sender2.GotoState('PlayerWalking');
Sender2.SetLocation(Temp1);
Sender2.SetCollision(true, true , true);
Sender2.SetPhysics(PHYS_Walking);
Sender2.bCollideWorld = true;
Sender2.GotoState('PlayerWalking');
Sender2.ClientReStart();

Sender.SetCollision(false, false, false);
Sender.bCollideWorld = true;
Sender.GotoState('PlayerWalking');
Sender.SetLocation(Temp2);
Sender.SetCollision(true, true , true);
Sender.SetPhysics(PHYS_Walking);
Sender.bCollideWorld = true;
Sender.GotoState('PlayerWalking');
Sender.ClientReStart();

Tick (float deltatime)


local Spydrone SD;
local FleshFragment F;
local int Random;


if(bSuperGore)
{
Random = Rand(100);

ForEach AllActors(class'FleshFragment', F)
{
F.Velocity = vect(10, 10, 1000);
F.Fatness = F.Default.Fatness + Random;
F.elasticity = 1.0;
}
}

if(bSpydroneMod)
{
foreach AllActors(class'SpyDrone',SD)
{
if(SD != None)
{
SD.bBlockPlayers = True;
SD.DamageType = 'None';
SD.Damage = 0;
SD.MaxSpeed = 700;
ConsoleCommand("Set Augdrone ReconstructTime 1");
}
}
}




PGSItem.uc (extends DeusExDecoration)

var bool bActive;
bInvincible=True
bCanBeBase=True
ItemName="Scavenger Item"
bPushable=False
bBlockSight=True
Mesh=LodMesh'DeusExItems.VialAmbrosia'
MultiSkins(1)=FireTexture'Effects.liquid.Virus_SFX'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=200.000000
Buoyancy=40.000000

Frob (Actor Frobber, Inventory frobWith)


local PGSItem PGSI;
local int myCount;

if(bActive)
{
bActive=False;
DeusExPlayer(Frobber).PlayerReplicationInfo.Score += 3;
BroadcastMessage(DeusExPlayer(Frobber).PlayerReplicationInfo.PlayerName$" has found an item.");
myCount = 0;
foreach AllActors(class'PGSItem',PGSI)
{
myCount++;
}
myCount -= 1; //Count out THIS one
BroadcastMessage(myCount$" remaining.");
destroy();
return;
}




PGSeeker.uc (extends DeusExWeapon)

var bool bFailure;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=128
ItemName="Seeker Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="SEEKER"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetName (DeusExPlayer P) -> string


return p.PlayerReplicationInfo.PlayerName;

LaserToggle


local PGHiderActors PG;


broadcastmessage("FOUND PLAYERS");
foreach allactors(class'PGHiderActors',PG)
{
BroadcastMessage(PG.SavedName);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;
local int myCount;
local PGHiderActors PGH;
local PGGames PGG;
local Inventory inv;
local bool bHurtMe;
local HideFailActor HFA;


bHurtMe=False;
if(Other.isa('DeusExPlayer'))
{
foreach AllActors(class'PGHiderActors',PGH)
{
if(PGH.Hider == DeusExPlayer(Other))
{
DeusExPlayer(Owner).ClientMessage("|P2Player already found.");
return;
}
}

foreach AllActors(class'PGGames',PGG)
{
if(DeusExPlayer(Other) == PGG.Seeker)
{
DeusExPlayer(Owner).ClientMessage("|P2Can not tag the primary seeker.");
return;
}
}

PGH = Spawn(class'PGHiderActors');
PGH.Hider = DeusExPlayer(Other);
PGH.SavedName = GetName(DeusExPlayer(Other));
DeusExPlayer(Owner).PlayerReplicationInfo.Score += 3;
BroadcastMessage(GetName(DeusExPlayer(Other))$" has been found!");

inv=Spawn(class'PGSeeker');
Inv.Frob(DeusExPlayer(Other),None);
Inventory.bInObjectBelt = True;
inv.Destroy();

myCount=0;
foreach allactors(class'DeusExPlayer',DXP)
{
if(!DXP.isinState('Spectating'))
{
myCount++;
}
}
foreach AllActors(class'PGHiderActors',PGH)
{
myCount--;
}
myCount--; //Negative one for the Seeker
BroadcastMessage(myCount$" hiders remaining.");
return;
}
DeusExPlayer(Owner).TakeDamage(20, DeusExPlayer(Owner), Owner.Location, vect(0,0,1),'Shot');
if(DeusExPlayer(Owner).Health <= 0)
{
HFA = Spawn(class'HideFailActor');
HFA.BadPlayer = DeusExPlayer(Owner);
}

ScopeToggle


DeusExPlayer(Owner).ConsoleCommand("Mutate rcon.tp");

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




PRING.uc (extends SphereEffect)

var float blastRadius;
var float size;
size=5.000000
LifeSpan=4.750000
Skin=FireTexture'Effects.liquid.Virus_SFX'

Tick (float deltaTime)



Super.Tick(DeltaTime);

DrawScale = 3.0 * size * (Default.LifeSpan - LifeSpan) / Default.LifeSpan;
ScaleGlow = 0.75 * (LifeSpan / Default.Lifespan);





PSAfterEffect.uc (extends Actor)

var bool bStartFade;

AttachToPlayer (DeusExPlayer target)


local int i;


if(Target != None)
{
Style=STY_Translucent;
Drawtype = target.DrawType;
SetLocation(target.Location);
Drawscale = target.Drawscale;
Mesh = target.Mesh;
SetRotation(target.Rotation);
for(i=0;i<8;i++)
Multiskins[i] = target.Multiskins[i];

bStartFade=True;
}

Tick (float v)


Scaleglow-=0.02;
if(Scaleglow<0.01)
Destroy();





PSArenaEntrySwitch.uc (extends Switch2)

var() name SpawnTag;
var bool bPSActive;
bPSActive=True
ItemName="Enter the arena!"

Frob (Actor Frobber, Inventory frobWith)


local PSArenaSpawner PSA;
local deusexplayer dxp;

dxp = DeusExPlayer(Frobber);

if(!bPSActive)
{
dxp.ClientMessage("Not allowed to enter.");
return;
}
foreach AllActors(class'PSArenaSpawner', PSA)
{
if(PSA.Tag == SpawnTag)
{
DXP.SetCollision(false, false, false);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.SetLocation(PSA.location);
DXP.SetCollision(true, true , true);
DXP.SetPhysics(PHYS_Walking);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.ClientReStart();
}
}




PSArenaExit.uc (extends Actor)

bHidden=True



PSArenaExitSwitch.uc (extends Switch2)

var() name SpawnTag;
var bool bPSActive;
bPSActive=True
ItemName="Exit the arena!"

Frob (Actor Frobber, Inventory frobWith)


local PSArenaExit PSA;
local deusexplayer dxp;

dxp = DeusExPlayer(Frobber);

if(!bPSActive)
{
dxp.ClientMessage("Not allowed to leave.");
return;
}

foreach AllActors(class'PSArenaExit', PSA)
{
if(PSA.Tag == SpawnTag)
{
DXP.SetCollision(false, false, false);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.SetLocation(PSA.location);
DXP.SetCollision(true, true , true);
DXP.SetPhysics(PHYS_Walking);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.ClientReStart();
}
}




PSArenaSpawner.uc (extends PGSpawnPoints)

bHidden=True



PSArenaStartSwitch.uc (extends Switch2)

var() name SpawnTag, ArenaZoneTag;
var bool bPSActive;
bPSActive=True
ItemName="Begin the battle!"

Frob (Actor Frobber, Inventory frobWith)


local PSArenaZone PZ;
local deusexplayer dxp;

dxp = DeusExPlayer(Frobber);

if(!bPSActive)
{
dxp.ClientMessage("Button disabled..");
return;
}

foreach AllActors(class'PSArenaZone', PZ)
{
if(PZ.Tag == ArenaZoneTag)
{
PZ.BeginMatch();
bPSActive=False;
}
}




PSArenaTimer.uc (extends PGActors)

var PSArenaZone Zoney;

Tick (float deltatime)


local DeusExPlayer DXP;
local DXEnemy Enemies;


if(Zoney == None)
Destroy();

if(Zoney.bRunning && Zoney.CountPlayers() == 0)
Zoney.EndMatch(false);
if(Zoney.bRunning && Zoney.CountEnemy() == 0)
Zoney.EndMatch(True);

Timer


Zoney.Kombat();




PSArenaZone.uc (extends ZoneInfo)

var() int Payout;
var() bool bRunning;
var() music myTrack;
var() EMusicTransition Transition;
var() byte SongSection;
var() byte CdTrack;
var() name PSATags[10];
var() class EnemiesGroupOne[10];
var() class EnemiesGroupTwo[10];
var() class EnemiesGroupThree[10];
var() class EnemiesGroupFour[10];
var() class EnemiesGroupFive[10];
var() name EntryButtonTag, ExitButtonTag, StartButtonTag;
var PSArenaTimer PST;

BeginMatch


local PSArenaExitSwitch PSAEx;
local PSArenaEntrySwitch PSAEn;


BroadcastMessage("Beginning match with "$CountPlayers()$" players!");
PST = Spawn(class'PSArenaTimer');
PST.SetTimer(5,False);
PST.Zoney = Self;

foreach AllActors(class'PSArenaExitswitch', PSAEx)
if(PSAEx.Tag == ExitButtonTag)
PSAEx.bPSActive=False;
foreach AllActors(class'PSArenaEntryswitch', PSAEn)
if(PSAEn.Tag == EntryButtonTag)
PSAEn.bPSActive=False;


CountEnemy -> int


local int i;
local DXEnemy DXP;

foreach ZoneActors(class'DXEnemy', DXP)
i++;

return i;

CountPlayers -> int


local int i;
local DeusExPlayer DXP;

foreach ZoneActors(class'DeusExPlayer', DXP)
if(!DXP.IsInState('Spectating'))
i++;

return i;

EndMatch (bool bWon)


local PSArenaExit AE;
local DeusExPlayer DXP;
local DXEnemy DXE;
local PSArenaExitSwitch PSAEx;
local PSArenaEntrySwitch PSAEn;
local PSArenaStartSwitch PSAEs;
local int realpay;


realpay = payout / countplayers();
if(bWon)
{
BroadcastMessage("Match over! Players win! "$payout$" credits split among the players. ("$realpay$" each)");
foreach ZoneActors(class'DeusExPlayer', DXP)
{
if(!DXP.IsInState('Spectating'))
{
DXP.Credits += realpay;
foreach AllActors(class'PSArenaExit', AE)
{
DXP.SetCollision(false, false, false);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.SetLocation(AE.location);
DXP.SetCollision(true, true , true);
DXP.SetPhysics(PHYS_Walking);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.ClientReStart();
}
}
}
}
else
{
BroadcastMessage("Match over! Players defeated.");
foreach ZoneActors(class'DXEnemy', DXE)
DXE.Destroy();

}

PST.Destroy();
bRunning=False;
foreach AllActors(class'PSArenaExitswitch', PSAEx)
if(PSAEx.Tag == ExitButtonTag)
PSAEx.bPSActive=True;
foreach AllActors(class'PSArenaEntryswitch', PSAEn)
if(PSAEn.Tag == EntryButtonTag)
PSAEn.bPSActive=True;
foreach AllActors(class'PSArenaStartswitch', PSAEs)
if(PSAEs.Tag == StartButtonTag)
PSAEs.bPSActive=True;

Kombat


local int i;
local PSArenaSpawner PSA;
local DeusExPlayer DXP;
local int p;

p = Rand(5);

foreach ZoneActors(class'DeusExPlayer', DXP)
DXP.ClientSetMusic( myTrack, SongSection, CdTrack, Transition );
if(p == 0)
for(i=0;i<10;i++)
foreach AllActors(class'PSArenaSpawner', PSA)
if(PSA.Tag == PSATags[i])
Spawn(EnemiesGroupOne[i],,,PSA.Location);
if(p == 1)
for(i=0;i<10;i++)
foreach AllActors(class'PSArenaSpawner', PSA)
if(PSA.Tag == PSATags[i])
Spawn(EnemiesGroupTwo[i],,,PSA.Location);

if(p == 2)
for(i=0;i<10;i++)
foreach AllActors(class'PSArenaSpawner', PSA)
if(PSA.Tag == PSATags[i])
Spawn(EnemiesGroupThree[i],,,PSA.Location);

if(p == 3)
for(i=0;i<10;i++)
foreach AllActors(class'PSArenaSpawner', PSA)
if(PSA.Tag == PSATags[i])
Spawn(EnemiesGroupFour[i],,,PSA.Location);

if(p == 4)
for(i=0;i<10;i++)
foreach AllActors(class'PSArenaSpawner', PSA)
if(PSA.Tag == PSATags[i])
Spawn(EnemiesGroupFive[i],,,PSA.Location);

bRunning=True;




PSComputer.uc (extends DeusExDecoration)

var() string Username, Password;
var() string Messages[250];
var() string Notifications[250];
var() name ZoneTag;
var() bool bDebug;
var() string Group;
var() string InfoProp[16];
var class StoredInv[10];
var() config string EventAlias;
var() config name EventName;
var(Accounts) config EvStr pEvents[25];
var vector StoredLocation[10]; //Used for mark/recall
var int StoredCredits; //Used for the banking feature.
var DeusExPlayer pgUser; //Used to define the owner.
var PSComputerHandheld PSC; //Allow remote access, its a usable item that calls the functions from this, it executes frob for the player?
var string PrevCommand;
var float prevdist;
var Actor PrevpingA;
var() bool bCodebreakerEnabled;
var string Hax0rs[25];
var Actor Hax0rObj;
var int Hax0rStep;
var string generatedCode;
var() bool bOverdriver;
var string LastWord;
var int Stage;
var actor ODActor;
var() bool bFileManager;
var string CurFilePath;
var Actor FileActor;
userName="DEFAULT"
Password="DEFAULT"
InfoProp(0)="Health"
InfoProp(1)="Energy"
InfoProp(2)="ReducedDamageType"
InfoProp(3)="bAdmin"
bInvincible=True
ItemName="Personal Computer Terminal"
bPushable=False
Mesh=LodMesh'DeusExDeco.ComputerPersonal'
CollisionRadius=36.000000
CollisionHeight=7.400000

AddMail (string User, string Msg)


local int i;


if(pgUser != None)
xAlert("Mail","|P3You have mail!");
for(i=0;i<250;i++)
{
if(Messages[i] == "")
{
Messages[i] = User$": "$Msg;
return;
}
}

Bump (actor Other)


local int i;


if(Inventory(Other) != None)
{
for(i=0;i<10;i++)
{
if(StoredInv[i] == None)
{
xAlert("Alert",Inventory(Other).itemName$" stored in slot "$i);
StoredInv[i] = Inventory(Other).class;
Other.Destroy();
return;
}
}
}


ClearMail


local int i, k;


for(i=0;i<250;i++)
{
if(Messages[i] != "")
{
k++;
Messages[i] = "";
}
}

xAlert("Mail",k$" messages deleted.");

CountMail (optional bool bUnreadOnly) -> int


local int i, k;


if(!bUnreadOnly)
{
for(i=0;i<250;i++)
{
if(Messages[i] != "")
{
if(instr(caps(Messages[i]), caps("[X]")) == -1)
{
k++;
}
}
}
}
else
{
for(i=0;i<250;i++)
{
if(Messages[i] != "")
{
k++;
}
}
}
return k;

CountNotif -> int


local int i, k;


for(i=0;i<250;i++)
{
if(Notifications[i] != "")
{
k++;
}
}
return k;

DelMail (int i)


if(bDebug)
Log(i);
if(Messages[i] != "")
{
xAlert("Mail","Deleted message ["$Messages[i]$"]");
Messages[i] = "";
}
else
xAlert("Mail","Error: Message is already empty.");

EndHack


local int i;


Hax0rObj = None;
Hax0rStep = 0;
for(i=0;i<25;i++)
Hax0rs[i] = "";


FailHack


local int i;


pgUser.TakeDamage(100, Pawn(Owner), Owner.Location, Vect(0,0,0), 'EMP');
Hax0rObj = None;
Hax0rStep = 0;
for(i=0;i<25;i++)
Hax0rs[i] = "";

Frob (actor frobber, inventory frobwith)


local DeusExPlayer P;
local PSComputerReplicationactor newlogin, f;
local bool bFound, bRemembered;
local string str;


P = DeusExPlayer(frobber);
P.PlaySound(sound'Find',,,, 256);
if(pgUser == P)
{
bRemembered=True;
pgUser.ClientMessage("|P4Recognized user; Password not required. You may just enter commands.");
if(CountMail(True) > 0)
str = "You have "$CountMail(True)$" unread messages.|n";
if(CountNotif() > 0)
str = str$"You have "$CountNotif()$" notifications! (Command reads)";

if(str != "")
xAlert("Alert",str);
}
if(bdebug)
log("Computer: "$bRemembered@password);
foreach AllActors(class'PSComputerReplicationactor', f)
if(f.Flagger == P)
{
f.Flagger = P;
f.ac = self;
f.SetTimer(0.5,false);
f.Username = Username;
f.bRem=bRemembered;
f.Password = Password;
bFound=True;
}

if(!bFound)
{
newlogin = Spawn(class'PSComputerReplicationactor');
newlogin.Flagger = P;
newlogin.ac = self;
newlogin.Username = Username;
newlogin.SetTimer(0.5,false);
}

GiveTool


local PSComputerHandheld anItem;


anItem = Spawn(class'PSComputerHandheld',,,pgUser.Location);
anItem.SpawnCopy(pgUser);
anItem.Destroy();

GroupMail (string mailstring)


local string sendstring, msg, target;
local PSComputer PSComp;
local bool bFound;
local int k;


pgUser.PlaySound(sound'Send',,,, 256);


foreach AllActors(class'PSComputer', PSComp)
{
if(PSComp.Group ~= Group)
{
//pgUser.ClientMessage("|P3Message sent!");
//pgUser.ClientMessage(Username$": "$Msg);
k++;
Log(Username$" sent mail to "$PSComp.Username$" via group "$group$". ("$mailstring$")");
PSComp.AddMail(Username$" ("$Group$")", mailstring);
}
}
if(!bFound)
{
xAlert("Error", "|P3Message error: Group is empty.");
}
else
{
xAlert("Mail","|P4Mail sent to group "$k$" users in "$Group$" group.|P1|n"$mailstring);
}

InfoChk -> string


local string str;
local int k;

str = "INFO";
for(k=0;k<16;k++)
{
if(InfoProp[k] != "")
{
if(k==4 || k==8)
str = str$", "$InfoProp[k]$"="$pgUser.GetPropertyText(InfoProp[k])$"|n";
else
str = str$", "$InfoProp[k]$"="$pgUser.GetPropertyText(InfoProp[k]);
}
}
return str;

ListComps (optional bool bMyGroup)


local int k;
local string str, inf;
local PSComputer PSComp;


if(!bMyGroup)
{
inf = "[GLOBAL]";
foreach AllActors(class'PSComputer',PSComp)
{
k++;
if(k==6 || k==9)
str = str$", "$PSComp.Username$"|n";
else
str = str$", "$PSComp.Username;
}
}
else
{
if(Group != "")
{
inf = "["$Group$"]";
foreach AllActors(class'PSComputer',PSComp)
{
if(PSComp.Group ~= Group)
{
k++;
if(k==6 || k==9)
str = str$", "$PSComp.Username$"|n";
else
str = str$", "$PSComp.Username;
}
}
}
else
{
inf = "[NO GROUP]";
}
}
xAlert(k$" computers",inf@str$" [END]");

ListInv


local int i, k;
local string str;

for(i=0;i<10;i++)
{
if(StoredInv[i] != None)
{
k++;
if(k==3)
str = str$"["$i$"] "$StoredInv[i]$"|n";
else
str = str$"["$i$"] "$StoredInv[i]$", ";
}
}

xAlert(k$" items",str$" [END]");

ListLocs


local int i, k;
local string str;

for(i=0;i<10;i++)
{
if(StoredLocation[i] != vect(0,0,0))
{
str = str$"["$i$"] Yes, ";
}
// else
//{
// str = str$"["$i$"] No, ";
// }

ListMail


local int i, k;
local string str;

for(i=0;i<250;i++)
{
if(Messages[i] != "")
{
k++;
str = str$Messages[i]$"|n";
if(instr(caps(Messages[i]), caps("[X]")) == -1)
Messages[i] = "[X]"$Messages[i];
}
}

xAlert(k$" messages",str$" [END]");

ListNotif


local int i, k;
local string str;


for(i=0;i<250;i++)
{
if(Notifications[i] != "")
{
while(k < 6)
{
k++;
str = str$Notifications[i]$"|n";
Notifications[i] = "";
}
}
}


xAlert(k$" notifications",str$" [END]");

Notif (string Msg)


local int i;


if(pgUser != None)
xAlert("Alert","|P3You have new notifications!");
for(i=0;i<250;i++)
{
if(Notifications[i] == "")
{
Notifications[i] = Msg;
return;
}
}

ParseCommand (deusexplayer p, string inputPassword, string Command) -> bool


local string mailstring, sendstring, target, msg;
local int mailint,i, b;
local bool bPassedCommand, bPassedMail, bFound;
local actor a;
local bool bSkipPass;
local PSComputerReplicationActor f;
local MenuUIMessageBoxWindow mes;
local PSComputerHandheld toolz;
local PSComputer PSComp;
local Actor hitActor;
local vector loc, line, HitLocation, hitNormal;
local string redcode;


if(bDebug)
{
Log(p.playerreplicationinfo.playername@username@inputpassword@command);
P.ClientMessage(p.playerreplicationinfo.playername@username@inputpassword@command);
}

if(pgUser == P)
{
bSkipPass=True;
}

if(!bSkipPass && inputPassword != Password)
{
xAlert("Alert","ERROR: Incorrect password.", p);
return false;
}

if(pgUser != P)
{
P.PlaySound(sound'Auth',,,, 256);
pgUser = P;
P.ClientMessage("Synced to computer.");
}

if(Command == "" && PrevCommand != "")
{
ParseCommand(pgUser, Password, PrevCommand);
return true;
}

PrevCommand = Command;

if(Left(command,7) ~= "redeem ")
{
mailstring = Right(command, Len(command)-instr(command,"redeem ")-Len("redeem "));
if(mailstring == "wtfhax0rftw" && !bCodebreakerEnabled)
{
bCodebreakerEnabled = True;
redcode = "_codebreaker (script.dat)|n [WARNING: This package is in testing and may not function properly.|nFunctionality may also change over time.] ";

}

if(mailstring == "overdose" && !bOverdriver)
{
bOverdriver = True;
redcode = "_overdriver (overdriver.dat)|n [WARNING: This package is in testing and may not function properly.|nFunctionality may also change over time.] ";

}

if(mailstring == "boxx" && !bFileManager)
{
bFileManager = True;
redcode = "_fileman (files.dat)|n [WARNING: This package is in testing and may not function properly.|nFunctionality may also change over time.] ";

}

if(redcode != "")
xAlert("Redeemer", "Code redeemed successfully.|nThis code has activated the following system: "$redcode$"|nUse Help to access the info for the newly activated packages.");
else
xAlert("Error", "Code invalid or already redeemed.");
bPassedCommand=True;
return true;
}

if(command ~= "script")
{
if(bCodebreakerEnabled)
{
pgUser.PlaySound(sound'PhoneVoice3');
loc = pgUser.Location;
loc.Z += pgUser.BaseEyeHeight;
line = Vector(pgUser.ViewRotation) * 4000;
hitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);
if(Hax0rObj == hitActor && !hitActor.isA('LevelInfo')) //Resuming?
{
xHack();
}
else if(hitActor != None && !hitActor.isA('LevelInfo')) //NewHack
{
Hax0rStep=0;
for(i=0;i<25;i++)
Hax0rs[i] = "";
xHack();
}
else
xAlert("ERROR", "Script failed, no object found.");
}
else xAlert("Error", "Your computer does not have the relevant access or software to perform this task.|nContact an administrator for assistance.");

bPassedCommand=True;
return true;
}

if(command ~= "overdriver")
{
if(bOverdriver)
{
pgUser.PlaySound(sound'PhoneVoice3');
loc = pgUser.Location;
loc.Z += pgUser.BaseEyeHeight;
line = Vector(pgUser.ViewRotation) * 4000;
hitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);

if(hitActor != None && !hitActor.isA('LevelInfo')) //NewHack
{
LastWord = "";
ODActor = hitActor;
xOD();
}
else
xAlert("ERROR", "Script failed, no object found.");
}
else xAlert("Error", "Your computer does not have the relevant access or software to perform this task.|nContact an administrator for assistance.");
}

if(command ~= "files")
{
if(bFileManager)
{
pgUser.PlaySound(sound'PhoneVoice3');
loc = pgUser.Location;
loc.Z += pgUser.BaseEyeHeight;
line = Vector(pgUser.ViewRotation) * 4000;
hitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);
if(FileActor == hitActor && !hitActor.isA('LevelInfo')) //Resuming?
{
xFileMan();
}
else if(hitActor != None && !hitActor.isA('LevelInfo')) //NewHack
{
FileActor=hitActor;
CurFilePath="/";
xFileMan();
}
else
xAlert("ERROR", "Script failed, no object found.");
}
else xAlert("Error", "Your computer does not have the relevant access or software to perform this task.|nContact an administrator for assistance.");
}

if(command ~= "me")
{
xAlert(Username,myData());
bPassedCommand=True;
return true;
}
if(Left(command,6) ~= "group ")
{
mailstring = Right(command, Len(command)-instr(command,"group ")-Len("group "));
SetGroup(mailstring);
bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "group")
{
ListComps(True);
bPassedCommand=True;
return true;
}

if(Left(command,4) ~= "info")
{
xAlert(pgUser.PlayerReplicationInfo.PlayerName$" info", InfoChk());
bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "ping ")
{
mailstring = Right(command, Len(command)-instr(command,"ping ")-Len("ping "));
PingLoc(mailstring);
bPassedCommand=True;
return true;
}

if(Left(command,3) ~= "chk")
{
ListNotif();
bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "help ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"help ")-Len("help "));
if(mailstring ~= "handheld")
xAlert("Help", "Gives the Handheld Computer item which allows you to remotely access this computer.");
else if(mailstring ~= "recall")
xAlert("Help", "|P1Format: recall |n|P2Teleports you to that location.");
else if(mailstring ~= "mark")
xAlert("Help", "|P1Format: mark |n|P2Saves your current location in the slot number which is called by the recall command.|n|P7Best used from the handheld computer.");
else if(mailstring ~= "dbg")
xAlert("Help", "Toggles debugging messages.");
else if(mailstring ~= "togglesec")
xAlert("Help", "Toggles the Drone Security system.|n|P7Requires the Zone to be configured.");
else if(mailstring ~= "togglealert")
xAlert("Help", "Toggles the Drone Security system notifications, which alerts you if someone enters..|n|P7Requires the Zone to be configured.");
else if(mailstring ~= "cred+")
xAlert("Help", "|P1Format: cred+|n|P2Deposits credits in to the computer.");
else if(mailstring ~= "cred-")
xAlert("Help", "|P1Format: cred-|n|P2Withdraws credits from the computer.");
else if(mailstring ~= "give")
xAlert("Help", "|P1Format: give |n|P2Withdraws the item from the computer.|n|P7Items are stored by throwing them at the computer.|nThe alert tells you which slot it saves to.|nThe item is not deleted. Refer to Clearitem.");
else if(mailstring ~= "clearitem")
xAlert("Help", "|P1Format: clearitem |n|P2Removes the item from the computer.|n|P7Items are stored by throwing them at the computer.|nThe alert tells you which slot it saves to.");
else if(mailstring ~= "setusername")
xAlert("Help", "|P1Format: setusername |n|P2Sets this computers username.");
else if(mailstring ~= "setpass")
xAlert("Help", "|P1Format: setpass |n|P2Sets this computers password.");
else if(mailstring ~= "alert")
xAlert("Help", "|P1Format: alert |n|P2Prints a message on screen.");
else if(mailstring ~= "exec")
xAlert("Help", "|P1Format: exec |n|P2Executes the command stored in the memory. |nUse getexec cmmand to show the list of current commands.");
else if(mailstring ~= "mail")
xAlert("Help", "|P1Format: mailsend : |P2Sends email to the computer labeled that username.|nmailread : Reads mail in that slot.|nmaildel : Deletes mail in that slot.|nmailclear, maillist, mailcount.|nmailgroup sends to your group.");
else if(mailstring ~= "me")
xAlert("Help", "|P1Format: me: |P2Shows basic computer information.");
else if(mailstring ~= "ping")
xAlert("Help", "|P1Format: ping : |P2Gives location to X object.");
else if(mailstring ~= "script" && bCodebreakerEnabled)
xAlert("Help", "|P1Format: script: |P2Enables script input for targetted object. [WIP]");
else if(mailstring ~= "overdriver" && bOverdriver)
xAlert("Help", "|P1Format: overdriver: |P2Dictionary override input for targetted object. [WIP]|nOverloads the target objects by brute forcing passwords.|nGives one word, enter another word that's first letter is the last words last letter.|ne.g. worm -> master -> rekked");
else if(mailstring ~= "files" && bFileManager)
xAlert("Help", "|P1Format: files: |P2Enables file manager for targetted object. [WIP]|nBrowser is command-line based.|nBrowser starts at ROOT:/|nCommands: list, cd, open");
else xAlert("Help", "Could not find searched command.");
return true;

}

if(Left(command,4) ~= "help")
{
if(bCodebreakerEnabled)
redcode = redcode$" script";
if(bFileManager)
redcode = redcode$" files";
if(bOverdriver)
redcode = redcode$" overdriver";

if(redcode == "")
redcode = "NONE";

xAlert("Help Topics","handheld, recall, mark, dbg, togglesec, togglealert, cred+, cred-|n give, clearitem, setusername, setpass, alert, exec, mail, invs, locs, comps, group|nme, ping|n|P4EXTRA PACKAGES: "$redcode);
bPassedCommand=True;
return true;
}

if(Left(command,8) ~= "handheld")
{
GiveTool();
xAlert("Alert","Given the Handheld tool.");
bPassedCommand=True;
return true;
}

if(Left(command,7) ~= "recall ")
{
mailint = int(Right(command, Len(command)-instr(command,"recall ")-Len("recall ")));
if(StoredLocation[mailint] != vect(0,0,0))
{
pgUser.SetCollision(false, false, false);
pgUser.bCollideWorld = true;
pgUser.GotoState('PlayerWalking');
pgUser.SetLocation(StoredLocation[mailint]);
pgUser.SetCollision(true, true , true);
pgUser.SetPhysics(PHYS_Walking);
pgUser.bCollideWorld = true;
pgUser.GotoState('PlayerWalking');
pgUser.ClientReStart();
xAlert("Alert","Sent to location.");
}

bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "mark ")
{
mailint = int(Right(command, Len(command)-instr(command,"mark ")-Len("mark ")));

StoredLocation[mailint] = pgUser.Location;
xAlert("Alert","Marked location.");
bPassedCommand=True;
return true;
}

if(Left(command,3) ~= "dbg")
{
bDebug = !bDebug;
xAlert("Alert","Debug is now "$bDebug$".");
bPassedCommand=True;
return true;
}

if(Left(command,4) ~= "test")
{
xAlert("Alert","Tested.");
bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "comps")
{
ListComps();
bPassedCommand=True;
return true;
}

if(Left(command,4) ~= "locs")
{
ListLocs();
bPassedCommand=True;
return true;
}

if(Left(command,4) ~= "invs")
{
ListInv();
bPassedCommand=True;
return true;
}

if(Left(command,9) ~= "togglesec")
{
ToggleSecurity(P);
bPassedCommand=True;
return true;
}

if(Left(command,11) ~= "togglealert")
{
ToggleAlert(P);
bPassedCommand=True;
return true;
}

if(Left(command,5) ~= "cred+")
{
mailint = int(Right(command, Len(command)-instr(command,"cred+")-Len("cred+")));
bPassedCommand=True;

if(mailint == -1)
{
StoredCredits += pgUser.Credits;
pgUser.Credits = 0;
xalert("Alert", "All credits deposited.|n"$StoredCredits$" currently stored.");
}
if(pgUser.Credits >= mailint)
{
pgUser.Credits -= mailint;
StoredCredits += mailint;
xalert("Alert", mailint$" credits deposited.|n"$StoredCredits$" currently stored.");
}
else
xalert("Alert", "You don't have enough.");
return true;
}

if(Left(command,5) ~= "cred-")
{
mailint = int(Right(command, Len(command)-instr(command,"cred-")-Len("cred-")));
bPassedCommand=True;

if(mailint == -1)
{
pgUser.Credits += StoredCredits;
StoredCredits = 0;
xalert("Alert", "All credits withdrawn.|n"$pgUser.Credits$" currently held.");
}
if(StoredCredits >= mailint)
{
StoredCredits -= mailint;
pgUser.Credits += mailint;
xalert("Alert", mailint$" credits withdrawn.|n"$pgUser.Credits$" currently held.");
}
else
xalert("Alert", "You don't have enough.");
return true;
}

if(Left(command,5) ~= "give ")
{
mailint = int(Right(command, Len(command)-instr(command,"give ")-Len("give ")));
bPassedCommand=True;
if(StoredInv[mailint] != None)
{
SilentAdd(StoredInv[mailint],pgUser);
bFound=True;
}

if(bFound)
xalert("Alert", mailint@StoredInv[mailint]$" withdrawn.");
else
xalert("Alert", "Slot is empty.");
return true;
}

if(Left(command,10) ~= "clearitem ")
{
mailint = int(Right(command, Len(command)-instr(command,"clearitem ")-Len("clearitem ")));
bPassedCommand=True;
if(StoredInv[mailint] != None)
{
SilentAdd(StoredInv[mailint],pgUser);
bFound=True;
}

if(bFound)
xalert("Alert", mailint$" cleared.");
else
xalert("Alert", "Slot is already empty.");
return true;
}

if(Left(command,6) ~= "alarm ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"alarm ")-Len("alarm "));
if(bDebug)
log("alarm:"@mailstring);

if(instr(caps(mailstring), caps(":")) != -1)
{
xAlert("Alarm","[Unfinished command, doesnt yet function]|nSetting alarm for"@mailstring);
//SetAlarm(mailstring);
}
else
{
xAlert("Alarm","Alarm string is badly formatted. Accepted format is HOUR:MINUTE.");
}

}

if(Left(command,12) ~= "setusername ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"setusername ")-Len("setusername "));
if(bDebug)
log("setuser:"@mailstring);

foreach AllActors(class'PSComputer',PSComp)
PSComp.Notif(username$" changed their username to "$mailstring);
xAlert("Info", "Setting username...|nPrevious: "$Username$"|nNew: "$mailstring);
Username = mailstring;

}

if(Left(command,8) ~= "setpass ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"setpass ")-Len("setpass "));
if(bDebug)
log("setpass:"@mailstring);

xAlert("Info", "Setting Password...|nPrevious: "$Password$"|nNew: "$mailstring);
Password = mailstring;

}

if(Left(command,6) ~= "alert ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"alert ")-Len("alert "));
if(bDebug)
log("alert:"@mailstring);

xAlert("Test", mailstring);

}

if(Left(command,5) ~= "exec ")
{
bPassedCommand=True;
mailstring = Right(command, Len(command)-instr(command,"exec ")-Len("exec "));
if(bDebug)
log("exec:"@mailstring);

for(i=0;i<25;i++)
{
if(mailstring ~= pEvents[i].EventAlias)
{
foreach AllActors(class'Actor', A)
{
if(A.Tag == pEvents[i].EventName)
{
b++;
A.Trigger(self,pgUser);
//pgUser.ClientMessage(pEvents[i].EventAlias$" triggered.");
}
}
}
}
xAlert("Alert",b$" events triggered for "$mailstring);
}

if(Left(command,4) ~= "mail") //Add list to show all, and count to show how many
{
bPassedCommand=True;
//mailstring is everything after mail, format mailsend x, mailread x
mailstring = Right(command, Len(command)-instr(command,"mail")-Len("mail"));
if(bDebug)
log("mailer"@mailstring);
if(Left(mailstring,6) ~= "group ")
{
//sendstring is everything after send, mailsend xxxxx
msg = Right(mailstring, Len(mailstring)-instr(mailstring,"group ")-Len("group "));
bPassedMail=True;
GroupMail(msg);
return true;
}
if(Left(mailstring,5) ~= "send ")
{
//sendstring is everything after send, mailsend xxxxx
msg = Right(mailstring, Len(mailstring)-instr(mailstring,"send ")-Len("send "));
bPassedMail=True;
SendMail(msg);
return true;
}
if(Left(mailstring,5) ~= "read ")
{
mailint = int(Right(mailstring, Len(mailstring)-instr(mailstring,"read ")-Len("read ")));
bPassedMail=True;
//p.clientmessage(ReadMail(mailint));
xalert("Mail", readmail(mailint));
return true;
}
if(Left(mailstring,4) ~= "del ")
{
mailint = int(Right(mailstring, Len(mailstring)-instr(mailstring,"del ")-Len("del ")));
bPassedMail=True;
DelMail(mailint);
return true;
}
if(Left(mailstring,5) ~= "clear")
{
ClearMail();
bPassedMail=True;
return true;
}
if(Left(mailstring,4) ~= "list")
{
ListMail();
bPassedMail=True;
return true;
}

if(!bPassedMail)
xalert("Mail", "Mailer function not recognized.");
}
if(!bPassedCommand)
xalert("Error", "Command not recognized.");

ParseHack (string Command) -> bool


local Actor hitActor;
local vector loc, line, HitLocation, hitNormal;
local DeusExMover hitMover;
local DeusExDecoration hitDecoration;
local ScriptedPawn hitPawn;
local DeusExPlayer hitPlayer;


if(Hax0rObj != None)
{
hitMover = DeusExMover(Hax0rObj);
hitPawn = ScriptedPawn(Hax0rObj);
hitDecoration = DeusExDecoration(Hax0rObj);
hitPlayer = DeusExPlayer(Hax0rObj);
if (hitMover != None)
{
if(Hax0rStep == 0)
{
if(Command ~= "debug()")
{
Hax0rStep=1;
xAlert("Door", "event<>'Debug mode enabled.'|n|nAny incorrect commands will end the session.|nhelp() for assistance.|nexit() to end session. (Menu will not close, must be closed manually.)");
return true;
}
else if(Command ~= "exit()")
{
EndHack();
return true;
}
else
FailHack();
}
if(Hax0rStep == 1)
{
if(Command ~= "help()")
{
xAlert("Door", ">>> ELECTRONIC_DOOR (DEBUG)|ndebug() override() dumpcodes() exit()");
return true;
}
else if(Command ~= "debug()")
{
xAlert("Door", ">>> ELECTRONIC_DOOR (DEBUG)|nDebug mode already active.|n< return true;
}
else if(Command ~= "Override()")
{
xAlert("Door", ">>> ELECTRONIC_DOOR (DEBUG)|nActivating override mode.|n>>cancel() to return to debug menu|n>>ELSE Input override code.");
Hax0rStep = 2;
return true;
}
else if(Command ~= "exit()")
{
EndHack();
return true;
}
else
FailHack();
}
if(Hax0rStep == 2)
{
if(Command ~= "cancel()")
{
xAlert("Door", ">>>Returning to debugging.");
Hax0rStep = 1;
return true;
}
else if(Command ~= generatedCode)
{
xAlert("Door", ">>> ELECTRONIC_DOOR (DEBUG)|nCode accepted.|nOverride mode enabled.|nEnter properties to modify.|nexit() to quit.");
Hax0rStep = 3;
return true;
}
else FailHack();
}
if(Hax0rStep == 3)
{
if(Command ~= "exit()")
EndHack();
else if(Command ~= "open()")
hitMover.Trigger(pgUser, pgUser);
/*else if( hitMover.GetPropertyText(caps(Command)) != "")
{
Hax0rStep=4;
}*/
else
xAlert("Door", "Error in property...");

}
}
else if (hitPawn != None)
{
if(Hax0rStep == 0)
{
if(Command ~= "debug()")
{
Hax0rStep++;
pgUser.ClientMessage("event>>rundebug()");
return true;
}
else
FailHack();
}
}
else if (hitDecoration != None)
{
if(Hax0rStep == 0)
{
if(Command ~= "debug()")
{
Hax0rStep++;
pgUser.ClientMessage("event>>rundebug()");
return true;
}
else
FailHack();
}
}
else if (hitPlayer != None)
{
if(Hax0rStep == 0)
{
if(Command ~= "debug()")
{
Hax0rStep++;
pgUser.ClientMessage("event>>rundebug()");
return true;
}
else
FailHack();
}
}
}
else
xAlert("ERROR", "Script failed... No object");

PingLoc (string ident)


local PSComputer PST;
local int k;
local string str;
local float dist;
local string disttype;
local Actor A;


foreach AllActors(class'Actor',A)
{
if(string(a.Tag) ~= ident)
{
if(PrevPingA == A) //Repinging same actor
{
dist = VSize(a.Location - pgUser.Location);
if(PrevDist != 0)
{
if(PrevDist > dist)
disttype="("$dist$" - Closer than before)";
else if(PrevDist < dist)
disttype="("$dist$" - Further than before)";
else
disttype="("$dist$" - Same as before)";
}
else
{
disttype="("$dist$")";
}

PrevDist = dist;
xAlert("Ping",GRNFT(ident)@disttype);
PrevDist = dist;
}
else
{
PrevPingA = A;
PrevDist = VSize(a.Location - pgUser.Location);
xAlert("Ping", GRNFT(ident)@PrevDist);
}





}
}

ReadMail (int i) -> string


local string str;

if(bDebug)
Log(i);
if(Messages[i] != "")
{
str = Messages[i];
if(instr(caps(Messages[i]), caps("[X]")) == -1)
Messages[i] = "[X]"$Messages[i];
return str;
}
else
return "Error: Message is empty.";

SendMail (string mailstring)


local string sendstring, msg, target;
local PSComputer PSC;
local bool bFound;

pgUser.PlaySound(sound'Send',,,, 256);
//msg is everything after the first space in sendstring, or everything to the right of it
msg = Right(mailstring, Len(mailstring)-instr(mailstring," ")-Len(" "));
//Target is everything to the left of the first space, to be the username
target = Left(Right(mailstring, Len(mailstring)),InStr(mailstring," "));
//target = Left(sendstring, Len(sendstring)-instr(sendstring," "));
if(bDebug)
{
log("mailstring:"@mailstring);
log("Target:"@target);
log("MSG:"@msg);
}
foreach AllActors(class'PSComputer', PSC)
{
if(PSC.Username ~= Target)
{
//pgUser.ClientMessage("|P3Message sent!");
//pgUser.ClientMessage(Username$": "$Msg);
xAlert("Mail","|P4Mail sent to "$Target$".|P1|n"$msg);
Log(Username$" sent mail to "$Target$". ("$MSG$")");
PSC.AddMail(Username, MSG);
bFound=True;
}
}
if(!bFound)
{
xAlert("Error", "|P3Message error: No computer found for that username. ["$Target$"]");
}

SetGroup (string newgroup)


local string sendstring, msg, target, str;
local PSComputer PSComp;
local bool bFound;
local int k;


foreach AllActors(class'PSComputer', PSComp)
if(PSComp.Group ~= Group && Group != "" && PSComp != Self)
PSComp.Notif(username$" left your group! ("$group$")");

Group = newgroup;

foreach AllActors(class'PSComputer', PSComp)
{
if(PSComp.Group ~= Group && PSComp.Group != "" && PSComp != Self)
{
k++;

if(k==6 || k==9)
str = str$", "$PSComp.Username$"|n";
else
str = str$", "$PSComp.Username;

PSComp.Notif(username$" joined your group! ("$group$")");
}
}
xAlert("Group","Joined "$Group$".|n"$str);

SilentAdd (class addClass, optional DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass,,,addTarget.Location);
anItem.SpawnCopy(addTarget);
anItem.Destroy();

ToggleAlert (deusexplayer p)


local PSZoneInfo PSZ;


P.PlaySound(sound'Send',,,, 256);

if(ZoneTag == 'None')
{
xAlert("Error","Security system not configured...");
return;
}
foreach AllActors(class'PSZoneInfo',PSZ)
{
if(PSZ.Tag == ZoneTag)
{
if(PSZ.NotifPlayer != None)
{
PSZ.NotifPlayer = None;
xAlert("Alert","Cancelled zone alerts.");
return;
}
else
{
PSZ.NotifPlayer = P;
xAlert("Alert","Registered for zone alerts.");
return;
}
}
}

ToggleSecurity (deusexplayer p)


local PSZoneInfo PSZ;


P.PlaySound(sound'Send',,,, 256);

if(ZoneTag == 'None')
{
xAlert("Error","Security system not configured...");
return;
}
foreach AllActors(class'PSZoneInfo',PSZ)
{
if(PSZ.Tag == ZoneTag)
{
PSZ.bRestrictedZone = !PSZ.bRestrictedZone;
if(PSZ.bRestrictedZone)
xAlert("Alert","Security system enabled");
else
xAlert("Alert","Security system disabled");
}
}

myData -> string


return "Notifications: "$CountNotif()$"|nMail: "$CountMail(True)$"/"$CountMail()$"|nCredits "$StoredCredits;

xAlert (string title, string msg, optional DeusExPlayer Target)


local PSComputerReplicationactor f;


foreach AllActors(class'PSComputerReplicationactor', f)
{
if(Target == None)
{
if(f.Flagger == pgUser)
f.cAlert(title, msg);
}
else
{
if(f.Flagger == Target)
f.cAlert(title, msg);
}
}

xFileMan


local PSComputerReplicationactor f;


//foreach AllActors(class'PSComputerReplicationactor', f)
//if(f.Flagger == pgUser)
// f.cMenuFiles();

xHack


local PSComputerReplicationactor f;


foreach AllActors(class'PSComputerReplicationactor', f)
{
if(f.Flagger == pgUser)
f.cMenuHack();
}

xOD


local PSComputerReplicationactor f;


//foreach AllActors(class'PSComputerReplicationactor', f)
//if(f.Flagger == pgUser)
//f.cMenuOD();




PSComputerHandheld.uc (extends DeusExPickup)

maxCopies=1
bActivatable=True
ItemName="Handheld Computer"
PlayerViewOffset=(X=20.000000,Y=10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.MultitoolPOV'
PickupViewMesh=LodMesh'DeusExItems.Multitool'
ThirdPersonMesh=LodMesh'DeusExItems.Multitool3rd'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconMultitool'
M_Activated=" connecting to network..."
largeIcon=Texture'DeusExUI.Icons.LargeIconMultitool'
largeIconWidth=28
largeIconHeight=46
Description=""
beltDescription="COMPUTER"
Mesh=LodMesh'DeusExItems.Multitool'
CollisionRadius=4.800000
CollisionHeight=0.860000
Mass=20.000000
Buoyancy=10.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player, hitplayer;
local scriptedpawn hitpawn;
local dxScriptedPawn hitpawn2;
local Actor hitActor;
local Vector hitLocation, hitNormal;
local Vector position, line;
local float Dist;
local PSComputer psc;
local bool bFound;


Super.BeginState();
player = DeusExPlayer(Owner);

foreach AllActors(class'PSComputer',psc)
if(PSC.pgUser == player)
{
bFound=True;
PSC.Frob(player, Self);
}

if(!bFound)
player.clientmessage("No computer found... Be sure to successfully login to one to register it.");
GotoState('DeActivated');

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 1;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




PSComputerMenu.uc (extends MenuUIScreenWindow)

var MenuUIActionButtonWindow SendButton, exitButton;
var MenuUIEditWindow editCommand, editPassword;
var MenuUIHeaderWindow winText;
var localized string exitbuttontext, passwordlabel, sendbuttontext, commandlabel;
var DeusExPlayer _windowOwner;
var PSComputer Ac;
var PSComputerReplicationActor Mastah;
var localized string Username;
var string Password;
var bool bRem;
var MenuUIMessageBoxWindow AlertWin;
exitbuttontext="Exit"
PasswordLabel="Password"
sendbuttontext="Send "
commandlabel="Command"
ClientWidth=300
ClientHeight=75
textureRows=3
textureCols=2
bUsesHelpWindow=False

AddUserTitle (string str)


SetTitle("["$str$"] playgroundOS v0.8");

ButtonActivated (Window buttonPressed) -> bool


local bool bHandled;
local string GetCom, GetPass;

bHandled = True;

Super.ButtonActivated(buttonPressed);

switch( buttonPressed )
{
case SendButton:
GetCom = editCommand.GetText();
GetPass = editPassword.GetText();
if(Mastah.ParseCommand(_windowOwner, getPass, getCom))
{
//_windowOwner.ClientMessage("Sending login"@_windowowner.playerreplicationinfo.playername@getuser@getpass);
root.PopWindow();
bHandled = True;
}
// }
break;

case exitButton:
root.PopWindow();
bHandled = True;
break;

default:
bHandled = False;
break;

CreateTextWindow


winText = CreateMenuHeader(21, 13, "", winClient);
winText.SetTextAlignments(HALIGN_Center, VALIGN_Center);
winText.SetFont(Font'FontMenuHeaders_DS');
winText.SetWindowAlignments(HALIGN_Full, VALIGN_Full, 20, 14);

InitWindow


local Window W;


Super.InitWindow();
CreateTextWindow();
SendButton = winButtonBar.AddButton(sendButtonText, HALIGN_Right);
exitButton = winButtonBar.AddButton(exitButtonText, HALIGN_Right);

CreateMenuLabel(10, 22, CommandLabel, winClient);
CreateMenuLabel(10, 55, PasswordLabel, winClient);
editPassword = CreateMenuEditWindow(105, 54, 143, 20, winClient);
EditCommand = CreateMenuEditWindow(105, 20, 143, 20, winClient);
EditCommand.SetMaxSize(70); //cap said to fit the window as best as possible until the word wrap can be figured out..

winClient.SetBackground(Texture'DeusExUI.MaskTexture');
winClient.SetBackgroundStyle(DSTY_Modulated);

W = winClient.NewChild(Class'Window');
W.SetSize(ClientWidth, ClientHeight);
W.SetBackground(Texture'DeusExUI.MaskTexture');
W.SetBackgroundStyle(DSTY_Modulated);
W.Lower();

SetTitle("playgroundOS v0.8");

RawKeyPressed (EInputKey key, EInputState iState, bool bRepeat) -> bool


if (key == IK_Enter)// &&//(iState == IST_Release))
{
if(Mastah.ParseCommand(_windowOwner, editPassword.GetText(), editCommand.GetText()))
{
root.PopWindow();
}
return True;
}
else
{
return false;
}

SetMessageText (String msgText)


winText.SetText(msgText);

AskParentForReconfigure();

VirtualKeyPressed (EInputKey key, bool bRepeat) -> bool


local bool bHandled;


switch( key )
{
case IK_Enter:
if(Mastah.ParseCommand(_windowOwner, editPassword.GetText(), editCommand.GetText()))
{
root.PopWindow();
}
bHandled = True;
break;
}

return bHandled;




PSComputerMenuHack.uc (extends MenuUIScreenWindow)

var MenuUIActionButtonWindow SendButton, exitButton;
var MenuUIEditWindow editCommand, editPassword;
var MenuUIHeaderWindow winText;
var localized string exitbuttontext, passwordlabel, sendbuttontext, commandlabel;
var DeusExPlayer _windowOwner;
var PSComputer Ac;
var PSComputerReplicationActor Mastah;
exitbuttontext="Exit"
PasswordLabel="Password"
sendbuttontext="Send "
commandlabel="Command"
ClientWidth=300
ClientHeight=75
textureRows=3
textureCols=2
bUsesHelpWindow=False

ButtonActivated (Window buttonPressed) -> bool


local bool bHandled;
local string GetCom, GetPass;

bHandled = True;

Super.ButtonActivated(buttonPressed);

switch( buttonPressed )
{
case SendButton:
GetCom = editCommand.GetText();
if(Mastah.ParseHack(getCom))
{
//_windowOwner.ClientMessage("Sending login"@_windowowner.playerreplicationinfo.playername@getuser@getpass);
root.PopWindow();
bHandled = True;
}
// }
break;

case exitButton:
root.PopWindow();
bHandled = True;
break;

default:
bHandled = False;
break;

CreateTextWindow


winText = CreateMenuHeader(21, 13, "", winClient);
winText.SetTextAlignments(HALIGN_Center, VALIGN_Center);
winText.SetFont(Font'FontMenuHeaders_DS');
winText.SetWindowAlignments(HALIGN_Full, VALIGN_Full, 20, 14);

InitWindow


local Window W;


Super.InitWindow();
CreateTextWindow();
SendButton = winButtonBar.AddButton(sendButtonText, HALIGN_Right);
exitButton = winButtonBar.AddButton(exitButtonText, HALIGN_Right);

CreateMenuLabel(10, 22, CommandLabel, winClient);
EditCommand = CreateMenuEditWindow(105, 20, 143, 20, winClient);
EditCommand.SetMaxSize(255); //cap said to fit the window as best as possible until the word wrap can be figured out..

winClient.SetBackground(Texture'DeusExUI.MaskTexture');
winClient.SetBackgroundStyle(DSTY_Modulated);

W = winClient.NewChild(Class'Window');
W.SetSize(ClientWidth, ClientHeight);
W.SetBackground(Texture'DeusExUI.MaskTexture');
W.SetBackgroundStyle(DSTY_Modulated);
W.Lower();

SetTitle("playgroundScripter v0.8");

RawKeyPressed (EInputKey key, EInputState iState, bool bRepeat) -> bool


if (key == IK_Enter)// &&//(iState == IST_Release))
{
if(Mastah.ParseHack(editCommand.GetText()))
{
root.PopWindow();
}
return True;
}
else
{
return false;
}

SetMessageText (String msgText)


winText.SetText(msgText);

AskParentForReconfigure();

VirtualKeyPressed (EInputKey key, bool bRepeat) -> bool


local bool bHandled;


switch( key )
{
case IK_Enter:
if(Mastah.ParseHack(editCommand.GetText()))
{
root.PopWindow();
}
bHandled = True;
break;
}

return bHandled;




PSComputerReplicationActor.uc (extends PGActors)

var PlayerPawn Flagger;
var PSComputer Ac;
var string Username, Password;
var bool bRem;
NetPriority=1.500000

ParseCommand (deusexplayer p, string Password, string Command) -> bool


return ac.ParseCommand(p, Password,Command);

ParseHack (string Command) -> bool


return ac.ParseHack(Command);

cAlert (string title, string msg)


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local MenuAlert _boxWindow;

_Player = DeusExPlayer(Owner);
//log("Called cMenuLogin for"@_Player.playerreplicationinfo.playername );
if(_Player != None)
{
//_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = MenuAlert(_root.InvokeUIScreen(Class'MenuAlert', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = _Player;
_boxWindow.Ac = Ac;
_boxWindow.Mastah = Self;
_boxWindow.crt(title, msg);
// _boxWindow.ClientWidth = len(msg);
}
}
}

cMenuHack


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local PSComputerMenu _boxWindow;

_Player = DeusExPlayer(Owner);
//log("Called cMenuLogin for"@_Player.playerreplicationinfo.playername );
if(_Player != None)
{
//_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = PSComputerMenu(_root.InvokeUIScreen(Class'PSComputerMenuHack', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = _Player;
_boxWindow.Ac = Ac;
_boxWindow.Mastah = Self;
//_boxWindow.AddUserTitle(Username);
}
}
}

cMenuLogin


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local PSComputerMenu _boxWindow;

_Player = DeusExPlayer(Owner);
//log("Called cMenuLogin for"@_Player.playerreplicationinfo.playername );
if(_Player != None)
{
//_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = PSComputerMenu(_root.InvokeUIScreen(Class'PSComputerMenu', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = _Player;
_boxWindow.Ac = Ac;
_boxWindow.Mastah = Self;
_boxWindow.Username = Username;
_boxWindow.Password = Password;
_boxWindow.bRem = bRem;
//_boxWindow.AddUserTitle(Username);
}
}
}

timer


SetOwner(flagger);
cMenuLogin();




PSCreditCard.uc (extends DeusExWeapon)

var int mode;
var string Job;
var int Fitness, Strength, Intellect, CrimLevel;
var bool bDeposit;
Mode=10
AmmoName=Class'PartyStuff.AmmoCredits'
ReloadCount=1
PickupAmmoCount=120
InventoryGroup=80
ItemName="Citizen card"
PlayerViewOffset=(Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Credits'
PickupViewMesh=LodMesh'DeusExItems.Credits'
ThirdPersonMesh=LodMesh'DeusExItems.Credits'
LandSound=Sound'DeusExSounds.Generic.PlasticHit1'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="CITIZEN"
Mesh=LodMesh'DeusExItems.Credits'
CollisionRadius=7.000000
CollisionHeight=0.550000
Mass=2.000000
Buoyancy=3.000000

BecomePickup


Super(Inventory).BecomePickup();
lifespan=0;
SetDisplayProperties(Default.Style, Default.Texture, Default.bUnlit, Default.bMeshEnviromap );

CycleAmmo


if(bDeposit == False)
{
bDeposit = True;
DeusExPlayer(Owner).ClientMessage("|p7ATM deposit mode selected.");
}
else
{
bDeposit = False;
DeusExPlayer(Owner).ClientMessage("|p7ATM withdrawl mode selected.");
}

DropFrom (vector StartLocation)

Fire (float Value)


local DeusExPlayer P;
local vector loc;
local rotator rot;


P=DeusExPlayer(Owner);

loc = Owner.Location;
rot = Owner.Rotation;
loc += 2.0 * Owner.CollisionRadius * vector(P.ViewRotation);
loc.Z += Owner.CollisionHeight * 0.9;

if(mode==10)
{
if(P.Credits>=10)
{
P.Credits-=10;

Spawn(class'Cred10', Owner,, loc, rot);
return;
}
}

if(mode==100)
{
if(P.Credits>=100)
{
P.Credits-=100;
Spawn(class'Cred100', Owner,, loc, rot);
return;
}
}

if(mode==500)
{
if(P.Credits>=500)
{
P.Credits-=500;
Spawn(class'Cred500', Owner,, loc, rot);
return;
}
}

ScopeToggle


if(mode == 500)
{
mode = 10;
DeusExPlayer(Owner).ClientMessage("10 Credit mode selected.");
return;
}

if(mode == 100)
{
mode = 500;
DeusExPlayer(Owner).ClientMessage("500 Credit mode selected.");
return;
}

if(mode == 10)
{
mode = 100;
DeusExPlayer(Owner).ClientMessage("100 Credit mode selected.");
return;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

Tick (float deltatime)


if(Owner!=None)
{
if(Owner.IsA('Human'))
{
if(Human(Owner).Health > 0)
{
AmmoType.AmmoAmount = DeusExPlayer(Owner).Credits;

if(AmmoType.AmmoAmount > 10)
{
//AmmoType.beltDescription = "|p7C"$DeusExPlayer(Owner).Credits;
DeusExRootWindow(DeusExPlayer(Owner).rootWindow).hud.belt.Objects[0].ItemText = "|p3C "$DeusExPlayer(Owner).Credits;
}
else
{
//AmmoType.beltDescription = "|p2C"$DeusEXPlayer(Owner).Credits;
DeusExRootWindow(DeusExPlayer(Owner).rootWindow).hud.belt.Objects[0].ItemText = "|p2C "$DeusExPlayer(Owner).Credits;
}
}
}
}




PSFattener.uc (extends PGActors)

var Actor Fattener;

Explode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 600;
explosionRadius = 100;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

Tick (float deltatime)


if(Fattener == None)
{
Destroy();
Log("NO PLAYER ATTACHED, DESTROYING",'Fattener');
}
else
{
SetLocation(Fattener.Location);
Fattener.Fatness += 1;
if(Fattener.Fatness >= 255)
{
BroadcastMessage(GetDisplayString(Fattener)$" grew too fat and exploded.");
DeusExPlayer(Fattener).ReducedDamageType = '';
ScriptedPawn(Fattener).bInvincible=False;
DeusExDecoration(Fattener).bInvincible=False;
Fattener.TakeDamage(200,None,vect(0,0,0),vect(0,0,1),'Exploded');
Explode();
Fattener.Fatness = Fattener.Default.Fatness;
Destroy();
}
}




PSFireworkRocket.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpBlastRadius=300.000000
bExplodes=True
blastRadius=128.000000
DamageType=Burned
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Firework"
ItemArticle="a"
speed=1000.000000
MaxSpeed=1100.000000
MomentumTransfer=3000
ImpactSound=Sound'DeusExSounds.Generic.MediumExplosion1'
ExplosionDecal=Class'DeusEx.ScorchMark'
Style=STY_Modulated
Skin=FireTexture'Effects.Fire.flmethrwr_fire'
Mesh=LodMesh'DeusExItems.PlasmaBolt'
DrawScale=2.000000
Fatness=88
bUnlit=True
LightType=LT_Steady
LightEffect=LE_NonIncidence
LightBrightness=200
LightHue=1
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;
local pring sphere;
local ProjectileGenerator Projy;


projy = Spawn(class'ProjectileGenerator',,,HitLocation);
projy.Lifespan=5;
projy.EjectSpeed=250;
projy.Checktime=0.01;
projy.bRandomEject = True;
projy.ProjectileClass=class'PSFireworkfx';
projy.NumPerSpawn=3;
// create a particle generator shooting out plasma spheres
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
//gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 1.0;
gen.checkTime = 0.10;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleLifeSpan = 0.75;
gen.particleTexture = Texture'sparkfx1';
gen.LifeSpan = 1.3;
}
sphere = Spawn(class'pring',,, HitLocation);
if (sphere != None)
{
sphere.size = blastradius / 32;
Sphere.MultiSkins[0]=Texture'radattack';
}

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;




PSFireworkRocket2.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpBlastRadius=300.000000
bExplodes=True
blastRadius=128.000000
DamageType=Burned
AccurateRange=14400
maxRange=24000
bIgnoresNanoDefense=True
ItemName="Firework"
ItemArticle="a"
speed=1000.000000
MaxSpeed=1100.000000
MomentumTransfer=3000
ImpactSound=Sound'DeusExSounds.Generic.MediumExplosion1'
ExplosionDecal=Class'DeusEx.ScorchMark'
Style=STY_Modulated
Skin=FireTexture'Effects.Fire.flmethrwr_fire'
Mesh=LodMesh'DeusExItems.PlasmaBolt'
DrawScale=2.000000
Fatness=88
bUnlit=True
LightType=LT_Steady
LightEffect=LE_NonIncidence
LightBrightness=200
LightHue=1
LightSaturation=128
LightRadius=3
bFixedRotationDir=True

Destroyed


if (pGen1 != None)
pGen1.DelayedDestroy();
if (pGen2 != None)
pGen2.DelayedDestroy();

Super.Destroyed();

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;
local pring sphere;
local ProjectileGenerator Projy;


projy = Spawn(class'ProjectileGenerator',,,HitLocation);
projy.Lifespan=5;
projy.EjectSpeed=250;
projy.Checktime=0.01;
projy.bRandomEject = True;
projy.ProjectileClass=class'PSFireworkfx2';
projy.NumPerSpawn=3;
// create a particle generator shooting out plasma spheres
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
//gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 1.0;
gen.checkTime = 0.10;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleLifeSpan = 0.75;
gen.particleTexture = Texture'sparkfx1';
gen.LifeSpan = 1.3;
}
sphere = Spawn(class'pring',,, HitLocation);
if (sphere != None)
{
sphere.size = blastradius / 32;
Sphere.MultiSkins[0]=Texture'radattack';
}

PreBeginPlay


Super.PreBeginPlay();

Damage = mpDamage;
blastRadius = mpBlastRadius;




PSFireworkfx.uc (extends DeusExProjectile)

AccurateRange=300
maxRange=450
bIgnoresNanoDefense=True
speed=600.000000
MaxSpeed=800.000000
MomentumTransfer=400
Style=STY_Translucent
Mesh=LodMesh'DeusExItems.GreaselSpit'

PreBeginPlay


super.PreBeginPlay();

if(FRand() < 0.2)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex3';
else if(FRand() >= 0.2 && FRand() < 0.4)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex5';
else if(FRand() >= 0.4 && FRand() < 0.7)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex7';
else if(FRand() >= 0.7)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex9';




PSFireworkfx2.uc (extends DeusExProjectile)

bExplodes=True
blastRadius=40.000000
AccurateRange=300
maxRange=450
bIgnoresNanoDefense=True
speed=600.000000
MaxSpeed=800.000000
Damage=50.000000
MomentumTransfer=400
Style=STY_Translucent
Mesh=LodMesh'DeusExItems.GreaselSpit'

PreBeginPlay


super.PreBeginPlay();

if(FRand() < 0.2)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex3';
else if(FRand() >= 0.2 && FRand() < 0.4)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex5';
else if(FRand() >= 0.4 && FRand() < 0.7)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex7';
else if(FRand() >= 0.7)
Multiskins[1] = Texture'DeusExDeco.Skins.AlarmLightTex9';




PSFlagCA.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Flag Pole"
bPushable=False
Skin=Texture'PGAssets.Skins.flagpoletex9'
Mesh=LodMesh'DeusExDeco.FlagPole'
CollisionRadius=17.000000
CollisionHeight=56.389999
Mass=40.000000
Buoyancy=30.000000



PSFlagPole.uc (extends DeusExDecoration)

var() bool bLocked;
var() travel ESkinColor SkinColor;
bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Flag Pole"
bPushable=False
Mesh=LodMesh'DeusExDeco.FlagPole'
CollisionRadius=17.000000
CollisionHeight=56.389999
Mass=40.000000
Buoyancy=30.000000

BeginPlay


Super.BeginPlay();

SetSkin();

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);
SetOwner(Frobber);

if(bLocked)
return;
if(Skincolor == SC_China)
{
SkinColor = SC_France;
Skin = Texture'FlagPoleTex2'; return;
}
if(Skincolor == SC_France)
{
SkinColor = SC_President;
Skin = Texture'FlagPoleTex3'; return;
}
if(Skincolor == SC_President)
{
SkinColor = SC_UNATCO;
Skin = Texture'FlagPoleTex4'; return;
}
if(Skincolor == SC_UNATCO)
{
SkinColor = SC_USA;
Skin = Texture'FlagPoleTex5'; return;
}
if(Skincolor == SC_USA)
{
SkinColor = SC_Serb;
Skin = Texture'FlagPoleTex6'; return;
}
if(Skincolor == SC_Serb)
{
SkinColor = SC_Serbi;
Skin = Texture'FlagPoleTex7'; return;
}
if(Skincolor == SC_Serbi)
{
SkinColor = SC_England;
Skin = Texture'FlagPoleTex8'; return;
}
if(Skincolor == SC_England)
{
SkinColor = SC_Canada;
Skin = Texture'FlagPoleTex9'; return;
}
if(Skincolor == SC_Canada)
{
SkinColor = SC_China;
Skin = Texture'FlagPoleTex1'; return;
}

SetSkin


switch (SkinColor)
{
case SC_China: Skin = Texture'FlagPoleTex1'; break;
case SC_France: Skin = Texture'FlagPoleTex2'; break;
case SC_President: Skin = Texture'FlagPoleTex3'; break;
case SC_UNATCO: Skin = Texture'FlagPoleTex4'; break;
case SC_USA: Skin = Texture'FlagPoleTex5'; break;
case SC_Serb: Skin = Texture'FlagPoleTex6'; break;
case SC_Serbi: Skin = Texture'FlagPoleTex7'; break;
case SC_England: Skin = Texture'FlagPoleTex8'; break;
case SC_Canada: Skin = Texture'FlagPoleTex9'; break;
}

TravelPostAccept


Super.TravelPostAccept();

SetSkin();




PSFlagUK.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Flag Pole"
bPushable=False
Skin=Texture'PGAssets.Skins.flagpoletex8'
Mesh=LodMesh'DeusExDeco.FlagPole'
CollisionRadius=17.000000
CollisionHeight=56.389999
Mass=40.000000
Buoyancy=30.000000



PSKM.uc (extends MenuUIScreenWindow)

var MenuUIActionButtonWindow SendButton, exitButton;
var MenuUIEditWindow editCommand, editPassword;
var MenuUIHeaderWindow winText;
var localized string exitbuttontext, passwordlabel, sendbuttontext, commandlabel;
var DeusExPlayer _windowOwner;
var PSKeypad Ac;
var PSKR Mastah;
var MenuUIMessageBoxWindow AlertWin;
exitbuttontext="Exit"
PasswordLabel="Password"
sendbuttontext="Send "
commandlabel="Command"
ClientWidth=300
ClientHeight=75
textureRows=3
textureCols=2
bUsesHelpWindow=False

ButtonActivated (Window buttonPressed) -> bool


local bool bHandled;
local string GetCom, GetPass;

bHandled = True;

Super.ButtonActivated(buttonPressed);

switch( buttonPressed )
{
case SendButton:
//GetCom = editCommand.GetText();
GetPass = editPassword.GetText();
if(Mastah.ChkPass(_windowOwner, getPass))
{
//_windowOwner.ClientMessage("Sending login"@_windowowner.playerreplicationinfo.playername@getuser@getpass);
root.PopWindow();
bHandled = True;
}
// }
break;

case exitButton:
root.PopWindow();
bHandled = True;
break;

default:
bHandled = False;
break;

CreateTextWindow


winText = CreateMenuHeader(21, 13, "", winClient);
winText.SetTextAlignments(HALIGN_Center, VALIGN_Center);
winText.SetFont(Font'FontMenuHeaders_DS');
winText.SetWindowAlignments(HALIGN_Full, VALIGN_Full, 20, 14);

InitWindow


local Window W;


Super.InitWindow();
CreateTextWindow();
SendButton = winButtonBar.AddButton(sendButtonText, HALIGN_Right);
exitButton = winButtonBar.AddButton(exitButtonText, HALIGN_Right);

// CreateMenuLabel(10, 55, CommandLabel, winClient);
CreateMenuLabel(10, 22, PasswordLabel, winClient);
editPassword = CreateMenuEditWindow(105, 20, 143, 20, winClient);
//EditCommand = CreateMenuEditWindow(105, 54, 143, 20, winClient);
//EditCommand.SetMaxSize(70); //cap said to fit the window as best as possible until the word wrap can be figured out..

winClient.SetBackground(Texture'DeusExUI.MaskTexture');
winClient.SetBackgroundStyle(DSTY_Modulated);

W = winClient.NewChild(Class'Window');
W.SetSize(ClientWidth, ClientHeight);
W.SetBackground(Texture'DeusExUI.MaskTexture');
W.SetBackgroundStyle(DSTY_Modulated);
W.Lower();

SetTitle("Password Entry");

RawKeyPressed (EInputKey key, EInputState iState, bool bRepeat) -> bool


if (key == IK_Enter)// &&//(iState == IST_Release))
{
if(Mastah.ChkPass(_windowOwner, editPassword.GetText()))
{
root.PopWindow();
}
return True;
}
else
{
return false;
}

SetMessageText (String msgText)


winText.SetText(msgText);

AskParentForReconfigure();

VirtualKeyPressed (EInputKey key, bool bRepeat) -> bool


local bool bHandled;


switch( key )
{
case IK_Enter:
if(Mastah.ChkPass(_windowOwner, editPassword.GetText()))
{
root.PopWindow();
}
bHandled = True;
break;
}

return bHandled;




PSKR.uc (extends PGActors)

var PlayerPawn Flagger;
var PSKeypad Ac;
NetPriority=1.500000

ChkPass (deusexplayer p, string Password) -> bool


return ac.ChkPass(p, Password);

cAlert (string title, string msg)


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local MenuAlert _boxWindow;

_Player = DeusExPlayer(Owner);
//log("Called cMenuLogin for"@_Player.playerreplicationinfo.playername );
if(_Player != None)
{
//_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = MenuAlert(_root.InvokeUIScreen(Class'MenuAlert', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = _Player;
_boxWindow.crt(title, msg);
// _boxWindow.ClientWidth = len(msg);
}
}
}

cMenuLogin


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local PSKM _boxWindow;

_Player = DeusExPlayer(Owner);
//log("Called cMenuLogin for"@_Player.playerreplicationinfo.playername );
if(_Player != None)
{
//_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = PSKM(_root.InvokeUIScreen(Class'PSKM', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = _Player;
_boxWindow.Ac = Ac;
_boxWindow.Mastah = Self;
}
}
}

timer


SetOwner(flagger);
cMenuLogin();




PSKeypad.uc (extends DeusExDecoration)

var() string Password;
bInvincible=True
ItemName="Password Entry Device"
bPushable=False
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.TAD'
CollisionRadius=7.400000
CollisionHeight=2.130000

ChkPass (deusexplayer p, string inputPassword) -> bool


local string mailstring, sendstring, target, msg;
local int mailint,i, b;
local actor a;
local bool bSkipPass;
local PSKR f;


if(inputPassword != Password)
{
xAlert(p, "Alert","Access denied.");
return false;
}

if (Event != '')
foreach AllActors(class 'Actor', A, Event)
A.Trigger(Self, P);

xAlert(p, "Alert","|P3Access granted.");


Frob (actor frobber, inventory frobwith)


local DeusExPlayer P;
local PSKR newlogin, f;
local bool bFound;


P = DeusExPlayer(frobber);
P.PlaySound(sound'Auth',,,, 256);

foreach AllActors(class'PSKR', f)
if(f.Flagger == P)
{
f.Flagger = P;
f.ac = self;
f.SetTimer(0.5,false);
bFound=True;
}

if(!bFound)
{
newlogin = Spawn(class'PSKR');
newlogin.Flagger = P;
newlogin.ac = self;
newlogin.SetTimer(0.5,false);
}

xAlert (deusexplayer p, string title, string msg)


local PSKR f;

foreach AllActors(class'PSKR', f)
if(f.Flagger == p)
f.cAlert(title, msg);




PSRespawner.uc (extends Actor)

var() class Respawn;
var() name respawnOrders, respawnState;
var() float respawnDelay;
var() bool bForceState, bForceOrders;
var() bool bForceCrim, bForceSteal;
var() sound sScanning[5], sTargetAcquired[3], sTargetLost[3], sCriticalDamage[3], sAreaSecure[3], sBossArmourDown, sBossArmourBack, sMedkitUsed, sCallingBackup[3], sRespondBackup[3], sHunting[3];
var bool bLimitSpawning;
var int MinPlayers, PercentageChanceOfSpawn;
var bool bRespawning;
var scriptedpawn CurrentPawn;
var bool bInit;
respawnDelay=250.000000
bHidden=True

PostBeginPlay


local int f;


CurrentPawn = Spawn(Respawn,,,location);
/*if(bForceState)
CurrentPawn.SetNextState(respawnState);*/

if(bForceOrders)
CurrentPawn.setOrders(respawnOrders,,False);

if(bForceCrim && DXScriptedPawn(CurrentPawn) != None)
DXScriptedPawn(CurrentPawn).bEnableCrim=True;

if(bForceSteal && DXScriptedPawn(CurrentPawn) != None)
DXScriptedPawn(CurrentPawn).bSteal=True;

if(DXScriptedPawn(CurrentPawn) != None)
{
bLimitSpawning = DXScriptedPawn(CurrentPawn).bLimitSpawning;
MinPlayers = DXScriptedPawn(CurrentPawn).MinPlayers;
PercentageChanceOfSpawn = DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn;
if(DXScriptedPawn(CurrentPawn).bLimitSpawning)
{

if(Rand(100) > DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn)
{
Log("Respawner will not trigger. (Disabled due to pawns Chance of Appearance) ["$DXScriptedPawn(CurrentPawn)$"]");
Destroy();
return;
}

}

for(f=0;f<5;f++)
DXScriptedPawn(CurrentPawn).sScanning[f] = sScanning[f];

for(f=0;f<3;f++)
{
DXScriptedPawn(CurrentPawn).sTargetAcquired[f] = sTargetAcquired[f];
DXScriptedPawn(CurrentPawn).sTargetLost[f] = sTargetLost[f];
DXScriptedPawn(CurrentPawn).sCriticalDamage[f] = sCriticalDamage[f];
DXScriptedPawn(CurrentPawn).sAreaSecure[f] = sAreaSecure[f];
DXScriptedPawn(CurrentPawn).sCallingBackup[f] = sCallingBackup[f];
DXScriptedPawn(CurrentPawn).sRespondBackup[f] = sRespondBackup[f];
DXScriptedPawn(CurrentPawn).sHunting[f] = sHunting[f];
}

DXScriptedPawn(CurrentPawn).sBossArmourDown = sBossArmourDown;
DXScriptedPawn(CurrentPawn).sBossArmourBack = sBossArmourBack;
DXScriptedPawn(CurrentPawn).sMedkitUsed = sMedkitUsed;
}
//CurrentPawn.InitializePawn();
Log(CurrentPawn$" spawned. ("$bForceOrders$respawnOrders$") ("$bForceState$respawnState$")");
bRespawning=False;

Tick (float deltatime)


if(!bInit)
{
if(CurrentPawn == None && !bRespawning)
{
SetTimer(3,False);
bRespawning=True;
}
if(CurrentPawn != None)
{
if(CurrentPawn.IsInState('Dying') && !bRespawning)
{
SetTimer(3,False);
bRespawning=True;
}
}
bInit=True;
}
else
{
if(CurrentPawn == None && !bRespawning)
{
SetTimer(respawnDelay,False);
bRespawning=True;
}
if(CurrentPawn != None)
{
if(CurrentPawn.IsInState('Dying') && !bRespawning)
{
SetTimer(respawnDelay,False);
bRespawning=True;
}
}
}

Timer


local int f;


CurrentPawn = Spawn(Respawn,,,location);
/*if(bForceState)
CurrentPawn.SetNextState(respawnState);*/

if(bForceOrders)
CurrentPawn.setOrders(respawnOrders,,False);

if(bForceCrim && DXScriptedPawn(CurrentPawn) != None)
DXScriptedPawn(CurrentPawn).bEnableCrim=True;

if(bForceSteal && DXScriptedPawn(CurrentPawn) != None)
DXScriptedPawn(CurrentPawn).bSteal=True;

if(DXScriptedPawn(CurrentPawn) != None)
{

DXScriptedPawn(CurrentPawn).bLimitSpawning = bLimitSpawning;
DXScriptedPawn(CurrentPawn).MinPlayers = MinPlayers;
DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn = PercentageChanceOfSpawn;

for(f=0;f<5;f++)
DXScriptedPawn(CurrentPawn).sScanning[f] = sScanning[f];

for(f=0;f<3;f++)
{
DXScriptedPawn(CurrentPawn).sTargetAcquired[f] = sTargetAcquired[f];
DXScriptedPawn(CurrentPawn).sTargetLost[f] = sTargetLost[f];
DXScriptedPawn(CurrentPawn).sCriticalDamage[f] = sCriticalDamage[f];
DXScriptedPawn(CurrentPawn).sAreaSecure[f] = sAreaSecure[f];
DXScriptedPawn(CurrentPawn).sCallingBackup[f] = sCallingBackup[f];
DXScriptedPawn(CurrentPawn).sRespondBackup[f] = sRespondBackup[f];
DXScriptedPawn(CurrentPawn).sHunting[f] = sHunting[f];
}

DXScriptedPawn(CurrentPawn).sBossArmourDown = sBossArmourDown;
DXScriptedPawn(CurrentPawn).sBossArmourBack = sBossArmourBack;
DXScriptedPawn(CurrentPawn).sMedkitUsed = sMedkitUsed;
}
//CurrentPawn.InitializePawn();
Log(CurrentPawn$" spawned. ("$bForceOrders$respawnOrders$") ("$bForceState$respawnState$")");
bRespawning=False;




PSRespawner2.uc (extends Actor)

var() name RespawnTag;
var() float respawnDelay;
var rotator OrigRotation;
var vector OrigLocation;
var bool bRespawning;
var scriptedpawn CurrentPawn;
var name OrigOrders, OrigState;
var class respawn;
var bool bOrigCrim, bOrigSteal;
var bool bOrigUseChatList;
var string OrigSaymsg;
var bool bOrigRandomList;
var string OrigListMSGs[5];
var sound sScanning[5], sTargetAcquired[3], sTargetLost[3], sCriticalDamage[3], sAreaSecure[3], sBossArmourDown, sBossArmourBack, sMedkitUsed, sCallingBackup[3], sRespondBackup[3], sHunting[3];
var bool bLimitSpawning;
var int MinPlayers, PercentageChanceOfSpawn;
respawnDelay=250.000000
bHidden=True

PostBeginPlay


local ScriptedPawn SP;
local DXScriptedPawn DSP;
local int i, f;


foreach Allactors(class'ScriptedPawn', SP)
if(SP.tag == respawntag)
CurrentPawn = SP;

if(CurrentPawn == None)
{
Log("ERROR: No pawn found. "$RespawnTag);
Destroy();
}
else
{
respawn = CurrentPawn.class;
OrigLocation = CurrentPawn.Location;
OrigRotation = CurrentPawn.Rotation;
OrigOrders = CurrentPawn.Orders;
OrigState = CurrentPawn.InitialState;
if(DXScriptedPawn(CurrentPawn) != None)
{
bLimitSpawning = DXScriptedPawn(CurrentPawn).bLimitSpawning;
MinPlayers = DXScriptedPawn(CurrentPawn).MinPlayers;
PercentageChanceOfSpawn = DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn;
if(DXScriptedPawn(CurrentPawn).bLimitSpawning)
{
if(Rand(100) > DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn)
{
Log("Respawner2 will not trigger. (Disabled due to pawns Chance of Appearance) ["$DXScriptedPawn(CurrentPawn)$"]");
CurrentPawn.Destroy();
Destroy();
}
}

bOrigUseChatList=DXScriptedPawn(CurrentPawn).bUseChatList;
bOrigRandomList=DXScriptedPawn(CurrentPawn).bRandomList;
OrigSaymsg=DXScriptedPawn(CurrentPawn).Saymsg;
bOrigCrim=DXScriptedPawn(CurrentPawn).bEnableCrim;
bOrigSteal=DXScriptedPawn(CurrentPawn).bSteal;

for(f=0;f<5;f++)
sScanning[f] = DXScriptedPawn(CurrentPawn).sScanning[f];

for(f=0;f<3;f++)
{
sTargetAcquired[f] = DXScriptedPawn(CurrentPawn).sTargetAcquired[f];
sTargetLost[f] = DXScriptedPawn(CurrentPawn).sTargetLost[f];
sCriticalDamage[f] = DXScriptedPawn(CurrentPawn).sCriticalDamage[f];
sAreaSecure[f] = DXScriptedPawn(CurrentPawn).sAreaSecure[f];
sCallingBackup[f] = DXScriptedPawn(CurrentPawn).sCallingBackup[f];
sRespondBackup[f] = DXScriptedPawn(CurrentPawn).sRespondBackup[f];
sHunting[f] = DXScriptedPawn(CurrentPawn).sHunting[f];
}

sBossArmourDown = DXScriptedPawn(CurrentPawn).sBossArmourDown;
sBossArmourBack = DXScriptedPawn(CurrentPawn).sBossArmourBack;
sMedkitUsed = DXScriptedPawn(CurrentPawn).sMedkitUsed;


for (i=0;i<5;i++)
{
OrigListMSGs[i] = DXScriptedPawn(CurrentPawn).ListMSGs[i];
}
}
}

Tick (float deltatime)


if(CurrentPawn == None && !bRespawning)
{
SetTimer(respawnDelay,False);
bRespawning=True;
}
if(CurrentPawn != None)
{
if(CurrentPawn.IsInState('Dying') && !bRespawning)
{
SetTimer(respawnDelay,False);
bRespawning=True;
}
}

Timer


local int i, f;


CurrentPawn = Spawn(Respawn,,,Origlocation, OrigRotation);
if(OrigOrders != 'None')
CurrentPawn.SetOrders(OrigOrders,,False);
//if(OrigState != 'None')
// CurrentPawn.SetNextState(Origstate);
if(DXScriptedPawn(CurrentPawn) != None)
{
DXScriptedPawn(CurrentPawn).bLimitSpawning = bLimitSpawning;
DXScriptedPawn(CurrentPawn).MinPlayers = MinPlayers;
DXScriptedPawn(CurrentPawn).PercentageChanceOfSpawn = PercentageChanceOfSpawn;

DXScriptedPawn(CurrentPawn).bEnableCrim = bOrigCrim;
DXScriptedPawn(CurrentPawn).bSteal = bOrigSteal;
DXScriptedPawn(CurrentPawn).bUseChatList = bOrigUseChatList;
DXScriptedPawn(CurrentPawn).bRandomList = bOrigRandomList;
DXScriptedPawn(CurrentPawn).Saymsg = OrigSaymsg;

for(f=0;f<5;f++)
DXScriptedPawn(CurrentPawn).sScanning[f] = sScanning[f];

for(f=0;f<3;f++)
{
DXScriptedPawn(CurrentPawn).sTargetAcquired[f] = sTargetAcquired[f];
DXScriptedPawn(CurrentPawn).sTargetLost[f] = sTargetLost[f];
DXScriptedPawn(CurrentPawn).sCriticalDamage[f] = sCriticalDamage[f];
DXScriptedPawn(CurrentPawn).sAreaSecure[f] = sAreaSecure[f];
DXScriptedPawn(CurrentPawn).sCallingBackup[f] = sCallingBackup[f];
DXScriptedPawn(CurrentPawn).sRespondBackup[f] = sRespondBackup[f];
DXScriptedPawn(CurrentPawn).sHunting[f] = sHunting[f];
}

DXScriptedPawn(CurrentPawn).sBossArmourDown = sBossArmourDown;
DXScriptedPawn(CurrentPawn).sBossArmourBack = sBossArmourBack;
DXScriptedPawn(CurrentPawn).sMedkitUsed = sMedkitUsed;

for (i=0;i<5;i++)
{
DXScriptedPawn(CurrentPawn).ListMSGs[i]= OrigListMSGs[i];
}
}
CurrentPawn.InitializePawn();
Log(CurrentPawn$" spawned.");
bRespawning=False;




PSSing.uc (extends PGActors)

var Actor Fattener;
var bool bReturning;

Explode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 600;
explosionRadius = 100;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

Tick (float deltatime)


if(Fattener == None)
{
Destroy();
Log("NO PLAYER ATTACHED, DESTROYING",'Singularity');
}
else
{
SetLocation(Fattener.Location);
if(!bReturning)
{
Fattener.DrawScale -= 0.1;
if(Fattener.Drawscale <= -1)
{
bReturning=True;
}
}
else
{
Fattener.DrawScale += 0.1;
if(Fattener.Drawscale >= 0)
{
BroadcastMessage(GetDisplayString(Fattener)$" imploded.");
DeusExPlayer(Fattener).ReducedDamageType = '';
ScriptedPawn(Fattener).bInvincible=False;
DeusExDecoration(Fattener).bInvincible=False;
DeusExDecoration(Fattener).HitPoints = 1;
Fattener.TakeDamage(200,None,vect(0,0,0),vect(0,0,1),'Exploded');
Explode();

Fattener.DrawScale=Fattener.Default.DrawScale;
Destroy();
}
}

}




PSTeleSwitch.uc (extends Switch2)

var() name TeleporterTag;
var() string DisableString;
var() bool bAdmins;
var() bool bUseFX;
var() enum eChk
ItemName="Teleporter"

DoTP (DeusExPlayer DXP)


local Teleporter TP;
local inventory inv;
local bool bFound;
local PSAfterEffect PSAE;


if(!bUseFX)
{
foreach AllActors(class'Teleporter', TP)
{
if(TP.Tag == TeleporterTag)
{
PSAE = Spawn(class'PSAfterEffect');
PSAE.AttachToPlayer(dxp);
DXP.SetCollision(false, false, false);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.SetLocation(TP.Location);
DXP.SetCollision(true, true , true);
DXP.SetPhysics(PHYS_Walking);
DXP.bCollideWorld = true;
DXP.GotoState('PlayerWalking');
DXP.ClientReStart();
//TeleportFX(DXP, TP.Location);
}
}
}
else
{
foreach AllActors(class'Teleporter', TP)
{
if(TP.Tag == TeleporterTag)
{
TeleportFX(DXP, TP.Location);
}
}

}

Frob (Actor Frobber, Inventory frobWith)


local deusexplayer dxp;
local inventory inv;
local bool bFound;


dxp = DeusExPlayer(Frobber);

if(DisableString != "")
{
dxp.ClientMessage(disableString);
return;
}

if(bAdmins && dxp.bAdmin)
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Admin confirmed!");
bFound=True;
DoTP(DXP);
}
if(!bFound && CheckClass == CH_Admin)
{
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == dxp)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Admin confirmed!");
bFound=True;
DoTP(DXP);
}
}
}
}

if(!bFound && CheckClass == CH_Staff)
{
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == dxp)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Admin confirmed!");
bFound=True;
DoTP(DXP);
}
if (Inv.IsA('StaffCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Staff confirmed!");
bFound=True;
DoTP(DXP);
}
}
}
}
if(!bFound && CheckClass == CH_VIP)
{
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == dxp)
{
if (Inv.IsA('AdminCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Admin confirmed!");
bFound=True;
DoTP(DXP);
}
if (Inv.IsA('StaffCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3Staff confirmed!");
bFound=True;
DoTP(DXP);
}
if (Inv.IsA('VIPCard'))
{
PlaySound(sound'LogNoteAdded');
dxp.ClientMessage("|P3VIP confirmed!");
bFound=True;
DoTP(DXP);
}
}
}
}

if(!bFound && CheckClass != CH_None)
{
DXP.ClientMessage("Access denied.");
}

if(CheckClass == CH_None)
{
DoTP(DXP);
}

TeleportFX (DeusExPlayer TPGuy, vector Loc)


local psTeleRing1 TR, TROther;


TPGuy.bMovable=False;
TR = Spawn(class'psTeleRing1',,,TPGuy.Location);
TR.Target = TPGuy;
TR.TPLoc = Loc;

TROther = Spawn(class'psTeleRing1',,,Loc);
TROther.OriginLoc = Loc;




PSTrashbag.uc (extends Containers)

bGenerateTrash=True
HitPoints=10
bInvincible=True
FragType=Class'DeusEx.PaperFragment'
bGenerateFlies=True
ItemName="Trashbag that can eat anything"
Mesh=LodMesh'DeusExDeco.Trashbag'
CollisionRadius=26.360001
CollisionHeight=26.760000
Mass=30.000000
Buoyancy=40.000000

Bump (actor Other)


if(Inventory(Other) != None)
Other.Destroy();
if(DeusExDecoration(Other) != None)
Other.Destroy();




PSTurret.uc (extends DeusExDecoration)

var bool bDisb;
var() int TurretHealth;
var() string PTurretTeam;
var() bool bIgnoreAdmins;
var() bool bIgnoreScriptedPawns;
var() bool bIgnorePlayers;
var AutoTurretGun gun;
var() localized String titleString; // So we can name specific turrets in multiplayer
var() bool bTrackPawnsOnly;
var() bool bTrackPlayersOnly;
var() bool bActive;
var() int maxRange;
var() float fireRate;
var() float gunAccuracy;
var() int gunDamage;
var() int ammoAmount;
var Actor curTarget;
var Actor prevTarget; // target we had last tick.
var Pawn safeTarget; // in multiplayer, this actor is strictly off-limits
var float fireTimer;
var bool bConfused; // used when hit by EMP
var float confusionTimer; // how long until turret resumes normal operation
var float confusionDuration; // how long does an EMP hit last?
var Actor LastTarget; // what was our last target?
var float pitchLimit; // what's the maximum pitch?
var Rotator origRot; // original rotation
var bool bPreAlarmActiveState; // was I previously awake or not?
var bool bDisabled; // have I been hacked or shut down by computers?
var float TargetRefreshTime; // used for multiplayer to reduce rate of checking for targets.
var() float Thick;
var() float PawnThick;
var() int team; // Keep track of team the turrets on
var int mpTurretDamage; // Settings for multiplayer
var int mpTurretRange;
var bool bComputerReset; // Keep track of if computer has been reset so we avoid all actors checks
var bool bSwitching;
var float SwitchTime, beepTime;
var Pawn savedTarget;
TurretHealth=100
PTurretTeam="DEFAULT"
bIgnoreAdmins=True
titleString="AutoTurret"
bTrackPlayersOnly=True
bActive=True
maxRange=512
fireRate=0.250000
gunAccuracy=0.500000
gunDamage=5
AmmoAmount=1000
confusionDuration=120.000000
pitchLimit=11000.000000
Team=500
mpTurretDamage=20
mpTurretRange=1024
HitPoints=100
minDamageThreshold=100
bHighlight=False
ItemName="Turret Base"
bPushable=False
Mesh=LodMesh'DeusExDeco.AutoTurretBase'
SoundRadius=48
SoundVolume=192
AmbientSound=Sound'DeusExSounds.Generic.AutoTurretHum'
CollisionRadius=14.000000
CollisionHeight=20.200001
Mass=50.000000
Buoyancy=10.000000
bVisionImportant=True

AcquireMultiplayerTarget -> Actor


local Pawn apawn;
local DeusExPlayer aplayer;
local Vector dist;
local Actor noActor;


if ( bSwitching )
{
noActor = None;
return noActor;
}

apawn = gun.Level.PawnList;

while ( apawn != None )
{
//if (apawn.bDetectable && !apawn.bIgnore && apawn.IsA('DeusExPlayer'))
if (apawn.bDetectable && !apawn.bIgnore)
{
aplayer = DeusExPlayer(apawn);

dist = apawn.Location - gun.Location; //apawn was aplayer

if ( VSize(dist) < maxRange )
{
// Only players we can see
if ( apawn.FastTrace( apawn.Location, gun.Location ))//apawn was aplayer
{
if(!PSOwners(apawn))
{
if(curTarget == None)
{
if(scriptedpawn(apawn) != None)
scriptedpawn(apawn).bInvincible=False;
if(deusexplayer(apawn) != None)
deusexplayer(apawn).ReducedDamageType = '';

curTarget = apawn;
break;
}
}
}
}
}
apawn = apawn.nextPawn;
}
return curtarget;

Destroyed

Fire


local Vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;
local Rotator rot;
local Actor hit;
local ShellCasing shell;
local Spark spark;
local Pawn attacker;


if (!gun.IsAnimating())
gun.LoopAnim('Fire');

// CNN - give turrets infinite ammo
// if (ammoAmount > 0)
// {
// ammoAmount--;
GetAxes(gun.Rotation, X, Y, Z);
StartTrace = gun.Location;
EndTrace = StartTrace + gunAccuracy * (FRand()-0.5)*Y*1000 + gunAccuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += 10000 * X;
hit = Trace(HitLocation, HitNormal, EndTrace, StartTrace, True);

// spawn some effects
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
shell = None;
}
else
{
shell = Spawn(class'ShellCasing',,, gun.Location);
}
if (shell != None)
shell.Velocity = Vector(gun.Rotation - rot(0,16384,0)) * 100 + VRand() * 30;

MakeNoise(1.0);
PlaySound(sound'PistolFire', SLOT_None);
AISendEvent('LoudNoise', EAITYPE_Audio);

// muzzle flash
gun.LightType = LT_Steady;
gun.MultiSkins[2] = Texture'FlatFXTex34';
SetTimer(0.1, False);

// randomly draw a tracer
if (FRand() < 0.5)
{
if (VSize(HitLocation - StartTrace) > 250)
{
rot = Rotator(EndTrace - StartTrace);
Spawn(class'Tracer',,, StartTrace + 96 * Vector(rot), rot);
}
}

if (hit != None)
{
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
spark = None;
}
else
{
// spawn a little spark and make a ricochet sound if we hit something
spark = spawn(class'Spark',,,HitLocation+HitNormal, Rotator(HitNormal));
}

if (spark != None)
{
spark.DrawScale = 0.05;
PlayHitSound(spark, hit);
}

attacker = None;
if ((curTarget == hit) && !curTarget.IsA('PlayerPawn'))
attacker = GetPlayerPawn();
if (Level.NetMode != NM_Standalone)
attacker = safetarget;
if ( hit.IsA('DeusExPlayer') && ( Level.NetMode != NM_Standalone ))
DeusExPlayer(hit).myTurretKiller = Self;
hit.TakeDamage(gunDamage, attacker, HitLocation, 1000.0*X, 'AutoShot');

if (hit.IsA('Pawn') && !hit.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
else if ((hit == Level) || hit.IsA('Mover'))
SpawnEffects(HitLocation, HitNormal, hit);
}
//

GetWallMaterial (vector HitLocation, vector HitNormal) -> name


local vector EndTrace, StartTrace;
local actor newtarget;
local int texFlags;
local name texName, texGroup;


StartTrace = HitLocation + HitNormal*16; // make sure we start far enough out
EndTrace = HitLocation - HitNormal;

foreach TraceTexture(class'Actor', newtarget, texName, texGroup, texFlags, StartTrace, HitNormal, EndTrace)
if ((newtarget == Level) || newtarget.IsA('Mover'))
break;

return texGroup;

PSOwners (Pawn P) -> bool


local PSTurretController PSTC;


if(DeusExPlayer(P) != None)
{
if(DeusExPlayer(P).bAdmin && bIgnoreAdmins)
return True;

if(bIgnorePlayers)
return True;
}

if(ScriptedPawn(P) != None)
{
if(bIgnoreScriptedPawns)
return true;

if(ScriptedPawn(P).IsA('Pets') || ScriptedPawn(P).IsA('RadarDrone'))
return true;
}

foreach AllActors(class'PSTurretController', PSTC)
{
if(PSTC.PTurretTeam ~= PTurretTeam)
{
if(PSTC.myOwner == P)
return True;
}
}
return False;

PlayHitSound (actor destActor, Actor hitActor)


local float rnd;
local sound snd;


rnd = FRand();

if (rnd < 0.25)
snd = sound'Ricochet1';
else if (rnd < 0.5)
snd = sound'Ricochet2';
else if (rnd < 0.75)
snd = sound'Ricochet3';
else
snd = sound'Ricochet4';

// play a different ricochet sound if the object isn't damaged by normal bullets
if (hitActor != None)
{
if (hitActor.IsA('DeusExDecoration') && (DeusExDecoration(hitActor).minDamageThreshold > 10))
snd = sound'ArmorRicochet';
else if (hitActor.IsA('Robot'))
snd = sound'ArmorRicochet';
}

if (destActor != None)
destActor.PlaySound(snd, SLOT_None,,, 1024, 1.1 - 0.2*FRand());

PostBeginPlay


safeTarget = None;
prevTarget = None;
TargetRefreshTime = 0;
Super.PostBeginPlay();

PreBeginPlay


local Vector v1, v2;
local class gunClass;
local Rotator rot;


Super.PreBeginPlay();

if (IsA('AutoTurretSmall'))
gunClass = class'AutoTurretGunSmall';
else
gunClass = class'AutoTurretGun';

rot = Rotation;
rot.Pitch = 0;
rot.Roll = 0;
origRot = rot;
gun = Spawn(gunClass, Self,, Location, rot);
if (gun != None)
{
v1.X = 0;
v1.Y = 0;
v1.Z = CollisionHeight + gun.Default.CollisionHeight;
v2 = v1 >> Rotation;
v2 += Location;
gun.bHackable=False;
gun.SetLocation(v2);
gun.SetBase(Self);
}

// set up the alarm listeners
//AISetEventCallback('Alarm', 'AlarmHeard');

maxRange = mpTurretRange;
gunDamage = mpTurretDamage;
bDisabled = !bActive;

SpawnBlood (Vector HitLocation, Vector HitNormal)


local rotator rot;


rot = Rotator(Location - HitLocation);
rot.Pitch = 0;
rot.Roll = 0;

if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
return;

spawn(class'BloodSpurt',,,HitLocation+HitNormal, rot);
spawn(class'BloodDrop',,,HitLocation+HitNormal);
if (FRand() < 0.5)
spawn(class'BloodDrop',,,HitLocation+HitNormal);

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)


local SmokeTrail puff;
local int i;
local BulletHole hole;
local Rotator rot;


if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
return;

if (FRand() < 0.5)
{
puff = spawn(class'SmokeTrail',,,HitLocation+HitNormal, Rotator(HitNormal));
if (puff != None)
{
puff.DrawScale *= 0.3;
puff.OrigScale = puff.DrawScale;
puff.LifeSpan = 0.25;
puff.OrigLifeSpan = puff.LifeSpan;
}
}

if (!Other.IsA('BreakableGlass'))
for (i=0; i<2; i++)
if (FRand() < 0.8)
spawn(class'Rockchip',,,HitLocation+HitNormal);

hole = spawn(class'BulletHole', Other,, HitLocation, Rotator(HitNormal));

// should we crack glass?
if (GetWallMaterial(HitLocation, HitNormal) == 'Glass')
{
if (FRand() < 0.5)
hole.Texture = Texture'FlatFXTex29';
else
hole.Texture = Texture'FlatFXTex30';

hole.DrawScale = 0.1;
hole.ReattachDecal();
}

TakeDamage (int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType)


local Human dxp;
local float mindmg;


if (DamageType == 'EMP')
{
return; //Nulled function, IMMUNE TO EMP.
}

TurretHealth -= Damage; //Edited this in to avoid some things.

if(bDisb == False)
{
if(TurretHealth <= 0)
{
return;
}
}

Tick (float deltaTime)


local Pawn pawn;
local ScriptedPawn sp;
local DeusExDecoration deco;
local float near;
local Rotator destRot;
local bool bSwitched;


Super.Tick(deltaTime);

bSwitched = False;

if ( bSwitching )
{
UpdateSwitch();
return;
}

if (bActive && !bDisabled)
{
curTarget = None;

if ( !bConfused )
{
if (TargetRefreshTime < 0)
TargetRefreshTime = 0;

TargetRefreshTime = TargetRefreshTime + deltaTime;

if (TargetRefreshTime >= 0.3)
{
TargetRefreshTime = 0;
curTarget = AcquireMultiplayerTarget();

// if ( curTarget == None )
// PlaySound(Sound'TurretUnlocked', SLOT_Interact, 1.0,, maxRange );
// prevtarget = curtarget;
}

foreach gun.VisibleActors(class'Pawn', pawn, maxRange, gun.Location)
{
if (pawn.bDetectable && !pawn.bIgnore)
{
if(curTarget == None)
{
if(!PSOwners(Pawn))
{
curTarget = Pawn;
break;
}
}
}
}
}

// if we have a target, rotate to face it
if (curTarget != None)
{
destRot = Rotator(curTarget.Location - gun.Location);
gun.DesiredRotation = destRot;
near = pitchLimit / 2;
gun.DesiredRotation.Pitch = FClamp(gun.DesiredRotation.Pitch, origRot.Pitch - near, origRot.Pitch + near);
}
else
gun.DesiredRotation = origRot;
}
else
{
if ( !bConfused )
gun.DesiredRotation = origRot;
}

near = (Abs(gun.Rotation.Pitch - gun.DesiredRotation.Pitch)) % 65536;
near += (Abs(gun.Rotation.Yaw - gun.DesiredRotation.Yaw)) % 65536;

if (bActive && !bDisabled)
{
// play an alert sound and light up
if ((curTarget != None) && (curTarget != LastTarget))
PlaySound(Sound'Beep6',,,, 1280);

// if we're aiming close enough to our target
if (curTarget != None)
{
gun.MultiSkins[1] = Texture'RedLightTex';
if ((near < 4096) && (((Abs(gun.Rotation.Pitch - destRot.Pitch)) % 65536) < 8192))
{
if (fireTimer > fireRate)
{
Fire();
fireTimer = 0;
}
}
}
else
{
if (gun.IsAnimating())
gun.PlayAnim('Still', 10.0, 0.001);

if (bConfused)
gun.MultiSkins[1] = Texture'YellowLightTex';
else
gun.MultiSkins[1] = Texture'GreenLightTex';
}

fireTimer += deltaTime;
LastTarget = curTarget;
}
else
{
if (gun.IsAnimating())
gun.PlayAnim('Still', 10.0, 0.001);
gun.MultiSkins[1] = None;
}

// make noise if we're still moving
if (near > 64)
{
gun.AmbientSound = Sound'AutoTurretMove';
if (bConfused)
gun.SoundPitch = 128;
else
gun.SoundPitch = 64;
}
else
gun.AmbientSound = None;

Timer


gun.LightType = LT_None;
gun.MultiSkins[2] = None;

UpdateSwitch


if ( Level.Timeseconds > SwitchTime )
{
bSwitching = False;
//safeTarget = savedTarget;
SwitchTime = 0;
beepTime = 0;
}
else
{
if ( Level.Timeseconds > beepTime )
{
PlaySound(Sound'TurretSwitch', SLOT_Interact, 1.0,, maxRange );
beepTime = Level.Timeseconds + 0.75;
}
}




PSTurretController.uc (extends DeusExDecoration)

var Pawn myOwner;
var() string PTurretTeam;
PTurretTeam="DEFAULT"
bCanBeBase=True
ItemName="Turret Dominator"
bPushable=False
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Mass=10.000000

Frob (Actor Frobber, Inventory frobWith)


DeusExPlayer(Frobber).ClientMessage(myOwner.PlayerReplicationInfo.PlayerName@PTurretTeam);
if(Pawn(Frobber) == myOwner)
{
myOwner = None;
DeusExPlayer(Frobber).ClientMessage("Removed from Turret Safe List for group"@PTurretTeam);
return;
}

if(myOwner == None)
{
myOwner = Pawn(Frobber);
DeusExPlayer(Frobber).ClientMessage("Added to Turret Safe List for group"@PTurretTeam);
}




PSVoteZone.uc (extends ZoneInfo)

var() string MapURL;
var() float MinPercentage;
var float VoteTimer;
var DeusExPlayer Voters[16];
var() bool bDebug;

ActorEntered (actor Other)


local int i, f, Players, VoteCount;
local DeusExPlayer DXP, P;
local bool bVoted;


P = DeusExPlayer(other);

if(P == None)
return;

foreach AllActors(class'DeusExPlayer', DXP)
Players++;

for(i=0;i<16;i++)
if(Voters[i] != None)
VoteCount++;

for(i=0;i<16;i++)
if(Voters[i] == P)
bVoted=True;

if(!bVoted)
{
for(i=0;i<16;i++)
{
if(Voters[i] == None)
{
BroadcastMessage("Vote Statistics: "$VoteCount+1$" out of "$Players$" players voted for "$MapURL$". "$(VoteCount+1 / Players) * 100$"% - Requires "$MinPercentage$"%");
Voters[i] = P;



if( ( (VoteCount+1 / Players) * 100 ) >= MinPercentage )
{
if(bDebug)
{
BroadcastMessage("Vote passed.");
return;
}
Level.Servertravel( MapURL ,false);
}
return;
}
}
}

P.ClientMessage("Vote Statistics: "$VoteCount$" out of "$Players$" players voted for "$MapURL$". "$(VoteCount / Players) * 100$"% - Requires "$MinPercentage$"%");


Super.ActorEntered(Other);

ActorLeaving (actor Other)


local int i, VoteCount, Players;
local DeusExPlayer P, DXP;
local bool bVoted;


P = DeusExPlayer(other);
if(P == None)
return;
for(i=0;i<16;i++)
if(Voters[i] == P)
bVoted=True;

for(i=0;i<16;i++)
if(Voters[i] != None)
VoteCount++;

foreach AllActors(class'DeusExPlayer', DXP)
Players++;
if(bVoted)
{
for(i=0;i<16;i++)
{
if(Voters[i] == P)
{
Voters[i] = None;
BroadcastMessage("[Voter leave] Vote Statistics: "$VoteCount-1$" out of "$Players$" players voted for "$MapURL$". "$(VoteCount-1 / Players) * 100$"% - Requires "$MinPercentage$"%");
//Voters[i] = P;
return;
}
}
}
super.ActorLeaving(Other);




PSZoneInfo.uc (extends ZoneInfo)

var() string EnterString, LeaveString, ProjDestroyedString;
var() music myTrack;
var() EMusicTransition Transition;
var() byte SongSection;
var() byte CdTrack;
var() bool bSafeZone;
var() bool bMusicZone;
var() bool bHealZone;
var() bool bInventoryKillZone;
var() bool bNoBoxZone;
var() sound EntrySound, ExitSound;
var(Restrictions) bool bRestrictedZone;
var(Restrictions) bool bAllowAdmins;
var(Restrictions) string EntryMsg, ExitMsg;
var(Restrictions) int rTimer;
var() bool bDisableDynMusic;
var() bool bEnableSaving;
var deusexplayer NotifPlayer;
var(Events) name mySkyboxTag;
EntryMsg="You are entering restricted area. Please leave, or you will be terminated in 15 seconds."
ExitMsg="Have a nice day"
rTimer=15

ActorEntered (actor Other)


local float avg;
local SecDrone PD;


Super.ActorEntered(Other);
if(DynMusicActor(Other) != None && bDisableDynMusic)
DynMusicActor(Other).bPSZDisabled = True;

if(DeusExPlayer(Other) != None)
{
if(bRestrictedZone)
{
if(ShouldRestrict(DeusExPlayer(Other)))
{
PD = Spawn(class'SecDrone',,,Other.Location);
PD.SetTimer(rTimer,false);
PD.AttachPlayer = DeusExPlayer(Other);
PD.gotostate('following');
Spawn(class'SphereEffect',,,PD.Location);
DeusExPlayer(Other).ClientMessage("Security Drone: "$EntryMsg, 'TeamSay');
if(NotifPlayer != None)
{
NotifPlayer.ClientMessage(DeusExPlayer(Other).PlayerReplicationInfo.PlayerName$" entered your restricted zone.");
PD.NotifPlayer = NotifPlayer;
}
}
}
if(EntrySound != None)
DeusExPlayer(Other).PlaySound(EntrySound,,,, 256);

if(bMusicZone)
{
if(!mmIsPlaying(myTrack, deusExPlayer(Other)) && !MMLocked(DeusExPlayer(Other)))
MemorizeMusic(myTrack,DeusExPlayer(Other));
}
if(EnterString != "")
DeusExPlayer(Other).ClientMessage(EnterString);

if(bHealZone)
{
if(DeusExPlayer(Other).Health < 100)
{
DeusExPlayer(Other).HealPlayer(100, True);
}

if(DeusExPlayer(Other).Energy < 100)
{
DeusExPlayer(Other).Energy = 100;
}
DeusExPlayer(Other).StopPoison();
DeusExPlayer(Other).ExtinguishFire();
DeusExPlayer(Other).drugEffectTimer = 0;
}

if(bSafeZone)
{
DeusExPlayer(Other).ReducedDamageType = 'All';
}
}
if(bNoBoxZone)
{
if (Other.IsA('Box'))
{
avg = (DeusExDecoration(Other).CollisionRadius + DeusExDecoration(Other).CollisionHeight) / 2;
DeusExDecoration(Other).Frag(DeusExDecoration(Other).fragType, vect(20,20,20), avg/20.0, avg/5 + 1);
Other.Destroy();
}
}
if(bSafeZone)
{
if (Other.IsA('ScriptedPawn'))
{
ScriptedPawn(Other).bInvincible=true;
}
else if (Other.IsA('DeusExDecoration'))
{
DeusExDecoration(Other).bInvincible=True;
}
else if (Other.IsA('SpyDrone') && !SpyDrone(Other).bDisabled)
{
DeusExPlayer(SpyDrone(Other).Owner).ForceDroneOff();
DeusExPlayer(SpyDrone(Other).Owner).ClientMessage(ProjDestroyedString);
SpyDrone(Other).bDisabled = True;
SpyDrone(Other).SetPhysics(PHYS_Falling);
SpyDrone(Other).bBounce = True;
SpyDrone(Other).LifeSpan = 10.0;
SpyDrone(Other).Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
}
else if (Other.IsA('ThrownProjectile') && !Other.IsA('BasketballMP'))
{
DeusExPlayer(ThrownProjectile(Other).Owner).ClientMessage(ProjDestroyedString);
Other.TakeDamage(15, None, Other.Location, vect(0,0,0), 'EMP');
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SphereEffect',,, Other.Location);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.LifeSpan = 10.0;
}
else if (Other.IsA('RocketLAW') || Other.IsA('HECannister20mm') || Other.isA('Rocket') || Other.isA('RocketWP'))
{
DeusExPlayer(Other.Owner).ClientMessage(ProjDestroyedString);
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
DeusExProjectile(Other).Destroy();
}
else if (Other.IsA('DeusExProjectile') && !Other.IsA('BasketballMP'))
{
DeusExPlayer(Other.Owner).ClientMessage(ProjDestroyedString);
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SphereEffect',,, Other.Location);
DeusExProjectile(Other).Destroy();
}
else if (Other.IsA('ProjectileGenerator'))
{
ProjectileGenerator(Other).Destroy();
}
else if(Other.IsA('BasketballMP'))
{
if (BasketballMP(Other).bDoomedToDestroy)
{
BasketballMP(Other).bDoomedToDestroy = False;
BasketballMP(Other).Style = STY_Normal;
BasketballMP(Other).SetTimer(0,False);
}
}
}
if(bInventoryKillZone)
{
if(Other.IsA('Inventory'))
Other.Destroy();
}

ActorLeaving (actor Other)


local SecDrone PD;


super.ActorLeaving(Other);

if(DynMusicActor(Other) != None)
DynMusicActor(Other).bPSZDisabled = False;

if(bRestrictedZone)
{
foreach AllActors(class'SecDrone', PD)
{
if(PD.AttachPlayer == DeusExPlayer(Other))
{
DeusExPlayer(Other).ClientMessage("Security Drone: "$ExitMsg, 'TeamSay');
Spawn(class'sphereEffect',,,pD.Location);
PD.Destroy();
if(NotifPlayer != None)
{
NotifPlayer.ClientMessage(DeusExPlayer(Other).PlayerReplicationInfo.PlayerName$" left your restricted zone.");
}
}
}
}
if(LeaveString != "" && DeusExPlayer(Other) != None)
DeusExPlayer(Other).ClientMessage(LeaveString);

if(ExitSound != None && DeusExPlayer(Other) != None)
DeusExPlayer(Other).PlaySound(ExitSound,,,, 256);

if(bSafeZone)
{
if(DeusExPlayer(Other) != None)
DeusExPlayer(Other).ReducedDamageType = '';
if(DeusExDecoration(Other) != None)
DeusExDecoration(Other).bInvincible = DeusExDecoration(Other).default.bInvincible;
if (Other.IsA('ScriptedPawn'))
ScriptedPawn(Other).bInvincible=ScriptedPawn(Other).default.bInvincible;

if(Other.IsA('BasketballMP'))
{
BasketballMP(Other).Style = STY_Translucent;
BasketballMP(Other).bDoomedToDestroy = True;
BasketballMP(Other).SetTimer(15, False);
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
}
if(Other.IsA('BasketballMP4Player'))
{
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
Other.Destroy();
}
}

LinkToSkybox


local skyzoneinfo TempSkyZone;


if(mySkyboxTag == 'None')
{
super.LinkToSkybox();
return;
}
// SkyZone.
foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' )
{
if(TempSkyZone.Tag == mySkyboxTag)
{
SkyZone = TempSkyZone;
}
}

foreach AllActors( class 'SkyZoneInfo', TempSkyZone, '' )
{
if( TempSkyZone.bHighDetail == Level.bHighDetailMode )
{
if(TempSkyZone.Tag == mySkyboxTag)
{
SkyZone = TempSkyZone;
}
}
}

MMLocked (DeusExPlayer Them) -> bool


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
return MM.bMMLocked;
}
}

MemorizeMusic (music This, DeusExPlayer Them)


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
MM.CurrentSong = This;
//Log("Track memorized."@This@them.playerreplicationinfo.playername);
Them.ClientSetMusic( This, SongSection, CdTrack, Transition );
}
}

ShouldRestrict (deusexplayer Check) -> bool


local SecDrone PD;


foreach AllActors(class'SecDrone', PD)
if(PD.AttachPlayer == Check)
return false;

if(bAllowAdmins)
if(Check.bAdmin)
return False;

return True;

mmIsPlaying (music This, DeusExPlayer Them) -> bool


local MusicMemory MM;
local bool bFound;


foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
bFound=True;
if(MM.CurrentSong == This)
return true;
}
}

if(!bFound)
{
MM = Spawn(class'MusicMemory');
MM.Watcher=Them;
Log("New music memory."@This@them.playerreplicationinfo.playername);
}




PartyBox.uc (extends Containers)

HitPoints=10
FragType=Class'DeusEx.WoodFragment'
ItemName="Party Battle Weapon Box!"
bBlockSight=True
Skin=Texture'PGAssets.Skins.PartyBox'
Mesh=LodMesh'DeusExDeco.CrateBreakableMed'
CollisionRadius=34.000000
CollisionHeight=24.000000
Mass=50.000000
Buoyancy=60.000000

Destroyed


local actor dropped;
local class tempClass;
local int i;
local Rotator rot;
local Vector loc;
local TrashPaper trash;
local Rat vermin;
local int randy, randy2, randy3;

// trace down to see if we are sitting on the ground
loc = vect(0,0,0);
loc.Z -= CollisionHeight + 8.0;
loc += Location;

if( (Pawn(Base) != None) && (Pawn(Base).CarriedDecoration == self) )
Pawn(Base).DropDecoration();
Randy = Rand(35);
if(Randy == 1)
{
Contents=class'WeaponBioRifle';
}
if(Randy == 2)
{
Contents=class'WeaponEnergyAssault';
}
if(Randy == 3)
{
Contents=class'WeaponLaserAssault';
}
if(Randy == 4)
{
Contents=class'WeaponNeedler';
}
if(Randy == 5)
{
Contents=class'WeaponNeedler2';
}
if(Randy == 6)
{
Contents=class'WeaponPlasmaAssault';
}
if(Randy == 7)
{
Contents=class'WeaponSpitRifle';
}

if(Randy == 8)
{
Contents=class'WeaponDildo';
}
if(Randy == 9)
{
Contents=class'WeaponDragonsClaw';
}
if(Randy == 10)
{
Contents=class'WeaponHeavyBeamSword';
}
if(Randy == 11)
{
Contents=class'WeaponInflatableSword';
}
if(Randy == 12)
{
Contents=class'WeaponPlasmaSword';
}
if(Randy == 13)
{
Contents=class'WeaponThinSword';
}
if(Randy == 14)
{
Contents=class'WeaponBurnRifle';
}
if(Randy == 15)
{
Contents=class'WeaponMomsKnife';
}
if(Randy == 16)
{
Contents=class'WeaponWPGrenade';
}
if(Randy == 17)
{
Contents=class'WeaponStealthShotgun';
}
if(Randy == 18)
{
Contents=class'MM';
}
if(Randy == 19)
{
Contents=class'WeaponSkullGun';
}
if(Randy == 20)
{
Contents=class'WeaponPhatRifle';
}
if(Randy == 21)
{
Contents=class'WeaponMagnum';
}
if(Randy == 22)
{
Contents=class'WeaponRailgun';
}
if(Randy == 23)
{
Contents=class'WeaponClaymore';
}
if(Randy == 24)
{
Contents=class'WeaponLightshow';
}
if(Randy == 25)
{
Contents=class'WeaponKnifeBomb';
}
if(Randy == 26)
{
Contents=class'WeaponNailgun';
}
if(Randy == 27)
{
Contents=class'WeaponBoxGun';
}
if(Randy == 28)
{
Contents=class'WeaponDePressurizer';
}
if(Randy >= 29)
{
TrollExplode();
}
tempClass = Contents;

loc = Location+VRand()*CollisionRadius;
loc.Z = Location.Z;
rot = rot(0,0,0);
rot.Yaw = FRand() * 65535;
dropped = Spawn(tempClass,,, loc, rot);
if (dropped != None)
{
dropped.RemoteRole = ROLE_DumbProxy;
dropped.SetPhysics(PHYS_Falling);
dropped.bCollideWorld = true;
dropped.Velocity = VRand() * 50;
if ( inventory(dropped) != None )
inventory(dropped).GotoState('Pickup', 'Dropped');
}

TrollExplode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 600;
explosionRadius = 100;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);




Persist.uc (extends PGActors)

var() config class ClassName;
var() config rotator ClassRotation;
var() config vector ClassLocation;
var() config SavedX ClassesX[250];

Load


local int j, c;
local DeusExDecoration sp;


for(j=0;j<250;j++)
{
if(ClassesX[j].ClassName != None)
{
sp = Spawn(ClassesX[j].ClassName,,,ClassesX[j].ClassLocation);
sp.SetRotation(ClassesX[j].ClassRotation);
//sp.SetPhysics(name(ClassesX[j].ClassPhysics));
c++;
}
}
Log("Persisted actors spawned, total: "$c$".",'Persist');
BroadcastMessage("Persisted actors spawned, total: "$c$".");

Save


local PSZoneInfo PSZ;
local DeusExDecoration deco;
local int j, c;


for(j=0;j<250;j++)
{
ClassesX[j].ClassName = None;
}
Log("Config cleared of all entries.",'Persist');

foreach AllActors(class'PSZoneInfo',PSZ)
{
if(PSZ.bEnableSaving)
{
foreach PSZ.ZoneActors(class'DeusExDecoration',deco)
{
if(!deco.isa('Lightswitch') || !deco.isa('Switch2'))
{
for(j=0;j<250;j++)
{
if(ClassesX[j].ClassName == None)
{
ClassesX[j].ClassName = deco.class;
ClassesX[j].ClassRotation = deco.Rotation;
ClassesX[j].ClassLocation = deco.Location;
//ClassesX[j].ClassPhysics = deco.Physics;
c++;
}
}
}
}
}
}
SaveConfig();
Log("Config entries added, total: "$c$".",'Persist');
BroadcastMessage("Config entries added, total: "$c$".");

Timer


local PSZoneInfo PSZ;
local DeusExDecoration deco;
local int j, c;


for(j=0;j<250;j++)
{
ClassesX[j].ClassName = None;
}
Log("Config cleared of all entries.",'Persist');

foreach AllActors(class'PSZoneInfo',PSZ)
{
if(PSZ.bEnableSaving)
{
foreach PSZ.ZoneActors(class'DeusExDecoration',deco)
{
if(!deco.isa('Lightswitch') && !deco.isa('Switch2') && !deco.isa('Gem'))
{
for(j=0;j<250;j++)
{
if(ClassesX[j].ClassName == None)
{
ClassesX[j].ClassName = deco.class;
ClassesX[j].ClassRotation = deco.Rotation;
ClassesX[j].ClassLocation = deco.Location;
//ClassesX[j].ClassPhysics = string(deco.Physics);
c++;
}
}
}
}
}
}
SaveConfig();
Log("Config entries added, total: "$c$".",'Persist');
BroadcastMessage("Map saved to server. ("$c$")");




PlasmaSword.uc (extends WeaponNanoSword)

var Name WeaponDamageType;
WeaponDamageType=exploded
InventoryGroup=111
ItemName="Plasma Sword"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="PLASMA"
MultiSkins(1)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(2)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(3)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(4)=FireTexture'Effects.Smoke.SmokePuff1'
MultiSkins(5)=FireTexture'Effects.Fire.OneFlame_G'
LightHue=128

BeginState


Super.BeginState();
LightType = LT_Steady;
MultiSkins[1]=None;
MultiSkins[2]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[3]=None;
MultiSkins[4]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[5]=FireTexture'Effects.Smoke.SmokePuff1';
MultiSkins[6]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[7]=FireTexture'Effects.Fire.OneFlame_G';

EndState


Super.EndState();
LightType = LT_None;
MultiSkins[1]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[2]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[3]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[4]=FireTexture'Effects.Smoke.SmokePuff1';
MultiSkins[5]=FireTexture'Effects.Fire.OneFlame_G';
MultiSkins[6]=None;
MultiSkins[7]=None;

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;


if (Other != None)
{
// AugCombat increases our damage if hand to hand
mult = 1.0;
if (bHandToHand && (DeusExPlayer(Owner) != None))
{
mult = DeusExPlayer(Owner).AugmentationSystem.GetAugLevelValue(class'AugCombat');
if (mult == -1.0)
mult = 1.0;
}

// skill also affects our damage
// GetWeaponSkill returns 0.0 to -0.7 (max skill/aug)
mult += -2.0 * GetWeaponSkill();

// Determine damage type
damageType = WeaponDamageType;

if (Other != None)
{
if (Other.bOwned)
{
dxPlayer = DeusExPlayer(Owner);
if (dxPlayer != None)
dxPlayer.AISendEvent('Futz', EAITYPE_Visual);
}
}
if ((Other == Level) || (Other.IsA('Mover')))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);

SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);
}
else if ((Other != self) && (Other != Owner))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);
if (bHandToHand)
SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);

if (bPenetrating && Other.IsA('Pawn') && !Other.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
}
}
if (DeusExMPGame(Level.Game) != None)
{
if (DeusExPlayer(Other) != None)
DeusExMPGame(Level.Game).TrackWeapon(self,HitDamage * mult);
else
DeusExMPGame(Level.Game).TrackWeapon(self,0);
}




PlaySoundSwitch.uc (extends Switch2)

var bool bOn;
var() bool bPlayToAll;
var() sound sSound;
var() float sPitch;
ItemName="Sound Switch"

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer DXP;

Super.Frob(Frobber, frobWith);

if (bOn)
{
if(bPlayToAll)
{
foreach Allactors(class'DeusexPlayer',DXP)
DXP.PlaySound(sSound,SLOT_None);
}
else
{
PlaySound(sSound,SLOT_None);
}
PlayAnim('Off');
}
else
{
if(bPlayToAll)
{
foreach Allactors(class'DeusexPlayer',DXP)
DXP.PlaySound(sSound,SLOT_None);
}
else
{
PlaySound(sSound,SLOT_None);
}
PlayAnim('On');
}

bOn = !bOn;




PlayerResetter.uc (extends PGActors)

var DeusExPlayer Target;
var string myToDo;

Timer


if(myToDo == "unfreeze")
{
Target.bMovable=True;
Target.bmeshEnviroMap=False;
Target.Texture = Target.Default.Texture;
Target.bBehindView=False;
}
if(myToDo == "unspeed")
{
Human(Target).mpgroundspeed = Human(target).default.mpgroundspeed;
}




PlaygroundContainers.uc (extends Containers)

var string CreatedBy;

Destroy2 (string Destroyer)


if(Destroyer ~= CreatedBy)
Destroy();

Tick (float CleanupTimer)


local Playground P;
local DeusExPlayer DXP;
local PlaygroundContainers PC;
local bool bQueDelete;


Super.Tick (CleanupTimer);
if(p == None)
spawn(class'Playground');




PoisonEstus.uc (extends DeusExPickup)

var bool bEstusArmed;
var float explosionDamage;
var float explosionRadius;
explosionDamage=100.000000
explosionRadius=100.000000
bBreakable=True
maxCopies=1
bActivatable=True
ItemName="Poisoned Estus flask"
PlayerViewOffset=(X=16.000000,Y=8.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExDeco.Flask'
PickupViewMesh=LodMesh'DeusExDeco.Flask'
ThirdPersonMesh=LodMesh'DeusExDeco.Flask'
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'PGAssets.Icons.BeltIconEstus'
M_Activated=""
largeIconWidth=18
largeIconHeight=44
Description="Estus magic potion of healing"
beltDescription="POISONESTUS"
Texture=Texture'DeusExDeco.Skins.AlarmLightTex9'
Mesh=LodMesh'DeusExDeco.Flask'
AmbientGlow=20
MultiSkins(0)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(1)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(2)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(3)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(4)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(5)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(6)=Texture'DeusExDeco.Skins.AlarmLightTex9'
MultiSkins(7)=Texture'DeusExDeco.Skins.AlarmLightTex9'
SoundVolume=64
CollisionRadius=4.200000
CollisionHeight=7.450000
LightBrightness=50
LightSaturation=20
LightRadius=5
Mass=10.000000
Buoyancy=8.000000

Activate


// can't turn it off

BecomeItem


bEstusArmed=False;
super.BecomeItem();

BecomePickup


if(Owner != None)
bEstusArmed=True;
super.BecomePickup();

BeginState



GotoState('DeActivated');

Destroyed


local ProjectileGenerator gen;



if ( !bEstusArmed )
return;

EstusExplode();
gen = Spawn(class'ProjectileGenerator',,, Location);
if (gen != None)
{
//gen.RemoteRole = ROLE_None;
//gen.particleDrawScale = 1.0;
gen.checkTime = 0.05;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
//gen.bGravity = True;
gen.bRandomEject = True;
gen.ProjectileClass=class'Fireball';
gen.LifeSpan = 2.0;
}
super.Destroyed();

DropFrom (vector StartLocation)


bEstusArmed=True;
super.DropFrom(StartLocation);

EstusUse (actor p)


p.TakeDamage(30, Pawn(Owner), vect(0,0,0),vect(0,0,1),'Poison');
SpawnTearGas(p.location);

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
MaxCopies = 1;

SpawnTearGas (vector target)


local Vector loc;
local TearGas gas;
local int i;


if ( Role < ROLE_Authority )
return;

for (i=0; i<512/36; i++)
{
if (FRand() < 0.9)
{
loc = target;
loc.X += FRand() * 512 - 512 * 0.5;
loc.Y += FRand() * 512 - 512 * 0.5;
loc.Z += 32;
gas = spawn(class'TearGas', None,, loc);
if (gas != None)
{
gas.Velocity = vect(0,0,0);
gas.Acceleration = vect(0,0,0);
gas.DrawScale = FRand() * 0.5 + 2.0;
gas.LifeSpan = FRand() * 10 + 30;
if ( Level.NetMode != NM_Standalone )
gas.bFloating = False;
else
gas.bFloating = True;
gas.Instigator = Pawn(Owner);
}
}
}

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 9);

estusExplode


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;


// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
}

HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
SpawnTearGas(Location);




PoisonKnife.uc (extends Shuriken)

DamageType=Poison
spawnWeaponClass=Class'PartyStuff.WeaponPoisonKnives'
ItemName="Poisoned Throwing Knife"
Damage=10.000000



PortableCarpet.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="Carpet readiness:"
ItemName="Portable Carpet"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExDeco.HKMarketTarp'
PlayerViewScale=0.200000
PickupViewMesh=LodMesh'DeusExDeco.HKMarketTarp'
ThirdPersonMesh=LodMesh'DeusExDeco.HKMarketTarp'
ThirdPersonScale=0.250000
Charge=8
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="Its a tarp"
beltDescription="CARP"
Texture=Texture'HK_Interior.Textile.HKM_Rug_04'
Skin=Texture'HK_Interior.Textile.HKM_Rug_04'
Mesh=LodMesh'DeusExDeco.HKMarketTarp'
CollisionRadius=72.000000
CollisionHeight=15.000000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local Vector loc,X,Y,Z;

// local FlyingTarp CD;

Spawn(Class'FlyingCarpet',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );



Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




PowerArmour.uc (extends PGArmour)

Dur=25
Def=10
ItemName="Power Armour"
beltDescription="POWER"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




PropGun.uc (extends DeusExWeapon)

var int Mode;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=89
ItemName="Prop Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="PROP"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetDisplayString (Actor P) -> string


if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

GiveTo (pawn Other)


if(DeusExPlayer(Other).bAdmin)
{
super.Giveto(Other);
}

LaserToggle


Mode++;
if(Mode == 3)
Mode = 0;

if(Mode == 0)
DeusExPlayer(Owner).ClientMessage("Mode is now Toggle Invincible");
else if(Mode == 1)
DeusExPlayer(Owner).ClientMessage("Mode is now Toggle Pushable");
else if(Mode == 2)
DeusExPlayer(Owner).ClientMessage("Mode is now Toggle Movable");

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;


if(Other.isa('DeusExDecoration'))
{
if(Mode == 0)
{
DeusExDecoration(Other).bInvincible = !DeusExDecoration(Other).bInvincible;
DeusExPlayer(Owner).ClientMessage("Invincible "$DeusExDecoration(Other).bInvincible);
}
if(Mode == 1)
{
DeusExDecoration(Other).bPushable = !DeusExDecoration(Other).bPushable;
DeusExPlayer(Owner).ClientMessage("bPushable "$DeusExDecoration(Other).bPushable);
}
if(Mode == 2)
{
DeusExDecoration(Other).bMovable = !DeusExDecoration(Other).bMovable;
DeusExPlayer(Owner).ClientMessage("bMovable "$DeusExDecoration(Other).bMovable);
}
return;
}

ScopeToggle

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




ProxLamp.uc (extends Lamp)

var int Mode;
var DeusExPlayer tempPwn;
var bool bFoundPlayer;
bInvincible=True
ItemName="Proximity Lamp"
Mesh=LodMesh'DeusExDeco.Lamp2'
CollisionRadius=15.000000
CollisionHeight=47.000000
LightSaturation=0
LightRadius=18

Tick (float deltaTime)


local DeusExPlayer player;


bFoundPlayer=False;
foreach VisibleActors(class'DeusExPlayer', player, 256)
{
bFoundPlayer=True;
}

if(bFoundPlayer && LightType==LT_None)
{
bOn = True;
LightType = LT_Steady;
PlaySound(sound'Switch4ClickOn');
bUnlit = True;
ScaleGlow = 2.0;
}
else if(!bFoundPlayer && LightType==LT_Steady)
{
bOn = False;
LightType = LT_None;
PlaySound(sound'Switch4ClickOff');
bUnlit = False;
ResetScaleGlow();
}
Super.Tick(deltaTime);




RaceMarker.uc (extends DeusExDecoration)

var int Secs, Mins;
var bool bDisabled;
var RaceMarker EndPoint, StartPoint;
HitPoints=100
bInvincible=True
bHighlight=False
ItemName="Race Marker"
bPushable=False
Physics=PHYS_Rotating
Style=STY_Translucent
Texture=Texture'DeusExUI.UserInterface.AugIconCombat_Small'
Mesh=LodMesh'DeusExDeco.Lightbulb'
AmbientGlow=255
Fatness=140
CollisionRadius=5.000000
CollisionHeight=8.000000
bBlockPlayers=False
LightType=LT_Steady
LightBrightness=100
LightSaturation=255
LightRadius=10
bFixedRotationDir=True
RotationRate=(Yaw=8192)

PostBeginPlay


local RaceMarker RM;


foreach AllActors(class'RaceMarker', RM)
{

}

RadialCollect


local PlayerPawn P, winP;
local vector dist;
local float lowestDist;


lowestDist = 1024;

foreach VisibleActors(class'PlayerPawn', P, 50)
{
if(P != None && !P.IsInState('Dying') && P.Health > 0)
{
if(vSize(P.Location - Location) < lowestDist)
{
winP = P;
lowestDist = vSize(P.Location - Location);
}
}
}

if(winP != None)
{
winP.ClientMessage("weehee");
}

Tick (float deltatime)


super.Tick(deltatime);

RadialCollect();

Timer




RadarDrone.uc (extends DXRobot)

var float explosionradius;
var() float hoverdistance; //how close to get to the player.
var DeusExPlayer myOwner;
var(Sounds) sound BeepActive, BeepPassive;
var bool bDoneDanger, bDoneWorry;
var string DangerString, WorryString;
var bool bSilence;
var ToolRadarD LinkedTool;
var int pOrders;
var int RocketsRemain, rrocketsremain;
var float DroneRange;
var class storedinv, rstoredinv;
var string iv;
explosionRadius=100.000000
hoverdistance=200.000000
BeepActive=Sound'DeusExSounds.Generic.TurretSwitch'
RocketsRemain=30
rrocketsremain=30
EMPHitPoints=40
Saymsg="I have no owner right now, grab a radar controller and let's hunt some n00bs!"
MinHealth=20.000000
bMustFaceTarget=True
bCanStrafe=True
AirSpeed=1000.000000
AccelRate=350.000000
Health=600
DrawType=DT_Mesh
Mesh=LodMesh'DeusExCharacters.SpyDrone'
SoundRadius=24
SoundVolume=92
AmbientSound=Sound'DeusExSounds.Augmentation.AugDroneLoop'
CollisionRadius=13.000000
CollisionHeight=2.760000
bBlockPlayers=False
Mass=20.000000
BindName="Drone"
FamiliarName="RADAR Drone"
UnfamiliarName="RADAR Drone"

BeginState


setphysics(PHYS_flying); //added
StandUp();
//Disable('AnimEnd');
bStasis = False;
SetupWeapon(false);
SetDistress(false);
BackpedalTimer = -1;
SeekPawn = None;
EnableCheckDestLoc(true);

DFX


local SphereEffect sphere;

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = explosionradius / 32.0;
Sphere.MultiSkins[0]=Texture'DeusExDeco.Skins.AlarmLightTex3';
}

EndState


EnableCheckDestLoc(false);
bAcceptBump = False;
//Enable('AnimEnd');
bStasis = True;
StopBlendAnims();

ExplodeNuke


local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 1000;
explosionRadius = 1500;

PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

Destroy();
PlayDyingSound();
HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);

Frob (Actor Frobber, Inventory frobWith)


local ToolRadarD TRD;
local inventory ga,inv;

if(myOwner != None && myOwner == DeusExPlayer(Frobber))
{
if(storedinv != None)
{
SilentAdd(storedInv, DeusExPlayer(Frobber));
Storedinv = None;
rstoredinv = Storedinv;
iv = "NONE";
return;

}
if(myOwner.Inhand != None && storedinv == None)
{
storedinv = myOwner.inhand.Class;
rstoredinv = myOwner.inhand.Class;
IV = myOwner.inhand.itemname;
myOwner.inhand.Destroy();
return;
}
myOwner = None;
GotoState('Waiting');
ExtSay("Drone released.");
DeusExPlayer(Frobber).ClientMessage("Radar off.");
foreach Allactors(class'toolradard',trd)
if(trd.LinkedDrone == Self)
trd.LinkedDrone = None;
return;
}

if(myOwner == None)
{
myOwner = DeusExPlayer(Frobber);
GotoState('following');
ExtSay("Now following "$myOwner.PlayerReplicationinfo.PlayerName$".");
foreach Allactors(class'toolradard',trd)
if(trd.Owner == Frobber)
{
trd.LinkedDrone = Self;
return;
}

if(storedinv == none)
iv="none";
SilentAdd(class'toolRadarD', myOwner);
SetTimer(1,False);
return;
}

HitWall (vector HitNormal, actor Wall)


if (Physics == PHYS_Falling)
return;
Global.HitWall(HitNormal, Wall);
CheckOpenDoor(HitNormal, Wall);

PickDestination -> bool


local float dist;
local float extra;
local float distMax;
local int dir;
local rotator rot;
local bool bSuccess;


if(myOwner == None)
return False;
bSuccess = false;
destPoint = None;
destLoc = vect(0, 0, 0);
extra = myOwner.CollisionRadius + CollisionRadius;
dist = VSize(myOwner.Location - Location);
dist -= extra;
if (dist < 0)
dist = 0;

if ((dist > 180) || (AICanSee(myOwner, , false, false, false, true) <= 0))
{
if (ActorReachable(myOwner))
{
rot = Rotator(myOwner.Location - Location);
distMax = (dist-180)+45;
if (distMax > 80)
distMax = 80;
bSuccess = AIDirectionReachable(Location, rot.Yaw, rot.Pitch, 0, distMax, destLoc);
}
else
{
MoveTarget = FindPathToward(myOwner);
if (MoveTarget != None)
{
destPoint = MoveTarget;
bSuccess = true;
}
}
BackpedalTimer = -1;
}
else if (dist < 60)
{
if (BackpedalTimer < 0)
BackpedalTimer = 0;
if (BackpedalTimer > 1.0) // give the player enough time to converse, if he wants to
{
rot = Rotator(Location - myOwner.Location);
bSuccess = AIDirectionReachable(myOwner.Location, rot.Yaw, rot.Pitch, 60+extra, 120+extra, destLoc);
}
}
else
BackpedalTimer = -1;

return (bSuccess);

SetFall


StartFalling('Following', 'ContinueFollow');

ShouldFlee -> bool


return false;

SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass,,,addTarget.Location);
anItem.SpawnCopy(addTarget);
anItem.Destroy();
/*anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);*/

Tick (float deltaSeconds)


local float AreWeTooFar;
local Inventory Inv;

Global.Tick(deltaSeconds);
if(myOwner != None)
{
AreWeTooFar = Abs(VSize(myOwner.Location - Location));
if(AreWeTooFar > 650)
{
foreach AllActors(class'Inventory', Inv)
{
if (Inv.Owner == myOwner)
{
if (Inv.IsA('ToolRadarD'))
{
ToolRadarD(Inv).Recreation();
return;
}
}
}
}
}

if (BackpedalTimer >= 0)
BackpedalTimer += deltaSeconds;

animTimer[1] += deltaSeconds;
if ((Physics == PHYS_Walking) && (myOwner != None))
{
if (Acceleration == vect(0,0,0))
LookAtActor(myOwner, true, true, true, 0, 0.25);
else
PlayTurnHead(LOOK_Forward, 1.0, 0.25);
}

Timer


local int range;
local DeusExPlayer player;
local ShockRing SE;


range=0;
foreach RadiusActors(class'DeusExPlayer', player, 350, Location)
{
if (player != None && player != myOwner)
range=2;
}

foreach RadiusActors(class'DeusExPlayer', player, 1000, Location)
{
if (player != None && player != myOwner && range != 2)
range=1;
}


if(myOwner != None && Range==0)
{
SetTimer(1,False);
if(bDoneDanger || bDoneWorry)
{
myOwner.PlaySound(Sound'DeusExSounds.Robot.SecurityBot3TargetLost', SLOT_Talk,2,,1024,);
bDoneDanger=False;
bDoneWorry=False;
myOwner.ClientMessage("RADAR Drone: Sorry, "$myOwner.PlayerReplicationinfo.PlayerName$", I guess it was nothing.", 'TeamSay');
}
}
if(myOwner != None && Range==2)
{
if(!bDoneDanger)
{
myOwner.PlaySound(Sound'DeusExSounds.Robot.SecurityBot3TargetAcquired', SLOT_Talk,2,,1024,);
myOwner.ClientMessage("RADAR Drone: Hey, "$myOwner.PlayerReplicationinfo.PlayerName$", there's someone very close by!", 'TeamSay');
}
bDoneDanger=True;
if(!bSilence)
{
PlaySound(BeepActive, SLOT_None,200,, 255);
SE = Spawn(class'ShockRing',,, Location);
SE.Lifespan = 0.5;
}
SetTimer(0.5,False);
}
if(myOwner != None && Range==1)
{
if(!bDoneworry)
{
myOwner.PlaySound(Sound'DeusExSounds.Robot.SecurityBot3TargetAcquired', SLOT_Talk,2,,1024,);
myOwner.ClientMessage("RADAR Drone: Wait, "$myOwner.PlayerReplicationinfo.PlayerName$", did you hear something?", 'TeamSay');
}
bDoneWorry=True;
if(!bSilence)
{
PlaySound(BeepActive, SLOT_None,200,, 255);
SE = Spawn(class'ShockRing',,, Location);
SE.Lifespan = 1;
}
SetTimer(1.3,False);
}




RaidActor.uc (extends PGActors)




Replicator.uc (extends DeusExWeapon)

var() class StoredActor;
var string rStoredActor;
var() rotator storedRotation;
var bool bRotLock;
var bool bAdminUnlocked, bRepAdminUnlocked;
var int Uses, rUses;
var string iv;
rstoredactor="NONE"
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=147
ItemName="Replicator Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="REPLICATE"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetDisplayString (Actor P) -> string


if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

GiveTo (pawn Other)


super.Giveto(Other);
DeusExPlayer(Other).ClientMessage("Fire at an object to begin.");
if(DeusExPlayer(Other).bAdmin)
{
bAdminUnlocked=True;
bRepAdminUnlocked=True;
Uses=10;
rUses=10;
DeusExPlayer(Other).ClientMessage("ADMIN UNLOCKED! Unlimited uses.");
}
else
{
DeusExPlayer(Other).ClientMessage("Limited uses.");
Uses=10;
rUses=10;
bAdminUnlocked=False;
bRepAdminUnlocked=false;
}
StoredActor = None;
rstoredactor = "NONE";
iv = "NONE";
SetTimer(10,True);

LaserToggle


if(StoredActor != None)
{
bRotLock = !bRotLock;
DeusExPlayer(Owner).ClientMessage("rotation Lock: "$bRotLock);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer, DXP;
local Pawn P;


if(StoredActor == None)
{
if(Other.isa('ScriptedPawn'))
{
StoredActor = Other.Class;
rstoredactor = GetDisplayString(Other);
StoredRotation = Other.Rotation;
iv = GetDisplayString(Other);
DeusExPlayer(Owner).ClientMessage("Stored: "$GetDisplayString(Other));
DeusExPlayer(Owner).ClientMessage("Fire now spawns. Laser to toggle rotation. Scope to clear");
return;
}
else if(Other.isa('Decoration'))
{
StoredActor = Other.Class;
rstoredactor = GetDisplayString(Other);;
StoredRotation = Other.Rotation;
iv = GetDisplayString(Other);
DeusExPlayer(Owner).ClientMessage("Stored: "$GetDisplayString(Other));
DeusExPlayer(Owner).ClientMessage("Fire now spawns. Laser to toggle rotation. Scope to clear");
return;
}
}
else
{
if(bAdminUnlocked)
{
if(bRotLock)
Spawn(StoredActor,,,HitLocation, StoredRotation);
else
Spawn(StoredActor,,,HitLocation, Owner.Rotation);
}
else
{
if(Uses > 0)
{
Uses--;
rUses=Uses;
DeusExPlayer(Owner).ClientMessage(Uses$" uses remaining...");

if(bRotLock)
Spawn(StoredActor,,,HitLocation, StoredRotation);
else
Spawn(StoredActor,,,HitLocation, Owner.Rotation);
}
else
{
DeusExPlayer(Owner).ClientMessage("Replicator is used up and needs to recharge...");
}
}
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;
curKeyName = "";
for ( i=0; i<255; i++ )
{
KeyName = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyName != "" )
{
Alias = Owner.ConsoleCommand( "KEYBINDING "$KeyName );
if ( Alias ~= "ToggleScope" )
{
curKeyName = KeyName;
break;
}
}
}
if ( curKeyName ~= "" )
curKeyName = "NONE";
if(bRepAdminUnlocked)
Canvas.DrawText(" Stored Class: "$iv$" ["$curKeyName$" to clear]");
else
Canvas.DrawText(" ["$rUses$"/10] Stored Class: "$iv$" ["$curKeyName$" to clear]");
}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50
//

ScopeToggle


if(StoredActor != None)
{
StoredActor = None;
rstoredactor = "NONE";
iv = "NONE";
DeusExPlayer(Owner).ClientMessage("Object cleared.");
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

Timer


if(Uses < 10)
{
Uses++;
rUses=Uses;
DeusExPlayer(Owner).ClientMessage("Replicator is charging... Now at "$Uses$"/10");
}





RestPoint.uc (extends DeusExDecoration)

var DeusExPlayer ConfirmRest;
var DeusExPlayer Rester;
var() string RestPointMessage;
RestPointMessage="It seems okay to rest here for a while. Press again to confirm."
bInvincible=True
ItemName="Rest Point"
bPushable=False
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;


Super.Frob(frobber, frobwith);

P=DeusExPlayer(Frobber);

if(Rester != None)
return;

if(P == ConfirmRest)
{
PlayerRest(P);
return;
}

P.ClientMessage(RestPointMessage);
ConfirmRest = P;

PlayerRest (DeusExPlayer P)


P.HealPlayer(200, false);
P.ClientFlash(6, vect(1000,1000,1000));
bBlockPlayers = true;
Rester = P;
SetTimer(4.5, false);

Tick (float deltaTime)


if(Rester!=None)
{
Rester.SetLocation(Location);
}

Timer


Rester.ClientMessage("You're rested...");
Rester = none; //Free to go.
bBlockPlayers = false;




ReturnArmour.uc (extends DeusExPickup)

ItemName="Return Armour"
ItemArticle="some"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
PickupViewMesh=LodMesh'DeusExItems.AdaptiveArmor'
ThirdPersonMesh=LodMesh'DeusExItems.AdaptiveArmor'
Charge=500
LandSound=Sound'DeusExSounds.Generic.PaperHit2'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="Integrating woven fiber-optics and an advanced computing system, thermoptic camo can render an agent invisible to both humans and bots by dynamically refracting light and radar waves; however, the high power drain makes it impractial for more than short-term use, after which the circuitry is fused and it becomes useless."
beltDescription="RETURN"
Mesh=LodMesh'DeusExItems.AdaptiveArmor'
MultiSkins(1)=FireTexture'Effects.UserInterface.WhiteStatic'
CollisionRadius=11.500000
CollisionHeight=13.810000
Mass=30.000000
Buoyancy=20.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




RocketDrone.uc (extends DeusExProjectile)

var float time;
var float dist;
var Rotator dir;
var vector TargetLocation;
var rotator TargetDir;
var rotator RandomAdd;
var rotator HeightAdjAdd;
var rotator Rand;
var() float proxRadius;
var() bool bfalloff;
var() float certainity;
var float certainity2;
var() float drunkness;
var() float sharpness;
var() float heightAdj;
var() float tickTime;
var() float minMass;
var rotator RotationOld;
var Pawn P;
var Pawn Itarget;
var pawn Ignorer;
proxRadius=800.000000
certainity=1.000000
drunkness=0.100000
sharpness=1.000000
tickTime=0.100000
minMass=40.000000
bExplodes=True
bBlood=True
bDebris=True
blastRadius=64.000000
DamageType=exploded
AccurateRange=14400
maxRange=24000
ItemName="Drone Rocket"
ItemArticle="a"
speed=700.000000
MaxSpeed=1500.000000
Damage=50.000000
MomentumTransfer=10000
SpawnSound=Sound'DeusExSounds.Weapons.GEPGunFire'
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion1'
Mesh=LodMesh'DeusExItems.Rocket'
DrawScale=0.100000
SoundRadius=16
SoundVolume=196
AmbientSound=Sound'DeusExSounds.Special.RocketLoop'
RotationRate=(Pitch=99999)

DoGuidance


if (Itarget != None)
{
TargetLocation = Itarget.Location;
dist = Vsize(TargetLocation - Location);
if ((bfalloff) && (proxRadius != 0))
certainity2 = ((proxRadius-dist) * certainity ) / proxRadius;
else
certainity2 = certainity;
}
else
certainity2 = 0;
Rand = Rotator(Vrand());
TargetDir = Rotator(TargetLocation - Location);
RandomAdd = (TargetDir-Rotation)*certainity2+Rand*(1-certainity2)*drunkness;
HeightAdjAdd = Rotation*heightAdj + RandomAdd * sharpness * (1-heightAdj);
RotationOld = Rotation;
DesiredRotation = RotationOld + RandomAdd*sharpness;

velocity = Vector(Rotation) * Speed;

PostBeginPlay


TargetLocation = Location;
bRotateToDesired = True;
DesiredRotation = Rotation;

Tick (float deltaTime)


if (time >= tickTime)
{
time = 0;
if ((dist > proxRadius) || (Itarget == None)) //then try find a new target
{
Itarget = None;
foreach RadiusActors(class'Pawn', P, proxRadius)
{
if ((P != None) && (P.Mass >=40) && (P != Ignorer))
{
if (P != Owner)
Itarget = P;
}
}
}
else
Itarget = None;
DoGuidance();
}
else
time += deltaTime;




RocketHostage.uc (extends RocketMini)

bExplodes=False
Damage=0.000000

ProcessTouch (actor Other, vector HitLocation)


local Hostager Hostaged;
local Hostager Selector;
local int FoundSelect;


FoundSelect = 0;

if(Other.IsA('DeusExPlayer') && Other != Instigator)
{
foreach AllActors(Class'Hostager', Selector)
{
if(Selector != None)
{
if(Selector.Instigator == Instigator || Selector.Player == Pawn(Other))
{
FoundSelect = 1;
}
}
}
if(FoundSelect == 0)
{
Hostaged = Spawn(class'Hostager');
if(Hostaged != none)
{
Hostaged.Player = DeusExPlayer(Other);
Hostaged.SetOwner(DeusExPlayer(Other));
Hostaged.Instigator = Instigator;
}
}
}
Super.ProcessTouch(Other, HitLocation);




SSRING.uc (extends SphereEffect)

var float blastRadius;
LifeSpan=2.500000
Skin=FireTexture'Effects.liquid.Virus_SFX'

Tick (float deltaTime)



Super.Tick(DeltaTime);

DrawScale = 3.0 * size * (Default.LifeSpan - LifeSpan) / Default.LifeSpan;
ScaleGlow = 1.1 * (LifeSpan / Default.Lifespan);




Salad.uc (extends FoodMMRPG)

ItemName="Fresh Salad"
ItemArticle="a packet of"
PlayerViewMesh=LodMesh'DeusExItems.SoyFood'
PlayerViewScale=2.000000
PickupViewMesh=LodMesh'DeusExItems.SoyFood'
PickupViewScale=2.000000
ThirdPersonMesh=LodMesh'DeusExItems.SoyFood'
ThirdPersonScale=2.000000
Icon=Texture'PGAssets.Skins.SaladBelt'
largeIcon=Texture'PGAssets.Skins.SaladBelt'
largeIconWidth=42
largeIconHeight=46
beltDescription="SALAD"
Skin=Texture'PGAssets.Skins.SaladTex1'
Mesh=LodMesh'DeusExItems.SoyFood'
DrawScale=2.000000
MultiSkins(0)=Texture'PGAssets.Skins.SaladTex1'
CollisionRadius=14.000000
CollisionHeight=2.980000
Mass=3.000000



ScoundrelManager.uc (extends Actor)

var DXScriptedPawn LS;
var ScoundrelMarker SM, LM;
var bool bSelectionProcess;
var PGGames myRef;
var class ScoundrelClass;

BeginPlay


local int C;

//Initiate
bSelectionProcess=True;
foreach AllActors(class'ScoundrelMarker', LM)
{
C++;
}

if(C == 0)
{
BroadcastMessage("No ScoundrelMarkers found. Cancelling startup.");
Destroy();
}
if(C < 2)
{
BroadcastMessage("Only "$C$" ScoundrelMarkers found, MINIMUM of 3 are required. Cancelling startup.");
Destroy();
}
else
{
BroadcastMessage(C$" ScoundrelMarkers found! Randomizing selection....");
UnoSelecta();
}

CloseGame


LS.Destroy();
Destroy();
BroadcastMessage("Scoundrel game forced end.");

DosSelecta


local int RRR;


foreach AllActors(class'ScoundrelMarker', LM)
{
RRR = Rand(10);

if(RRR >= 7)
{
SM = LM;
BroadcastMessage("Spawn point chosen. Target will spawn shortly.");
SetTimer(20,False);
return;
}
if(SM != None)
{
return;
}
}

if(SM == None)
{
UnoSelecta();
}

Timer


if(bSelectionProcess)
{
LS = spawn(ScoundrelClass,,,SM.Location,);
BroadcastMessage("Scoundrel is in play! The Hunt Begins!");
bSelectionProcess=False;
SetTimer(3,True);
}
else
{
if(LS == None)
{
BroadcastMessage("No target in play, ending Scoundrel game.");
myRef.bscOn=False;
Destroy();
}
}

UnoSelecta


local int RRR;


foreach AllActors(class'ScoundrelMarker', LM)
{
RRR = Rand(10);

if(RRR >= 7)
{
SM = LM;
BroadcastMessage("Spawn point chosen. Target will spawn shortly.");
SetTimer(20,False);
return;
}
if(SM != None)
{
return;
}
}

if(SM == None)
{
DosSelecta();
}




ScoundrelMarker.uc (extends PGActors)

bHidden=False



SecDrone.uc (extends DXRobot)

var float explosionradius;
var() float hoverdistance; //how close to get to the player.
var DeusExPlayer AttachPlayer;
var float DroneRange;
var DeusExPlayer NotifPlayer;
explosionRadius=100.000000
hoverdistance=200.000000
EMPHitPoints=40
MinHealth=20.000000
bInvincible=True
bMustFaceTarget=True
bCanStrafe=True
AirSpeed=1000.000000
AccelRate=350.000000
Health=600
DrawType=DT_Mesh
Mesh=LodMesh'DeusExCharacters.SpyDrone'
SoundRadius=24
SoundVolume=92
AmbientSound=Sound'DeusExSounds.Augmentation.AugDroneLoop'
CollisionRadius=13.000000
CollisionHeight=2.760000
bBlockPlayers=False
Mass=20.000000
BindName="Drone"
FamiliarName="Security Drone"
UnfamiliarName="Security Drone"

BeginState


setphysics(PHYS_flying); //added
StandUp();
//Disable('AnimEnd');
bStasis = False;
SetupWeapon(false);
SetDistress(false);
BackpedalTimer = -1;
SeekPawn = None;
EnableCheckDestLoc(true);

EndState


EnableCheckDestLoc(false);
bAcceptBump = False;
//Enable('AnimEnd');
bStasis = True;
StopBlendAnims();

Frob (Actor Frobber, Inventory frobWith)

HitWall (vector HitNormal, actor Wall)


if (Physics == PHYS_Falling)
return;
Global.HitWall(HitNormal, Wall);
CheckOpenDoor(HitNormal, Wall);

PickDestination -> bool


local float dist;
local float extra;
local float distMax;
local int dir;
local rotator rot;
local bool bSuccess;


if(AttachPlayer == None)
return False;
bSuccess = false;
destPoint = None;
destLoc = vect(0, 0, 0);
extra = AttachPlayer.CollisionRadius + CollisionRadius;
dist = VSize(AttachPlayer.Location - Location);
dist -= extra;
if (dist < 0)
dist = 0;

if ((dist > 180) || (AICanSee(AttachPlayer, , false, false, false, true) <= 0))
{
if (ActorReachable(AttachPlayer))
{
rot = Rotator(AttachPlayer.Location - Location);
distMax = (dist-180)+45;
if (distMax > 80)
distMax = 80;
bSuccess = AIDirectionReachable(Location, rot.Yaw, rot.Pitch, 0, distMax, destLoc);
}
else
{
MoveTarget = FindPathToward(AttachPlayer);
if (MoveTarget != None)
{
destPoint = MoveTarget;
bSuccess = true;
}
}
BackpedalTimer = -1;
}
else if (dist < 60)
{
if (BackpedalTimer < 0)
BackpedalTimer = 0;
if (BackpedalTimer > 1.0) // give the player enough time to converse, if he wants to
{
rot = Rotator(Location - AttachPlayer.Location);
bSuccess = AIDirectionReachable(AttachPlayer.Location, rot.Yaw, rot.Pitch, 60+extra, 120+extra, destLoc);
}
}
else
BackpedalTimer = -1;

return (bSuccess);

SetFall


StartFalling('Following', 'ContinueFollow');

ShouldFlee -> bool


return false;

Tick (float deltaSeconds)


local float AreWeTooFar;
local Inventory Inv;

Global.Tick(deltaSeconds);

if(AttachPlayer != None)
{
if(AttachPlayer.bAdmin)
{
AttachPlayer.ClientMessage("Security Drone: Sorry, my mistake.", 'TeamSay');
Destroy();
}
AreWeTooFar = Abs(VSize(AttachPlayer.Location - Location));
if(AreWeTooFar > 650)
{
SetCollision(false, false, false);
bCollideWorld = true;
SetLocation(AttachPlayer.location);
SetCollision(true, true , true);
}
}

if (BackpedalTimer >= 0)
BackpedalTimer += deltaSeconds;

animTimer[1] += deltaSeconds;
if ((Physics == PHYS_Walking) && (AttachPlayer != None))
{
if (Acceleration == vect(0,0,0))
LookAtActor(AttachPlayer, true, true, true, 0, 0.25);
else
PlayTurnHead(LOOK_Forward, 1.0, 0.25);
}

Timer


if(NotifPlayer != None)
{
NotifPlayer.ClientMessage(AttachPlayer.PlayerReplicationInfo.PlayerName$" was killed by your security.");
}
PlaySound(Sound'DeusExSounds.Weapons.RifleFire',,,, 256);
AttachPlayer.ReducedDamageType='';
AttachPlayer.TakeDamage(10000,Self,vect(0,0,0),vect(0,0,1),'Exploded');
Destroy();




SequenceLock.uc (extends DeusExDecoration)

var() int SequenceNum;
var bool bActivated;
var() string mySequenceGroup;
var() bool bResetter;
bInvincible=True
ItemName="Sequence Lock"
bPushable=False
Physics=PHYS_None
Texture=Texture'DeusExItems.Skins.DataCubeTex2'
Mesh=LodMesh'DeusExItems.DataCube'
CollisionRadius=7.000000
CollisionHeight=1.270000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local SequenceLockHandler SQH;


if(bResetter)
{
foreach AllActors(class'SequenceLockHandler', SQH)
{
if(SQH.SequenceGroup ~= mySequenceGroup)
{
SQH.CurrentInput=0;
DeusExPlayer(Frobber).ClientMessage("Sequence"@mySequenceGroup$": |P2"$SQH.CurrentInput);
}
}
return;
}

/*if(bActivated)
{
DeusExPlayer(Frobber).ClientMessage("Button already activated.");
return;
}*/
foreach AllActors(class'SequenceLockHandler', SQH)
{
if(SQH.SequenceGroup ~= mySequenceGroup)
{
SQH.AddSequence(DeusExPlayer(Frobber), SequenceNum);
//bActivated=True;
}
}




SequenceLockHandler.uc (extends Actor)

var() int AcceptedSequence;
var int CurrentInput;
var() string SequenceGroup;
var() name PassEvent, FailEvent;

AddSequence (DeusExPlayer DXP, int Seq)


local int j;
local string Pre, Aft, ifin;
local actor a;

Pre = string(currentInput);
Aft = string(Seq);
ifin = currentInput$seq;
CurrentInput = int(ifin);
DXP.ClientMessage("Sequence"@SequenceGroup$": |P7"$CurrentInput);

if(CurrentInput == AcceptedSequence)
{
if(PassEvent != '')
{
foreach AllActors( class 'actor', A)
{
if(A.Tag == PassEvent)
A.Trigger( Self, None );
}
}
CurrentInput=0;
DXP.ClientMessage("Sequence accepted.");
}




ShopButton.uc (extends DeusExDecoration)

var(RPG) int Price;
var(RPG) class ShopItem;
var(RPG) bool bTriggerInstead;
var(RPG) string purchasealias;
var DeusExPlayer LastBuyer;
var bool bConfirm;
bInvincible=True
ItemName="Shop"
bPushable=False
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.Switch1'
CollisionRadius=2.630000
CollisionHeight=2.970000
Mass=10.000000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local Inventory Inv;
local DeusExPlayer Player;
local bool bPositionFound;
local int beltpos;


Player = DeusExPlayer(Frobber);

if(bTriggerInstead)
{
if(bConfirm)
{
if(Player.Credits >= Price)
{
super.Frob(frobber,frobWith);
Player.Credits -= Price;
Player.ClientMessage("|P3Purchased |P2"$purchasealias$" |P3for |P2"$Price$"|P3. |P1(New credits: "$Player.Credits$")");
bConfirm=False;
}
else
{
Player.ClientMessage("|P3You can't afford this purchase.");
bConfirm=False;
}
}
else
{
Player.ClientMessage("|P3Purchase trigger |p2"$purchasealias$" |P3for |P2"$Price$"|P3? Press again to confirm. |P1(Current credits: "$Player.Credits$")");
bConfirm=True;
SetTimer(3,False);
}
}
else
{
if(bConfirm)
{
if(Player.Credits >= Price)
{

/* if(!player.FindInventorySlot(inventory(shopitem.class), True))

if(!bPositionFound)
{
Player.ClientMessage("Not enough room for this item...");
return;
}*/
/*inv.InitialState='Idle2';
inv.GiveTo(Player);
inv.SetBase(Player);*/
SilentAdd(shopItem, Player);
LastBuyer = Player;
Player.Credits -= Price;
Player.ClientMessage("|P3Purchased|P2 "$purchasealias$"|P3 for |P2"$Price$"|P3. |P1(New credits: "$Player.Credits$")");
bConfirm=False;
}
else
{
Player.ClientMessage("|P3You can't afford this purchase.");
bConfirm=False;
}
}
else
{
Player.ClientMessage("|P3Purchase |P2"$purchasealias$" |P3for |P2"$Price$"|P3? Press again to confirm. |P1(Current credits: "$Player.Credits$")");
bConfirm=True;
SetTimer(3,False);
}

}


SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass,,,addTarget.Location);
anItem.SpawnCopy(addTarget);
anItem.Destroy();
/*anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);*/

Timer


bConfirm=False;




ShopButton2.uc (extends DeusExDecoration)

var(RPG) int Price;
var(RPG) class ShopItem;
var(RPG) string purchasealias;
var(RPG) name CTag;
var bool bConfirm;
bInvincible=True
ItemName="Furniture Shop"
bPushable=False
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.Switch1'
CollisionRadius=2.630000
CollisionHeight=2.970000
Mass=10.000000
Buoyancy=12.000000

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer Player;
local ShopConstructor SC;


Player = DeusExPlayer(Frobber);

if(bConfirm)
{
if(Player.Credits >= Price)
{
foreach AllActors(class'ShopConstructor', SC)
{
if(SC.Tag == CTag)
{
Spawn(ShopItem,,,SC.Location);
}
}
Player.Credits -= Price;
Player.ClientMessage("|P3Purchased |P2"$purchasealias$" |P3for |P2"$Price$"|P3. |P1(New credits: "$Player.Credits$")");
bConfirm=False;
}
else
{
Player.ClientMessage("|P3You can't afford this purchase.");
bConfirm=False;
}
}
else
{
Player.ClientMessage("|P3Purchase trigger |p2"$purchasealias$" |P3for |P2"$Price$"|P3? Press again to confirm. |P1(Current credits: "$Player.Credits$")");
bConfirm=True;
SetTimer(3,False);
}

Timer


bConfirm=False;




ShopConstructor.uc (extends Actor)

bHidden=True



ShopPoint.uc (extends ShopButton)

ItemName="Shop Point"
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex6'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=25.200001
CollisionHeight=20.000000
bBlockPlayers=False



SizableEffectSpawner.uc (extends Effects)

var() class EffectClass; //type of effect
var() float Interval; //time between spaws
var() float TimeLimit; //until when should I spawn? If 0, not limited
var() float SizeofEffect; //drawscale of effect
var() Texture EffectSkin; //what is the skin of this effect?
var() float EffectLSpan; //how much will this effect live?
var() int NumberSpawns; //if 0, not limited by a number
var float TotalTime, IntervalTime;
var int spawnedItems;
EffectLSpan=3.000000
bDirectional=True

Tick (float deltaTime)


local SizableEffects newEffect;


TotalTime+=deltaTime;
IntervalTime+=deltaTime;

if (IntervalTime > Interval)
{
if ((TimeLimit!=0 && TotalTime > TimeLimit) || (NumberSpawns!=0 && spawnedItems >= NumberSpawns))
{
Self.Destroy();
}

newEffect=Spawn(EffectClass,Owner);
if (newEffect!=None)
{
newEffect.Size=SizeofEffect;
newEffect.Skin=EffectSkin;
newEffect.LifeSpan=EffectLSpan;
spawnedItems++;
}
IntervalTime=0;
}




SizableEffects.uc (extends Effects)

var() float Size;
size=1.000000
LifeSpan=1.000000
bUnlit=True

Tick (float deltaTime)


DrawScale = 3.0 * size * (Default.LifeSpan - LifeSpan) / Default.LifeSpan;
ScaleGlow = 2.0 * (LifeSpan / Default.LifeSpan);




SkullBolt.uc (extends DeusExProjectile)

var ParticleGenerator pGen1;
var ParticleGenerator pGen2;
var float mpDamage;
var float mpBlastRadius;
mpDamage=50.000000
mpBlastRadius=300.000000
bExplodes=True
blastRadius=128.000000
DamageType=exploded
AccurateRange=24400
maxRange=24000
ItemName="Skull Bolt"
ItemArticle="a"
speed=1500.000000
MaxSpeed=1500.000000
Damage=50.000000
MomentumTransfer=5000
ImpactSound=Sound'DeusExSounds.Weapons.PlasmaRifleHit'
ExplosionDecal=Class'DeusEx.ScorchMark'
Mesh=LodMesh'DeusExDeco.BoneSkull'
DrawScale=3.000000
bUnlit=True
LightBrightness=170
LightHue=177
LightSaturation=255
LightRadius=3
bFixedRotationDir=True

Destroyed

f (pGen1 != None

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ParticleGenerator gen;
en = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal))

PostBeginPlay

uper.PostBeginPlay()

PostNetBeginPlay

f (Role < ROLE_Authority

PreBeginPlay

uper.PreBeginPlay()

SpawnPlasmaEffects


local Rotator rot;
ot = Rotation

Tick (float deltaTime)


local Rotator rot;


if (bStuck)
return;

Super.Tick(deltaTime);

if (Level.Netmode != NM_DedicatedServer)
{
rot = Rotation;
rot.Yaw += 16384;
SetRotation(rot);
}




SkullballMP.uc (extends ThrownProjectile)

var bool bDoomedToDestroy;
var bool bAlreadyScored;
bDisabled=True
bExplodes=False
bBlood=False
bEmitDanger=False
bIgnoresNanoDefense=True
ItemName="Skull ball"
LifeSpan=0.000000
bDirectional=False
Mesh=LodMesh'DeusExDeco.BoneSkull'
DrawScale=1.500000
CollisionRadius=15.000000
CollisionHeight=15.000000
bBlockActors=True
bBlockPlayers=True
Mass=8.000000
Buoyancy=10.000000

BeginPlay


Super.BeginPlay();

Explode (vector HitLocation, vector HitNormal)


return;

Frob (Actor Frobber, Inventory frobWith)


local SkullballMP4Player FLB4P;

if (!bDoomedToDestroy)
{
FLB4P = Spawn(Class'SkullballMP4Player',Frobber,,Location,Rotation);
DeusExPlayer(Frobber).FrobTarget = FLB4P;
DeusExPlayer(Frobber).GrabDecoration();
Super.Frob(Frobber, frobWith);
Destroy();
}
else
{
return;
}

HitWall (vector HitNormal, actor HitWall)


local float speed;


Velocity = 0.8*((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity);
speed = VSize(Velocity);
bFixedRotationDir = True;
RotationRate = RotRand(False);
if ((speed > 0) && (speed < 30) && (HitNormal.Z > 0.7))
{
SetPhysics(PHYS_None, HitWall);
if (Physics == PHYS_None)
bFixedRotationDir = False;
}

if (HitWall.IsA('Mover'))
{
HitWall.TakeDamage(speed/58, Pawn(Owner), HitWall.Location, MomentumTransfer*Normal(Velocity), 'Shot');
}

else if (speed > 30)
{
if ((FRand() >= 0.75) && (FRand() < 1.0))
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
else if ((FRand() >= 0.5) && (FRand() < 0.75))
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
else
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
}

TakeDamage (int Damage, Pawn instigatedBy, Vector HitLocation, Vector Momentum, name damageType)


return;

Tick (float deltaTime)


return;

Timer


if (bDoomedToDestroy)
{
Destroy();
}
return;

bump (actor other)


local DeusExMover move;
local Weapon wep;
local ScriptedPawn P;
local DeusExDecoration Deco;
local DeusExPlayer Player;
local Basketball bask;

P = ScriptedPawn(other);
Move = DeusExMover(other);
Wep = Weapon(other);
Player = DeusExPlayer(other);
Deco = DeusExDecoration(other);
Bask = Basketball(other);

//Players
if((other.IsA('DeusExPlayer')))
{
Player.ReducedDamageType = '';
Player.TakeDamage(5000,Player,Player.Location,vect(0,0,0),'Exploded');
Destroy();
}

//Pawns
if ((other.IsA('ScriptedPawn')))
{
P.binvincible=false;
P.TakeDamage(5000,P,P.Location,vect(0,0,0),'Exploded');
Destroy();
}

//Deco
if ((other.IsA('Decoration')))
{
Deco.bInvincible=False;
Deco.TakeDamage(5000,P,P.Location,vect(0,0,0),'Exploded');
Destroy();
}




SkullballMP2.uc (extends ThrownProjectile)

var bool bDoomedToDestroy;
var bool bAlreadyScored;
bDisabled=True
bExplodes=False
bBlood=False
bEmitDanger=False
bIgnoresNanoDefense=True
ItemName="Skull ball"
LifeSpan=0.000000
bDirectional=False
Mesh=LodMesh'DeusExDeco.BoneSkull'
CollisionRadius=10.000000
CollisionHeight=10.000000
bBlockActors=True
bBlockPlayers=True
Mass=8.000000
Buoyancy=10.000000

BeginPlay


Super.BeginPlay();

Explode (vector HitLocation, vector HitNormal)


return;

Frob (Actor Frobber, Inventory frobWith)


local SkullballMP4Player2 FLB4P;

if (!bDoomedToDestroy)
{
FLB4P = Spawn(Class'SkullballMP4Player2',Frobber,,Location,Rotation);
DeusExPlayer(Frobber).FrobTarget = FLB4P;
DeusExPlayer(Frobber).GrabDecoration();
Super.Frob(Frobber, frobWith);
Destroy();
}
else
{
return;
}

HitWall (vector HitNormal, actor HitWall)


local float speed;


Velocity = 0.8*((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity);
speed = VSize(Velocity);
bFixedRotationDir = True;
RotationRate = RotRand(False);
if ((speed > 0) && (speed < 30) && (HitNormal.Z > 0.7))
{
SetPhysics(PHYS_None, HitWall);
if (Physics == PHYS_None)
bFixedRotationDir = False;
}

if (HitWall.IsA('Mover'))
{
HitWall.TakeDamage(speed/58, Pawn(Owner), HitWall.Location, MomentumTransfer*Normal(Velocity), 'Shot');
}

else if (speed > 30)
{
if ((FRand() >= 0.75) && (FRand() < 1.0))
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
else if ((FRand() >= 0.5) && (FRand() < 0.75))
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
else
{
PlaySound(sound'BasketballBounce', SLOT_None, 3);
}
}

TakeDamage (int Damage, Pawn instigatedBy, Vector HitLocation, Vector Momentum, name damageType)


return;

Tick (float deltaTime)


return;

Timer


if (bDoomedToDestroy)
{
Destroy();
}
return;




SkullballMP4Player.uc (extends DeusExDecoration)

bInvincible=True
ItemName="Skull"
Mesh=LodMesh'DeusExDeco.BoneSkull'
DrawScale=0.600000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBounce=True
Mass=8.000000
Buoyancy=10.000000

BaseChange


local SkullballMP AdvB;

if (bWasCarried)
{
AdvB = Spawn(Class'SkullBallMP',Owner,,Location,Rotation);
AdvB.Velocity = Velocity + 0.7 * Owner.Velocity;
Destroy();
}

bump (actor other)


local DeusExMover move;
local Weapon wep;
local ScriptedPawn P;
local DeusExDecoration Deco;
local DeusExPlayer Player;
local Basketball bask;

P = ScriptedPawn(other);
Move = DeusExMover(other);
Wep = Weapon(other);
Player = DeusExPlayer(other);
Deco = DeusExDecoration(other);
Bask = Basketball(other);

//Players
if((other.IsA('DeusExPlayer')))
{
Player.ReducedDamageType = '';
Player.TakeDamage(5000,Player,Player.Location,vect(0,0,0),'Exploded');
Destroy();
}

//Pawns
if ((other.IsA('ScriptedPawn')))
{
P.binvincible=false;
P.TakeDamage(5000,P,P.Location,vect(0,0,0),'Exploded');
Destroy();
}

//Deco
if ((other.IsA('Decoration')))
{
Deco.TakeDamage(5000,P,P.Location,vect(0,0,0),'Exploded');
Destroy();
}




SkullballMP4Player2.uc (extends DeusExDecoration)

bInvincible=True
ItemName="Skull"
Mesh=LodMesh'DeusExDeco.BoneSkull'
DrawScale=0.600000
CollisionRadius=10.000000
CollisionHeight=10.000000
bBounce=True
Mass=8.000000
Buoyancy=10.000000

BaseChange


local SkullballMP2 AdvB;

if (bWasCarried)
{
AdvB = Spawn(Class'SkullBallMP2',Owner,,Location,Rotation);
AdvB.Velocity = Velocity + 0.7 * Owner.Velocity;
Destroy();
}




SmokeCloud.uc (extends Cloud)

DamageType=TearGas
Damage=0.500000
bBlockSight=True
bDetectable=False
Texture=FireTexture'Effects.Smoke.SmokePuff1'

Tick (float deltaTime)


//override this function to avoid having the drawscale changed




SmokeGrenade.uc (extends ThrownProjectile)

var ParticleGenerator smokeGen;
fuseLength=1.000000
proxRadius=128.000000
AISoundLevel=0.000000
bBlood=False
bDebris=False
DamageType=TearGas
spawnWeaponClass=Class'PartyStuff.WeaponSmokeGrenade'
ItemName="Gas Grenade"
speed=1000.000000
MaxSpeed=1000.000000
Damage=10.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.GasGrenadeExplode'
LifeSpan=0.000000
Mesh=LodMesh'DeusExItems.GasGrenadePickup'
CollisionRadius=4.300000
CollisionHeight=1.400000
Mass=5.000000
Buoyancy=2.000000

PostBeginPlay


Super.PostBeginPlay();

if (Level.NetMode == NM_DedicatedServer)
return;

if(!bProximityTriggered)
SpawnSmokeEffects();

SpawnSmokeEffects


smokeGen = Spawn(class'ParticleGenerator', Self);
if (smokeGen != None)
{
smokeGen.RemoteRole = ROLE_None;
smokeGen.particleTexture = Texture'Effects.Smoke.SmokePuff1';
smokeGen.particleDrawScale = 2.0;
smokeGen.checkTime = 0.02;
smokeGen.riseRate = 8.0;
smokeGen.ejectSpeed = 5.0;
smokeGen.particleLifeSpan = 4.0;
smokeGen.bRandomEject = True;
smokeGen.SetBase(Self);
}

SpawnTearGas


local Vector loc;
local SmokeCloud gas;
local int i;


if ( Role < ROLE_Authority )
return;

smokeGen.Destroy();

for (i=0; i {
if (FRand() < 0.9)
{
loc = Location;
loc.X += FRand() * blastRadius - blastRadius * 0.5;
loc.Y += FRand() * blastRadius - blastRadius * 0.5;
loc.Z += FRand() * blastRadius/36;
gas = spawn(class'SmokeCloud', None,, loc);
if (gas != None)
{
gas.Velocity = vect(0,0,0);
gas.Acceleration = vect(0,0,0);
gas.DrawScale = FRand() * 3.0 + 7.0;
gas.LifeSpan = FRand() * 10 + 30;
//gas.Texture=Texture'Effects.Smoke.SmokePuff1';
if ( Level.NetMode != NM_Standalone )
gas.bFloating = False;
else
gas.bFloating = True;
gas.Instigator = Instigator;
}
}
}

Tick (float deltatime)


super.Tick(deltatime);

if(bProximityTriggered)
smokeGen.Destroy();





SpazmGas.uc (extends Cloud)

Var() float SpazDelay;
DamageType=Stunned
Damage=0.000000
Sprite=WetTexture'Effects.Smoke.Gas_Poison_A'
Texture=WetTexture'Effects.Smoke.Gas_Poison_A'
Skin=WetTexture'Effects.Smoke.Gas_Poison_A'

Tick (float Deltatime)


local Float SpazTime;
local DeusExPlayer Victim;
local DeusExPlayer POwner;
Local ScriptedPawn P;


Super.Tick(Deltatime);

SpazTime=DeltaTime;

If(SpazTime>SpazDelay)
{
POwner=DeusExPlayer(Owner);

ForEach RadiusActors(class'DeusExPlayer',Victim,128,Self.Location)
{
if(Victim!=POwner&&Victim.IsInState('PlayerWalking'))
{
Victim.GoToState('FeigningDeath'); // Make the player collapse on the floor XD
Victim.InHand=None;
}
}
ForEach RadiusActors(class'ScriptedPawn',P,128,Self.location)
{
if(!P.IsA('Robot')&&!P.IsA('Animal')) // If this pawn isn't a robot...
{
P.GoToState('Stunned'); // Stun them directly, without damage. (Some are invunerable to stunning via damage)
}
}
SpazTime=0.0;
}




SphereEffectXL.uc (extends Effects)

DrawType=DT_Mesh
Style=STY_Translucent
Mesh=LodMesh'DeusExItems.SphereEffect'
DrawScale=15.000000
bUnlit=True



SprayPaint.uc (extends DeusExAmmo)

bShowInfo=True
AmmoAmount=800
MaxAmmo=800
ItemName="Spray Paint"
ItemArticle="some"
PickupViewMesh=LodMesh'DeusExItems.AmmoPepper'
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconAmmoPepper'
largeIconWidth=19
largeIconHeight=45
Description="'ANTIGONE pepper spray will incapacitate your attacker in UNDER TWO SECONDS. ANTIGONE -- better BLIND than DEAD. NOTE: Keep away from children under the age of five. Contents under pressure.'"
beltDescription="SPRAY"
Mesh=LodMesh'DeusExItems.AmmoPepper'
CollisionRadius=1.440000
CollisionHeight=3.260000
bCollideActors=True



SprayPaintBlue.uc (extends SprayPaint)

ItemName="Blue Spray Paint"



SprayPaintPink.uc (extends SprayPaint)

ItemName="Pink Spray Paint"



SprayPaintRed.uc (extends SprayPaint)

ItemName="Red Spray Paint"



SprayPaintYellow.uc (extends SprayPaint)

ItemName="Yellow Spray Paint"



StaffCard.uc (extends DeusExPickup)

bCanHaveMultipleCopies=True
ItemName="Staff Card"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Credits'
PickupViewMesh=LodMesh'DeusExItems.Credits'
ThirdPersonMesh=LodMesh'DeusExItems.Credits'
LandSound=Sound'DeusExSounds.Generic.PlasticHit1'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="Staff Pass"
Mesh=LodMesh'DeusExItems.Credits'
MultiSkins(0)=Texture'DeusExUI.UserInterface.ComputerLogonLogoArea51'
CollisionRadius=7.000000
CollisionHeight=0.550000
Mass=2.000000
Buoyancy=3.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




StatueBird.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Stone Bird"
Mesh=LodMesh'DeusExCharacters.Seagull'
DrawScale=5.000000
MultiSkins(0)=Texture'CoreTexStone.Stone.ClenGrenSlate_A'
CollisionRadius=30.000000
CollisionHeight=32.000000
Mass=50.000000
Buoyancy=30.000000



StatueCat.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Stone Cat"
Mesh=LodMesh'DeusExCharacters.Cat'
DrawScale=3.000000
MultiSkins(0)=Texture'CoreTexStone.Stone.ClenGrenSlate_A'
CollisionRadius=33.000000
CollisionHeight=40.000000
Mass=50.000000
Buoyancy=30.000000



StatueGreasel.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Stone Greasel"
Mesh=LodMesh'DeusExCharacters.Greasel'
DrawScale=2.000000
MultiSkins(0)=Texture'CoreTexStone.Stone.ClenGrenSlate_A'
CollisionRadius=30.000000
CollisionHeight=36.000000
Mass=50.000000
Buoyancy=30.000000



StatueKarkian.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Stone Karkian"
Mesh=LodMesh'DeusExCharacters.Karkian'
MultiSkins(0)=Texture'CoreTexStone.Stone.ClenGrenSlate_A'
CollisionRadius=54.000000
CollisionHeight=37.000000
Mass=50.000000
Buoyancy=30.000000



StatueMutt.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Stone Mutt"
Mesh=LodMesh'DeusExCharacters.Mutt'
DrawScale=2.000000
MultiSkins(0)=Texture'CoreTexStone.Stone.ClenGrenSlate_A'
CollisionRadius=50.000000
CollisionHeight=52.000000
Mass=50.000000
Buoyancy=30.000000



StrobeLamp.uc (extends Lamp)

bInvincible=True
ItemName="Strobe Lamp"
Mesh=LodMesh'DeusExDeco.Lamp2'
CollisionRadius=15.000000
CollisionHeight=47.000000
LightSaturation=0
LightRadius=18

Frob (Actor Frobber, Inventory frobWith)


local int Random;

Super.Frob(Frobber, frobWith);

if (bOn)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
}
else
{
LightType=LT_None;
}

tick (float v)


local int random;

random = Rand(255);
if(bOn)
{
LightHue = random;
if(LightType != LT_Steady)
{
LightType=LT_Steady;
LightEffect=LE_NonIncidence;
}
}




SuperCleanerBot.uc (extends Robot)

var float blotchTimer;
var float fleePawnTimer;
var ECleanDirection minorDir;
var ECleanDirection majorDir;
EMPHitPoints=20
WalkingSpeed=0.200000
GroundSpeed=300.000000
WaterSpeed=50.000000
AirSpeed=144.000000
AccelRate=500.000000
Health=20
UnderWaterTime=20.000000
Mesh=LodMesh'DeusExCharacters.CleanerBot'
SoundRadius=16
SoundVolume=128
AmbientSound=Sound'DeusExSounds.Robot.CleanerBotMove'
CollisionRadius=18.000000
CollisionHeight=11.210000
Mass=70.000000
Buoyancy=97.000000
RotationRate=(Yaw=100000)
BindName="Super CleanerBot"
FamiliarName="Super Cleaner Bot"
UnfamiliarName="Super Cleaner Bot"

BeginState


Super.BeginState();

Bump (actor bumper)


if (bAcceptBump)
{
// If we get bumped by another actor while we wait, start wandering again
bAcceptBump = False;
Disable('AnimEnd');
GotoState('Wandering', 'Wander');
}

// Handle conversations, if need be
Global.Bump(bumper);

EndState


Super.EndState();

FleeFromPawn (Pawn fleePawn)


SetEnemy(fleePawn, , true);
GotoState('AvoidingPawn');

FrightenedByPawn -> Pawn


local pawn candidate;
local bool bCheck;
local Pawn fearPawn;


fearPawn = None;
if (!bBlockActors && !bBlockPlayers)
return fearPawn;

foreach RadiusActors(Class'Pawn', candidate, 500)
{
bCheck = false;
if (!ClassIsChildOf(candidate.Class, Class))
{
if (candidate.bBlockActors)
{
if (bBlockActors && !candidate.bIsPlayer)
bCheck = true;
else if (bBlockPlayers && candidate.bIsPlayer)
bCheck = true;
}
}

if (bCheck)
{
if ((candidate.MaxStepHeight < CollisionHeight*1.5) && (candidate.CollisionHeight*0.5 <= CollisionHeight))
bCheck = false;
}

if (bCheck)
{
if (ShouldBeStartled(candidate))
{
fearPawn = candidate;
break;
}
}
}

return fearPawn;

Frob (Actor Frobber, Inventory frobWith)


local string resoWut;
local int r;
local DeusExPlayer P;
local SuperCleanerBotItem h;

Destroy();
h=Spawn(class'SuperCleanerBotItem', Self,, Location, Rotation);
h.Frob(DeusExPlayer(Frobber),None);
h.bInObjectBelt = True;
h.Destroy();

GetReverseDirection (ECleanDirection cleanDir) -> ECleanDirection


if (cleanDir == CLEANDIR_North)
cleanDir = CLEANDIR_South;
else if (cleanDir == CLEANDIR_South)
cleanDir = CLEANDIR_North;
else if (cleanDir == CLEANDIR_East)
cleanDir = CLEANDIR_West;
else if (cleanDir == CLEANDIR_West)
cleanDir = CLEANDIR_East;

return (cleanDir);

HitWall (vector HitNormal, actor Wall)


if (Physics == PHYS_Falling)
return;
Global.HitWall(HitNormal, Wall);
CheckOpenDoor(HitNormal, Wall);

PickDestination


local Rotator rot;
local float minorMagnitude, majorMagnitude;
local float minDist;


MoveTarget = None;
destPoint = None;

minorMagnitude = 256;
majorMagnitude = CollisionRadius*2;
minDist = 24;

rot = RotationDir(minorDir);
if (!AIDirectionReachable(Location, rot.Yaw, rot.Pitch,
minDist, minorMagnitude, destLoc))
{
minorDir = GetReverseDirection(minorDir);
rot = RotationDir(majorDir);
if (!AIDirectionReachable(Location, rot.Yaw, rot.Pitch,
minDist, majorMagnitude, destLoc))
{
majorDir = GetReverseDirection(majorDir);
rot = RotationDir(minorDir);
if (!AIDirectionReachable(Location, rot.Yaw, rot.Pitch,
minDist, minorMagnitude, destLoc))
{
minorDir = GetReverseDirection(minorDir);
rot = RotationDir(majorDir);
if (!AIDirectionReachable(Location, rot.Yaw, rot.Pitch,
minDist, majorMagnitude, destLoc))
{
majorDir = GetReverseDirection(majorDir);
destLoc = Location; // give up
}
}
}
}

RotationDir (ECleanDirection cleanDir) -> rotator


local rotator rot;


rot = rot(0,0,0);
if (cleanDir == CLEANDIR_North)
rot.Yaw = 0;
else if (cleanDir == CLEANDIR_South)
rot.Yaw = 32768;
else if (cleanDir == CLEANDIR_East)
rot.Yaw = 16384;
else if (cleanDir == CLEANDIR_West)
rot.Yaw = 49152;

return (rot);

SetFall


StartFalling('Wandering', 'ContinueWander');

ShouldBeStartled (Pawn startler) -> bool


local float speed;
local float time;
local float dist;
local float dist2;
local bool bPh33r;


bPh33r = false;
if (IsValidEnemy(startler, False))
{
speed = VSize(startler.Velocity);
if (speed >= 20)
{
dist = VSize(Location - startler.Location);
time = dist/speed;
if (time <= 2.0)
{
dist2 = VSize(Location - (startler.Location+startler.Velocity*time));
if (dist2 < speed*0.8)
bPh33r = true;
}
}
}

return bPh33r;

Tick (float deltaSeconds)


local pawn fearPawn;
local DeusExDecal blotch;
local float deltaXY, deltaZ;
local Inventory inv;


Super.Tick(deltaSeconds);

fleePawnTimer += deltaSeconds;
if (fleePawnTimer > 0.5)
{
fleePawnTimer = 0;
fearPawn = FrightenedByPawn();
if (fearPawn != None)
FleeFromPawn(fearPawn);
}

blotchTimer += deltaSeconds;
if (blotchTimer > 0.3)
{
blotchTimer = 0;

foreach RadiusActors(Class'Inventory', inv, CollisionRadius*2)
{
inv.Lifespan=1;
}
}




SuperCleanerBotItem.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="Box readiness:"
ItemName="Super Cleaner Bot Spawner"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Charge=8
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconVialAmbrosia'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="CLEANER"
Mesh=LodMesh'DeusExItems.VialAmbrosia'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local Vector loc,X,Y,Z;
local SuperCleanerBot SCB;

// local HideyBox CD;

SCB = Spawn(Class'SuperCleanerBot',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );
if(SCB == None)
{
DeusexPlayer(Owner).ClientMessage("Error placing item..");
return;
}

Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




SurfKnives.uc (extends Shuriken)

ItemName="a"
ItemArticle="surf knife"

Tick (float DeltaTime)


Super.Tick(DeltaTime);
Owner.SetLocation(Location);




SurfRocket.uc (extends Rocket)

ItemName="bombing"
ItemArticle="suicide"

Tick (float DeltaTime)


Super.Tick(DeltaTime);
Owner.SetLocation(Location);




TCAutoTimeTrigger.uc (extends Actor)

var() float TCDelay;
var() name Events[10];
bHidden=True

PostBeginPlay


SetTimer(TCDelay,True);

Timer


local mover a;
local int j;


for(j=0;j<10;j++)
{
if(Events[j] != '')
{
foreach AllActors( class 'mover', A)
{
for(j=0;j<10;j++)
{
if(A.Tag == Events[j])
A.Trigger( Self, None );
}
}
}
}




TCBarkActor.uc (extends PGActors)

var PlayerPawn Flagger;
var string sMessage;
var float fDelay;
var DXScriptedPawn pSender;
LifeSpan=1.000000
NetPriority=1.500000

cBark (string BarkMessage, float Delay, DXScriptedPawn BotSender)


local DeusExPlayer _Player;
local DeusExRootWindow _root;

_Player = DeusExPlayer(Owner);

if(_Player != None)
{
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_root.hud.barkdisplay.addBark(BarkMessage, Delay, BotSender);
}
}

timer


SetOwner(flagger);
cBark(sMessage, fDelay, pSender);




TCRadio.uc (extends DeusExWeapon)

var int PlaySlot;
var() music myTrackList[10];
var() EMusicTransition Transition;
var() byte SongSection;
var() byte CdTrack;
var() name Inheriter;
var int Max;
Transition=MTRAN_Fade
CdTrack=255
LowAmmoWaterMark=0
NoiseLevel=1.800000
ShotTime=1.000000
reloadTime=0.030000
HitDamage=0
maxRange=48000
AccurateRange=12000
BaseAccuracy=0.000000
bHasScope=True
bHasMuzzleFlash=False
ReloadCount=0
bInstantHit=True
InventoryGroup=208
ItemName="Radio Player"
PlayerViewOffset=(X=20.000000,Y=10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.MultitoolPOV'
PickupViewMesh=LodMesh'DeusExItems.Multitool'
ThirdPersonMesh=LodMesh'DeusExItems.Multitool3rd'
LandSound=Sound'DeusExSounds.Generic.PlasticHit2'
Icon=Texture'DeusExUI.Icons.BeltIconMultitool'
largeIcon=Texture'DeusExUI.Icons.LargeIconMultitool'
largeIconWidth=28
largeIconHeight=46
beltDescription="RADIO"
Mesh=LodMesh'DeusExItems.Multitool'
CollisionRadius=4.800000
CollisionHeight=0.860000
Mass=20.000000
Buoyancy=10.000000

ActivateMusicBotScreen (DeusExPlayer player2)


local DeusExRootWindow root;
local MusicBotWindow winMusic;


player2.InitRootWindow();
root = DeusExRootWindow(player2.rootWindow);
if (root != None)
{
winMusic = MusicBotWindow(root.InvokeUIScreen(Class'MusicBotWindow', True));
}

BecomePickup


Super(Inventory).BecomePickup();
lifespan=0;
SetDisplayProperties(Default.Style, Default.Texture, Default.bUnlit, Default.bMeshEnviromap );

BeginPlay


local MusicPoint MPP;
local int j;

PlaySlot = 0;
if(myTrackList[0] == None)
{
Inherit();
}

for(j=0;j<10;j++)
{
if(myTrackList[j] == None)
Max = j;
return;
}

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

CycleAmmo


ToggleMusicLock(DeusExPlayer(Owner));

Inherit


local MusicPoint MPP;
local int j;


Log("Radio probably summoned? Getting inheritance from a Music Point.");
foreach allactors(class'MusicPoint',MPP)
{
if(MPP != None) //First one we found.
{
for(j=0;j<10;j++)
{
myTrackList[j] = mpp.myTrackList[j];
}
return;
}
}

LaserToggle


local DeusExPlayer P;

P = DeusExPlayer(Owner);
if( P==None )
return;

ActivateMusicBotScreen(p);

MMLocked (DeusExPlayer Them) -> bool


local MusicMemory MM;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
return MM.bMMLocked;
}
}

MemorizeMusic (music This, DeusExPlayer Them)


local MusicMemory MM;
local bool bFound;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
bFound=True;
MM.CurrentSong = This;
//Log("Track memorized."@This@them.playerreplicationinfo.playername);
Them.ClientSetMusic( This, SongSection, CdTrack, Transition );
}
}
if(!bFound)
{
MM = Spawn(class'MusicMemory');
MM.Watcher=Them;
Log("New music memory."@This@them.playerreplicationinfo.playername);
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


if(Other.isa('DeusExPlayer'))
{
if(!mmIsPlaying( myTrackList[PlaySlot], DeusExPlayer(Other)) && !mmLocked(DeusExPlayer(Other)))
{
MemorizeMusic(myTrackList[PlaySlot], DeusExPlayer(Other));
//DeusExPlayer(Other).ClientSetMusic( myTrackList[PlaySlot], SongSection, CdTrack, Transition );
DeusExPlayer(Other).ClientMessage("RADIO: Now playing track: "$Left(string(myTrackList[PlaySlot]), InStr(string(myTrackList[PlaySlot]), ".")));
DeusExPlayer(Owner).ClientMessage(Left(string(myTrackList[PlaySlot]), InStr(string(myTrackList[PlaySlot]), "."))$" sent to "$DeusExPlayer(Other).PlayerReplicationInfo.PlayerName);
}
}

ScopeToggle


local DeusExPlayer P;

P = DeusExPlayer(Owner);
if( P==None )
return;
PlaySlot++;
if(myTrackList[PlaySlot] == None || PlaySlot > Arraycount(myTrackList))
{
//P.ClientMessage("No more songs.");
PlaySlot = 0;
}
// Go to music.
//P.ClientSetMusic( myTrackList[PlaySlot], SongSection, CdTrack, Transition );
if(!mmIsPlaying( myTrackList[PlaySlot], P))
MemorizeMusic(myTrackList[PlaySlot], P);
P.ClientMessage("Now playing track: "$Left(string(myTrackList[PlaySlot]), InStr(string(myTrackList[PlaySlot]), ".")));
return;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

ToggleMusicLock (DeusExPlayer Them)


local MusicMemory MM;
local bool bFound;

foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
bFound=True;
MM.bMMLocked = !MM.bMMLocked;
Them.ClientMessage("Music lock status:"@MM.bMMLocked);
}
}
if(!bFound)
{
MM = Spawn(class'MusicMemory');
MM.Watcher=Them;
Log("New music memory."@them.playerreplicationinfo.playername);
}

mmIsPlaying (music This, DeusExPlayer Them) -> bool


local MusicMemory MM;
local bool bFound;


foreach AllActors(class'MusicMemory', MM)
{
if(MM.Watcher == Them)
{
bFound=True;
if(MM.CurrentSong == This)
return true;
}
}

if(!bFound)
{
MM = Spawn(class'MusicMemory');
MM.Watcher=Them;
Log("New music memory."@This@them.playerreplicationinfo.playername);
}




TCT.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="tCT readiness:"
ItemName="Temporary Chain Teleporter Spawner"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Charge=8
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconVialAmbrosia'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="CHAIN"
Mesh=LodMesh'DeusExItems.VialAmbrosia'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local chainTeleporter CD;
local Vector loc,X,Y,Z;


CD = Spawn(Class'ChainTeleporter',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );
CD.ReturnToPlayer = Player;
CD.ChainNum = -1;
Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




TLItem.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="TL readiness:"
ItemName="Travel Bomber Spawner"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Charge=8
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconVialAmbrosia'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="TRAVEL"
Mesh=LodMesh'DeusExItems.VialAmbrosia'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local TLauncher CD;
local Vector loc,X,Y,Z;


CD = Spawn(Class'TLauncher',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );
CD.TM=T_Companion;
Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) || (BeltSpot == 0) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




TLauncher.uc (extends DeusExDecoration)

var config TMode TM;
var bool bCooldown;
var() float Cooldown;
var float LastLaunchTime;
Cooldown=10.000000
bInvincible=True
ItemName="Travel Bomber"
bPushable=False
Physics=PHYS_None
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4'
Skin=Texture'DeusExDeco.Skins.AlarmLightTex6'
DrawScale=1.500000
CollisionRadius=45.200001
CollisionHeight=32.000000
bBlockPlayers=False
LightType=LT_Steady
LightBrightness=120
LightHue=70
LightSaturation=100
LightRadius=10

Cooled -> bool


return (Level.TimeSeconds - lastLaunchTime > Cooldown);

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer P;
local TRocket TR;
local TLItem h;
local rotator Z2F;

P=DeusExPlayer(Frobber);

if(DeusExPlayer(Frobber).bIsCrouching && P.bAdmin)
{
if(TM==T_Normal)
{
TM=T_Companion;
P.ClientMessage("Companion Mode; Launcher will follow you when you warp.");
return;
}
else if(TM==T_Companion)
{
TM=T_Pickup;
P.ClientMessage("Pickup Mode; Launcher will be collected.");
return;
}
else if(TM==T_Pickup)
{
TM=T_Normal;
P.ClientMessage("Normal Mode; Static placement.");
return;
}
}

if(TM==T_Pickup)
{
Destroy();
SilentAdd(class'TLItem', P);
return;
}
else
{
if(Cooled())
{
Z2F=P.Rotation;
TR = Spawn(class'TRocket',,,Location + (CollisionRadius + TR.Default.CollisionRadius + 30) * vector(Rotation) * BaseEyeHeight,Z2F);
TR.SetOwner(P);
P.UnderWaterTime = -1.0;
P.bHidden=True;
P.SetCollision(false, false, false);
P.bCollideWorld = true;
P.GotoState('PlayerWalking');
LastLaunchTime = Level.TimeSeconds;
if(TM==T_Normal)
{
bCooldown=True;
Texture=Texture'DeusExDeco.Skins.AlarmLightTex2';
LightHue=0;
SetTimer(Cooldown,false);
}
if(TM==T_Companion)
{
TR.bCompanion=True;
Destroy();
}
}
else
{
P.ClientMessage("Launcher is cooling down, please wait "$int(Cooldown - (Level.TimeSeconds - lastLaunchTime))$" seconds.");
}
}


SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass);
anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);

Timer


bCooldown=False;
Texture=Texture'DeusExDeco.Skins.AlarmLightTex4';
LightHue=70;




TRocket.uc (extends Rocket)

var AugmentationDisplayWindow win;
var gc gc;
var bowenviewportwindow vpw;
var bool bExploded, bDoneWin;
var rotator NewRotation;
var vector NewVelocity, NewLocation;
var bool bCompanion;
var(Bowen) sound LockedSound;
LockedSound=Sound'DeusExSounds.Generic.Beep4'
mpBlastRadius=5.000000
blastRadius=5.000000
ItemName="Travel Bomb"
Damage=0.000000
SpawnSound=Sound'DeusExSounds.UserInterface.DataLinkStart'
ImpactSound=Sound'DeusExSounds.Weapons.EMPGrenadeExplode'
ExplosionDecal=Class'DeusEx.BurnMark'
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex2'
DrawScale=1.000000
bAlwaysRelevant=True
NetPriority=3.000000

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ShockRing ring;
local SphereEffect sphere;
local ExplosionLight light;
local AnimatedSprite expeffect;


// draw a pretty shock ring
// For nano defense we are doing something else.
if ((!bAggressiveExploded) || (Level.NetMode == NM_Standalone))
{
if(!bNetOwner)
{
ring = Spawn(class'ShockRing',,, HitLocation, rot(16384,0,0));
if (ring != None)
{
ring.RemoteRole = ROLE_None;
ring.size = blastRadius / 32.0;
}
ring = Spawn(class'ShockRing',,, HitLocation, rot(0,0,0));
if (ring != None)
{
ring.RemoteRole = ROLE_None;
ring.size = blastRadius / 32.0;
}
ring = Spawn(class'ShockRing',,, HitLocation, rot(0,16384,0));
if (ring != None)
{
ring.RemoteRole = ROLE_None;
ring.size = blastRadius / 32.0;
}
}
}
else
{
sphere = Spawn(class'SphereEffect',,, HitLocation, rot(16384,0,0));
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastRadius / 32.0;
}
sphere = Spawn(class'SphereEffect',,, HitLocation, rot(0,0,0));
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastRadius / 32.0;
}
sphere = Spawn(class'SphereEffect',,, HitLocation, rot(0,16384,0));
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastRadius / 32.0;
}
}

HitWall (vector HitLocation, Actor Wall)


if (vpw != None)
vpw.Destroy();
if (FireGen != None)
FireGen.Destroy();
if (SmokeGen != None)
SmokeGen.Destroy();
Super.HitWall (HitLocation, Wall);

Tick (float deltaTime)


local SmokeTrail s;


time += DeltaTime;
DrawScale = FClamp(2.5*(time+0.5), 1.0, 6.0);
if ((time > FRand() * 0.02) && (Level.NetMode != NM_DedicatedServer))
{
time = 0;

// spawn some trails
s = Spawn(class'SmokeTrail',,, Location);
if (s != None)
{
s.DrawScale = FRand() * 0.333;
s.OrigScale = s.DrawScale;
s.Texture = Texture'AlarmLightTex2';
s.Velocity = VRand() * 50;
s.OrigVel = s.Velocity;
}
}

destroyed


local TLauncher TL;
local TLItem h;

DeusExPlayer(Owner).SetLocation(Location);
DeusExPlayer(Owner).UnderWaterTime = DeusExPlayer(Owner).Default.UnderWaterTime;
DeusExPlayer(Owner).SetCollision(true, true , true);
DeusExPlayer(Owner).SetPhysics(PHYS_Walking);
DeusExPlayer(Owner).bCollideWorld = true;
DeusExPlayer(Owner).bHidden=False;
DeusExPlayer(Owner).GotoState('PlayerWalking');
DeusExPlayer(Owner).ClientReStart();
if(bCompanion)
{
h=Spawn(class'TLItem', Self,, Location, Rotation);
h.Frob(DeusExPlayer(Owner),None);
h.bInObjectBelt = True;
h.Destroy();
}
bExploded = True;
if (vpw != None)
vpw.Destroy();
Super.Destroyed();

setdirection


NewRotation = (PlayerPawn(Owner).ViewRotation);
NewVelocity = normal(vector(NewRotation))*speed;
NewLocation = Location;
//log("rotation to set (nikita) = " @ NewRotation);

tick (float deltatime)


if(Role == ROLE_Authority || bNetOwner) //dont do this on clients that didnt fire the rocket
{
if(!bExploded)
{
if (bNetOwner)
{
if (FireGen != None)
FireGen.Destroy();
if (SmokeGen != None)
SmokeGen.LifeSpan = 5;
bDebris = False;
}
MakeWindow();
SetDirection();
SetRotation(NewRotation);
Velocity = NewVelocity;
//log("Nikita ticked");
}
}
if(Role < ROLE_Authority && !bNetOwner)
{
SetRotation(NewRotation);
Velocity = NewVelocity;
SetLocation(NewLocation);
SmokeGen.SetLocation(NewLocation);
FireGen.SetLocation(NewLocation);
//log("Nikita ticked on observing client, new rotation is: " @ NewRotation);
}
//log("Role = " @ Role @ ", bNetOwner = " @ bNetOwner);
Super.tick(DeltaTime);




TempTurret.uc (extends DeusExDecoration)

var bool bDisb;
var() int TurretHealth;
var() string PTurretTeam;
var() deusexplayer Master;
var AutoTurretGun gun;
var() localized String titleString; // So we can name specific turrets in multiplayer
var() bool bTrackPawnsOnly;
var() bool bTrackPlayersOnly;
var() bool bActive;
var() int maxRange;
var() float fireRate;
var() float gunAccuracy;
var() int gunDamage;
var() int ammoAmount;
var Actor curTarget;
var Actor prevTarget; // target we had last tick.
var Pawn safeTarget; // in multiplayer, this actor is strictly off-limits
var float fireTimer;
var bool bConfused; // used when hit by EMP
var float confusionTimer; // how long until turret resumes normal operation
var float confusionDuration; // how long does an EMP hit last?
var Actor LastTarget; // what was our last target?
var float pitchLimit; // what's the maximum pitch?
var Rotator origRot; // original rotation
var bool bPreAlarmActiveState; // was I previously awake or not?
var bool bDisabled; // have I been hacked or shut down by computers?
var float TargetRefreshTime; // used for multiplayer to reduce rate of checking for targets.
var() float Thick;
var() float PawnThick;
var() int team; // Keep track of team the turrets on
var int mpTurretDamage; // Settings for multiplayer
var int mpTurretRange;
var bool bComputerReset; // Keep track of if computer has been reset so we avoid all actors checks
var bool bSwitching;
var float SwitchTime, beepTime;
var Pawn savedTarget;
var int TE;
TurretHealth=100
PTurretTeam="DEFAULT"
titleString="AutoTurret"
bTrackPlayersOnly=True
bActive=True
maxRange=512
fireRate=0.250000
gunAccuracy=0.500000
gunDamage=5
AmmoAmount=1000
confusionDuration=120.000000
pitchLimit=11000.000000
Team=500
mpTurretDamage=20
mpTurretRange=1024
HitPoints=100
minDamageThreshold=100
bHighlight=False
ItemName="Turret Base"
bPushable=False
Mesh=LodMesh'DeusExDeco.AutoTurretBase'
SoundRadius=48
SoundVolume=192
AmbientSound=Sound'DeusExSounds.Generic.AutoTurretHum'
CollisionRadius=14.000000
CollisionHeight=20.200001
Mass=50.000000
Buoyancy=10.000000
bVisionImportant=True

AcquireMultiplayerTarget -> Actor


local Pawn apawn;
local DeusExPlayer aplayer;
local Vector dist;
local Actor noActor;


if ( bSwitching )
{
noActor = None;
return noActor;
}

apawn = gun.Level.PawnList;

while ( apawn != None )
{
//if (apawn.bDetectable && !apawn.bIgnore && apawn.IsA('DeusExPlayer'))
if (apawn.bDetectable && !apawn.bIgnore)
{
aplayer = DeusExPlayer(apawn);

dist = apawn.Location - gun.Location; //apawn was aplayer

if ( VSize(dist) < maxRange )
{
// Only players we can see
if ( apawn.FastTrace( apawn.Location, gun.Location ))//apawn was aplayer
{
if(!PSOwners(apawn))
{
if(curTarget == None)
{
curTarget = apawn;
break;
}
}
}
}
}
apawn = apawn.nextPawn;
}
return curtarget;

Destroyed

Fire


local Vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;
local Rotator rot;
local Actor hit;
local ShellCasing shell;
local Spark spark;
local Pawn attacker;


if (!gun.IsAnimating())
gun.LoopAnim('Fire');

// CNN - give turrets infinite ammo
// if (ammoAmount > 0)
// {
// ammoAmount--;
GetAxes(gun.Rotation, X, Y, Z);
StartTrace = gun.Location;
EndTrace = StartTrace + gunAccuracy * (FRand()-0.5)*Y*1000 + gunAccuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += 10000 * X;
hit = Trace(HitLocation, HitNormal, EndTrace, StartTrace, True);

// spawn some effects
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
shell = None;
}
else
{
shell = Spawn(class'ShellCasing',,, gun.Location);
}
if (shell != None)
shell.Velocity = Vector(gun.Rotation - rot(0,16384,0)) * 100 + VRand() * 30;

MakeNoise(1.0);
PlaySound(sound'PistolFire', SLOT_None);
AISendEvent('LoudNoise', EAITYPE_Audio);

// muzzle flash
gun.LightType = LT_Steady;
gun.MultiSkins[2] = Texture'FlatFXTex34';
SetTimer(0.1, False);

// randomly draw a tracer
if (FRand() < 0.5)
{
if (VSize(HitLocation - StartTrace) > 250)
{
rot = Rotator(EndTrace - StartTrace);
Spawn(class'Tracer',,, StartTrace + 96 * Vector(rot), rot);
}
}

if (hit != None)
{
if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
{
spark = None;
}
else
{
// spawn a little spark and make a ricochet sound if we hit something
spark = spawn(class'Spark',,,HitLocation+HitNormal, Rotator(HitNormal));
}

if (spark != None)
{
spark.DrawScale = 0.05;
PlayHitSound(spark, hit);
}

attacker = None;
if ((curTarget == hit) && !curTarget.IsA('PlayerPawn'))
attacker = GetPlayerPawn();
if (Level.NetMode != NM_Standalone)
attacker = safetarget;
if ( hit.IsA('DeusExPlayer') && ( Level.NetMode != NM_Standalone ))
DeusExPlayer(hit).myTurretKiller = Self;
hit.TakeDamage(gunDamage, attacker, HitLocation, 1000.0*X, 'AutoShot');

if (hit.IsA('Pawn') && !hit.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
else if ((hit == Level) || hit.IsA('Mover'))
SpawnEffects(HitLocation, HitNormal, hit);
}
//

Frob (Actor Frobber, Inventory frobWith)


local TurretItem h;


Gun.destroy();
Destroy();
SilentAdd(class'TurretItem', DeusExPlayer(frobber));

GetWallMaterial (vector HitLocation, vector HitNormal) -> name


local vector EndTrace, StartTrace;
local actor newtarget;
local int texFlags;
local name texName, texGroup;


StartTrace = HitLocation + HitNormal*16; // make sure we start far enough out
EndTrace = HitLocation - HitNormal;

foreach TraceTexture(class'Actor', newtarget, texName, texGroup, texFlags, StartTrace, HitNormal, EndTrace)
if ((newtarget == Level) || newtarget.IsA('Mover'))
break;

return texGroup;

PSOwners (Pawn P) -> bool


local PSTurretController PSTC;


if(DeusExPlayer(P) != None)
{
if(DeusExPlayer(P) == Master)
return True;
}

if(ScriptedPawn(P) != None)
{
if(ScriptedPawn(P).IsA('Pets') || ScriptedPawn(P).IsA('RadarDrone'))
return true;
}
return False;

PlayHitSound (actor destActor, Actor hitActor)


local float rnd;
local sound snd;


rnd = FRand();

if (rnd < 0.25)
snd = sound'Ricochet1';
else if (rnd < 0.5)
snd = sound'Ricochet2';
else if (rnd < 0.75)
snd = sound'Ricochet3';
else
snd = sound'Ricochet4';

// play a different ricochet sound if the object isn't damaged by normal bullets
if (hitActor != None)
{
if (hitActor.IsA('DeusExDecoration') && (DeusExDecoration(hitActor).minDamageThreshold > 10))
snd = sound'ArmorRicochet';
else if (hitActor.IsA('Robot'))
snd = sound'ArmorRicochet';
}

if (destActor != None)
destActor.PlaySound(snd, SLOT_None,,, 1024, 1.1 - 0.2*FRand());

PostBeginPlay


safeTarget = None;
prevTarget = None;
TargetRefreshTime = 0;
Super.PostBeginPlay();

PreBeginPlay


local Vector v1, v2;
local class gunClass;
local Rotator rot;


Super.PreBeginPlay();

if (IsA('AutoTurretSmall'))
gunClass = class'AutoTurretGunSmall';
else
gunClass = class'AutoTurretGun';

rot = Rotation;
rot.Pitch = 0;
rot.Roll = 0;
origRot = rot;
gun = Spawn(gunClass, Self,, Location, rot);
if (gun != None)
{
v1.X = 0;
v1.Y = 0;
v1.Z = CollisionHeight + gun.Default.CollisionHeight;
v2 = v1 >> Rotation;
v2 += Location;
gun.bHackable=False;
gun.SetLocation(v2);
gun.SetBase(Self);
}

// set up the alarm listeners
//AISetEventCallback('Alarm', 'AlarmHeard');

maxRange = mpTurretRange;
gunDamage = mpTurretDamage;
bDisabled = !bActive;

SilentAdd (class addClass, DeusExPlayer addTarget)


local Inventory anItem;


anItem = Spawn(addClass,,,addTarget.Location);
anItem.SpawnCopy(addTarget);
anItem.Destroy();
/*anItem.Instigator = addTarget;
anItem.GotoState('Idle2');
anItem.bHeldItem = true;
anItem.bTossedOut = false;

if(Weapon(anItem) != None)
Weapon(anItem).GiveAmmo(addTarget);
anItem.GiveTo(addTarget);*/

SpawnBlood (Vector HitLocation, Vector HitNormal)


local rotator rot;


rot = Rotator(Location - HitLocation);
rot.Pitch = 0;
rot.Roll = 0;

if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
return;

spawn(class'BloodSpurt',,,HitLocation+HitNormal, rot);
spawn(class'BloodDrop',,,HitLocation+HitNormal);
if (FRand() < 0.5)
spawn(class'BloodDrop',,,HitLocation+HitNormal);

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)


local SmokeTrail puff;
local int i;
local BulletHole hole;
local Rotator rot;


if ((DeusExMPGame(Level.Game) != None) && (!DeusExMPGame(Level.Game).bSpawnEffects))
return;

if (FRand() < 0.5)
{
puff = spawn(class'SmokeTrail',,,HitLocation+HitNormal, Rotator(HitNormal));
if (puff != None)
{
puff.DrawScale *= 0.3;
puff.OrigScale = puff.DrawScale;
puff.LifeSpan = 0.25;
puff.OrigLifeSpan = puff.LifeSpan;
}
}

if (!Other.IsA('BreakableGlass'))
for (i=0; i<2; i++)
if (FRand() < 0.8)
spawn(class'Rockchip',,,HitLocation+HitNormal);

hole = spawn(class'BulletHole', Other,, HitLocation, Rotator(HitNormal));

// should we crack glass?
if (GetWallMaterial(HitLocation, HitNormal) == 'Glass')
{
if (FRand() < 0.5)
hole.Texture = Texture'FlatFXTex29';
else
hole.Texture = Texture'FlatFXTex30';

hole.DrawScale = 0.1;
hole.ReattachDecal();
}

TakeDamage (int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, name DamageType)


local Human dxp;
local float mindmg;


if (DamageType == 'EMP')
{
return; //Nulled function, IMMUNE TO EMP.
}

TurretHealth -= Damage; //Edited this in to avoid some things.

if(bDisb == False)
{
if(TurretHealth <= 0)
{
return;
}
}

Tick (float deltaTime)


local Pawn pawn;
local ScriptedPawn sp;
local DeusExDecoration deco;
local float near;
local Rotator destRot;
local bool bSwitched;
local float AreWeTooFar;
local Inventory Inv;

Super.Tick(deltaTime);

/*if(Master != None)
{
AreWeTooFar = Abs(VSize(Master.Location - Location));
if(AreWeTooFar > 650)
return;
}*/

bSwitched = False;

if ( bSwitching )
{
UpdateSwitch();
return;
}



if (bActive && !bDisabled)
{

curTarget = None;

if ( !bConfused )
{
if (TargetRefreshTime < 0)
TargetRefreshTime = 0;

TargetRefreshTime = TargetRefreshTime + deltaTime;

if (TargetRefreshTime >= 0.3)
{
TargetRefreshTime = 0;
curTarget = AcquireMultiplayerTarget();

// if ( curTarget == None )
// PlaySound(Sound'TurretUnlocked', SLOT_Interact, 1.0,, maxRange );
// prevtarget = curtarget;
}

foreach gun.VisibleActors(class'Pawn', pawn, maxRange, gun.Location)
{
if (pawn.bDetectable && !pawn.bIgnore)
{
if(curTarget == None)
{
if(!PSOwners(Pawn))
{
curTarget = Pawn;
break;
}
}
}
}
}

// if we have a target, rotate to face it
if (curTarget != None)
{
destRot = Rotator(curTarget.Location - gun.Location);
gun.DesiredRotation = destRot;
near = pitchLimit / 2;
gun.DesiredRotation.Pitch = FClamp(gun.DesiredRotation.Pitch, origRot.Pitch - near, origRot.Pitch + near);
}
else
gun.DesiredRotation = origRot;
}
else
{
if ( !bConfused )
gun.DesiredRotation = origRot;
}

near = (Abs(gun.Rotation.Pitch - gun.DesiredRotation.Pitch)) % 65536;
near += (Abs(gun.Rotation.Yaw - gun.DesiredRotation.Yaw)) % 65536;

if (bActive && !bDisabled)
{
// play an alert sound and light up
if ((curTarget != None) && (curTarget != LastTarget))
PlaySound(Sound'Beep6',,,, 1280);

// if we're aiming close enough to our target
if (curTarget != None)
{
gun.MultiSkins[1] = Texture'RedLightTex';
if ((near < 4096) && (((Abs(gun.Rotation.Pitch - destRot.Pitch)) % 65536) < 8192))
{
if (fireTimer > fireRate)
{
Fire();
fireTimer = 0;
}
}
}
else
{
if (gun.IsAnimating())
gun.PlayAnim('Still', 10.0, 0.001);

if (bConfused)
gun.MultiSkins[1] = Texture'YellowLightTex';
else
gun.MultiSkins[1] = Texture'GreenLightTex';
}

fireTimer += deltaTime;
LastTarget = curTarget;
}
else
{
if (gun.IsAnimating())
gun.PlayAnim('Still', 10.0, 0.001);
gun.MultiSkins[1] = None;
}

// make noise if we're still moving
if (near > 64)
{
gun.AmbientSound = Sound'AutoTurretMove';
if (bConfused)
gun.SoundPitch = 128;
else
gun.SoundPitch = 64;
}
else
gun.AmbientSound = None;

Timer


gun.LightType = LT_None;
gun.MultiSkins[2] = None;

UpdateSwitch


if ( Level.Timeseconds > SwitchTime )
{
bSwitching = False;
//safeTarget = savedTarget;
SwitchTime = 0;
beepTime = 0;
}
else
{
if ( Level.Timeseconds > beepTime )
{
PlaySound(Sound'TurretSwitch', SLOT_Interact, 1.0,, maxRange );
beepTime = Level.Timeseconds + 0.75;
}
}




ThrownBaton.uc (extends DeusExProjectile)

bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Baton (Thrown)"
ItemArticle="a"
speed=2000.000000
Damage=85.000000
MomentumTransfer=123456
Mesh=LodMesh'DeusExItems.Baton3rd'
bUnlit=True
bFixedRotationDir=True
RotationRate=(Pitch=-149000,Yaw=0)



ThrownCombatKnife.uc (extends DeusExProjectile)

bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Knife (Thrown)"
ItemArticle="a"
speed=2000.000000
Damage=85.000000
MomentumTransfer=123456
Mesh=LodMesh'DeusExItems.CombatKnife3rd'
bUnlit=True
bFixedRotationDir=True
RotationRate=(Pitch=-149000,Yaw=0)



ThrownCrowbar.uc (extends DeusExProjectile)

bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Crowbar (Thrown)"
ItemArticle="a"
speed=2000.000000
Damage=100.000000
MomentumTransfer=123456
Mesh=LodMesh'DeusExItems.Crowbar3rd'
bUnlit=True
bFixedRotationDir=True
RotationRate=(Pitch=-149000,Yaw=0)



ThrownNanosword.uc (extends DeusExProjectile)

bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Dragon's tooth sword (Thrown)"
ItemArticle="a"
speed=2000.000000
Damage=200.000000
MomentumTransfer=123456
Mesh=LodMesh'DeusExItems.NanoSword3rd'
bUnlit=True
bFixedRotationDir=True
RotationRate=(Pitch=-149000,Yaw=0)



ThrownSword.uc (extends DeusExProjectile)

bStickToWall=True
DamageType=exploded
bIgnoresNanoDefense=True
ItemName="Sword (Thrown)"
ItemArticle="a"
speed=2000.000000
Damage=100.000000
MomentumTransfer=123456
Mesh=LodMesh'DeusExItems.Sword3rd'
bUnlit=True
bFixedRotationDir=True
RotationRate=(Pitch=-149000,Yaw=0)



ToolRadar.uc (extends DeusExDecoration)

var bool bEnabled;
var(Sounds) sound BeepActive, BeepPassive;
var bool bDebug;
var int Waittime;
var deusexplayer myOwner;
bEnabled=True
BeepActive=Sound'DeusExSounds.Generic.TurretSwitch'
bCanBeBase=True
ItemName="Radar"
Mesh=LodMesh'DeusExDeco.AcousticSensor'
CollisionRadius=24.400000
CollisionHeight=23.059999
Mass=10.000000

BlowIt


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 200;
explosionRadius = 300;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'metalFragment',,,Location);
}
HurtRadius(explosionDamage, explosionRadius, 'Exploded', explosionDamage*100, Location);
Destroy();

Bump (actor Other)

PostBeginplay


SetTimer(1,False);

Timer


local int range;
local DeusExPlayer player;
local SphereEffect SE;


range=0;
foreach RadiusActors(class'DeusExPlayer', player, 350, Location)
{
if (player != None )
range=2;
}

foreach RadiusActors(class'DeusExPlayer', player, 1000, Location)
{
if (player != None && range != 2)
range=1;
}


if(bEnabled && Range==0)
{
SetTimer(1,False);
}
if(bEnabled && Range==2)
{
PlaySound(BeepActive, SLOT_None,200,, 255);
SetTimer(0.5,False);
}
if(bEnabled && Range==1)
{
PlaySound(BeepActive, SLOT_None,200,, 255);
SetTimer(1.3,False);
}


if(bDebug)
{
BroadcastMessage("Range"@Range);
}




ToolRadarD.uc (extends DeusExWeapon)

var int Modes;
var RadarDrone LinkedDrone;
var RaidActor RA;
var bool bArmedNuclear;
var int DroneAmmo, rDroneammo;
var bool bStoredDrone;
var bool bStorageMode, bRepStorageMode;
var bool bViewing;
DroneAmmo=30
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=120000
mpMaxRange=120000
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=239
ItemName="Radar Drone Controller"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="DRONE"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

CycleAmmo


bViewing = !bViewing;

if(bViewing)
LockPlayerCam(DeusExPlayer(Owner));
else
UnLockPlayerCam(DeusExPlayer(Owner));

LockPlayerCam (deusexplayer dxp)


local RadarDrone RD;

dxp.bBehindView=True;

Foreach AllActors(class'RadarDrone',RD)
{
if(RD.myOwner == DeusExPlayer(Owner))
{

if(RD != None)
{
dxp.ViewTarget = RD;
}
}
}

PostBeginPlay


local RadarDrone DR;


foreach AllActors(class'RadarDrone', DR)
if(DR.myOwner == DeusExPlayer(Owner))
LinkedDrone = DR;

if(LinkedDrone != None)
DroneAmmo = LinkedDrone.Rocketsremain;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local RadarDrone RD;
local RocketDrone Rock;
local rotator testRot;


if(Other.isa('RadarDrone') && RadarDrone(Other).myOwner == DeusExPlayer(Owner))
{
if(bStorageMode)
{
bStoredDrone=True;
DeusExPlayer(Owner).ClientMessage("Drone stored in gun.");
Other.Destroy();
return;
}
if(RadarDrone(Other).pOrders == 0)
{
RadarDrone(Other).pOrders=1;
RadarDrone(Other).bSilence = True;
RadarDrone(Other).GotoState('Following');
RadarDrone(Other).myOwner.ClientMessage("RADAR Drone: Setting new orders, "$RadarDrone(Other).myOwner.PlayerReplicationinfo.PlayerName$", loading Follow/Silent.", 'Teamsay');
return;
}
if(RadarDrone(Other).pOrders == 1)
{
RadarDrone(Other).pOrders=2;
RadarDrone(Other).bSilence = False;
RadarDrone(Other).GotoState('Waiting');
RadarDrone(Other).myOwner.ClientMessage("RADAR Drone: Setting new orders, "$RadarDrone(Other).myOwner.PlayerReplicationinfo.PlayerName$", loading Stationary/Radar.", 'Teamsay');
return;
}
if(RadarDrone(Other).pOrders == 2)
{
RadarDrone(Other).pOrders=3;
RadarDrone(Other).bSilence = True;
RadarDrone(Other).GotoState('Waiting');
RadarDrone(Other).myOwner.ClientMessage("RADAR Drone: Setting new orders, "$RadarDrone(Other).myOwner.PlayerReplicationinfo.PlayerName$", loading Stationary/Silent.", 'Teamsay');
return;
}
if(RadarDrone(Other).pOrders == 3)
{
RadarDrone(Other).pOrders=0;
RadarDrone(Other).bSilence = False;
RadarDrone(Other).GotoState('Following');
RadarDrone(Other).myOwner.ClientMessage("RADAR Drone: Setting new orders, "$RadarDrone(Other).myOwner.PlayerReplicationinfo.PlayerName$", loading Follow/Radar.", 'Teamsay');
return;
}
}
else
{
Foreach AllActors(class'RadarDrone',RD)
{
if(RD.myOwner == DeusExPlayer(Owner))
{

if(Other != None)
{
if(RD.RocketsRemain > 0)
{
RA = Spawn(class'RaidActor',,, HitLocation);
RD.LookAtActor(RA, true, true, true, 0, 0.1);
testRot = rotator(RA.Location - RD.Location);
Rock = Spawn(class'RocketDrone',Pawn(Owner),,RD.Location + (RD.CollisionRadius+Default.CollisionRadius+5) * Vector(RD.Rotation) + vect(0,0,1) * 2,testRot);
RA.Destroy();
RD.RocketsRemain--;
DroneAmmo = RD.RocketsRemain;
//DeusExPlayer(Owner).ClientMessage(RD.RocketsRemain$" ammo remaining in Drone.");
}
}
}
}
}

Recreation


local RadarDrone RD, RDb;
local int ii;
local DeusExPlayer hax;
local int oldrockets;
local string oldiv;
local inventory oldstoredinv;
local vector loc, line, HitLocation, hitNormal;
local int oldOrders;

//local ToolRadar RT;

foreach AllActors(class'RadarDrone',RD)
{
if(RD.myOwner == DeusExPlayer(Owner))
{
Spawn(class'SphereEffect',,, RD.Location);
RD.SetLocation(DeusExPlayer(Owner).Location + (DeusExPlayer(Owner).CollisionRadius+Default.CollisionRadius+30) * Vector(DeusExPlayer(Owner).ViewRotation) + vect(0,0,1) * 30 );
Spawn(class'SphereEffect',,, RD.Location);
}
}

Recreationxredacted


local RadarDrone RD, RDb;
local int ii;
local DeusExPlayer hax;
local int oldrockets;
local string oldiv;
local inventory oldstoredinv;
local vector loc, line, HitLocation, hitNormal;
local int oldOrders;

//local ToolRadar RT;
foreach AllActors(class'RadarDrone',RD)
{
if(RD.myOwner == DeusExPlayer(Owner))
{
Spawn(class'SphereEffect',,, RD.Location);
hax = RD.myOwner;
oldrockets = RD.RocketsRemain;
oldOrders = RD.pOrders;
oldiv = RD.iv;
//oldstoredinv = RD.storedinv;
RD.Destroy();

RDb = Spawn(Class'RadarDrone',,,DeusExPlayer(Owner).Location + (DeusExPlayer(Owner).CollisionRadius+Default.CollisionRadius+30) * Vector(DeusExPlayer(Owner).ViewRotation) + vect(0,0,1) * 30 );
RDb.myOwner = hax;
RDb.iv = oldiv;
//rdb.storedinv = oldstoredinv;
//rdm.oldstoredinv
RDb.RocketsRemain = oldrockets;
RDb.GotoState('following');
RDb.myOwner.ClientMessage("RADAR Drone: Recreated at your location.", 'Teamsay');
RDb.SetTimer(1,False);
RDb.pOrders = oldOrders;
LinkedDrone = RDb;
if(oldOrders == 0)
{
RDb.bSilence = False;
RDb.GotoState('Following');
}
if(oldOrders == 1)
{
RDb.bSilence = True;
RDb.GotoState('Following');
}
if(oldOrders == 2)
{
RDb.bSilence = False;
RDb.GotoState('Waiting');
}
if(oldOrders == 3)
{
RDb.bSilence = True;
RDb.GotoState('Waiting');
}

if(bViewing)
{
Hax.ViewTarget = RDb;
}
else
{
Hax.ViewTarget = None;
}
return;
}
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Pawn CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local String KeyName, Alias, curKeyName;
local int i;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
StartTrace = ComputeProjectileStart(X, Y, Z);
AdjustedAim = P.AdjustAim(1000000, StartTrace, 2*AimError, False, False);
EndTrace = StartTrace + Accuracy * (FRand()-0.5)*Y*1000 + Accuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += (FMax(1024.0, MaxRange) * Vector(AdjustedAim));
// rDroneAmmo = DroneAmmo;
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = Rand(128);
Canvas.DrawColor.B = Rand(128);
Canvas.Font = Canvas.SmallFont;

curKeyName = "";
for ( i=0; i<255; i++ )
{
KeyName = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyName != "" )
{
Alias = Owner.ConsoleCommand( "KEYBINDING "$KeyName );
if ( Alias ~= "ToggleScope" )
{
curKeyName = KeyName;
break;
}
}
}
if ( curKeyName ~= "" )
curKeyName = "NONE";

if(LinkedDrone != None)
Canvas.DrawText(" Ammo: "$DroneAmmo$" - Health: "$LinkedDrone.Health$" - Storage: "@LinkedDrone.iv);
else if(bRepstoragemode)
Canvas.DrawText(" Drone stored. ("$curKeyName$")");
else
Canvas.DrawText(" ERROR: NO DRONE");

}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UnLockPlayerCam (deusexplayer dxp)


dxp.bBehindView=False;
dxp.ViewTarget = None;

lasertoggle


Recreation();

scopetoggle


local RadarDrone RD;
local class NewClass;
local rotator testRot;

if(bStoredDrone)
{
RD = Spawn(class'RadarDrone',Pawn(Owner),,Pawn(Owner).Location,Pawn(Owner).ViewRotation);
RD.myOwner = DeusExPlayer(Owner);
RD.GotoState('following');
RD.myOwner.ClientMessage("RADAR Drone: Recreated at your location.", 'Teamsay');
RD.SetTimer(1,False);
LinkedDrone=RD;
bStoredDrone=False;
bRepstoragemode=False;
}
else
{
foreach AllActors(class'RadarDrone',RD)
if(RD.myOwner == DeusExPlayer(Owner))
{
RD.Destroy();
bStoredDrone=True;
bRepstoragemode=True;
}

}




Torch.uc (extends DeusExWeapon)

var bool bTorchd;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
reloadTime=0.000000
HitDamage=0
maxRange=96
AccurateRange=96
BaseAccuracy=1.000000
bPenetrating=False
bHasMuzzleFlash=False
bHandToHand=True
mpBaseAccuracy=1.000000
mpAccurateRange=96
mpMaxRange=96
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-21.000000,Y=16.000000,Z=27.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.NanoSwordFire'
Misc1Sound=Sound'DeusExSounds.Weapons.NanoSwordHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.NanoSwordHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.NanoSwordHitSoft'
InventoryGroup=120
ItemName="|P2Torch - Press '[' {default |P3Scope|P2 key} to toggle on/off"
PlayerViewOffset=(X=21.000000,Y=-16.000000,Z=-27.000000)
PlayerViewMesh=LodMesh'DeusExItems.NanoSword'
PickupViewMesh=LodMesh'DeusExItems.NanoSwordPickup'
ThirdPersonMesh=LodMesh'DeusExItems.NanoSword3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconDragonTooth'
largeIcon=Texture'DeusExUI.Icons.LargeIconDragonTooth'
largeIconWidth=205
largeIconHeight=46
invSlotsX=4
Description="A laserological blade of unknown origin."
beltDescription="Torch"
Mesh=LodMesh'DeusExItems.NanoSwordPickup'
MultiSkins(1)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(4)=Texture'DeusExItems.Skins.BlackMaskTex'
MultiSkins(5)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(6)=Texture'DeusExItems.Skins.BlackMaskTex'
MultiSkins(7)=Texture'DeusExItems.Skins.BlackMaskTex'
CollisionRadius=32.000000
CollisionHeight=2.400000
Mass=20.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

BeginState


Super.BeginState();
LightType = LT_None;
Hitdamage=0;
MultiSkins[1] = Texture'PinkMaskTex';
MultiSkins[5] = Texture'PinkMaskTex';
bTorchd = False;

DropFrom (vector StartLocation)


Destroy();

ScopeToggle


local DeusExPlayer player;

Super.BeginState();
player = DeusExPlayer(Owner);
if (player != None)
{
if ( !bTorchd)
{
LightCone = 128;
LightEffect = LE_FireWaver;
LightPeriod = 32;
LightPhase = 0;
LightRadius = 25;
LightType = LT_Steady;
LightBrightness = 166;
LightHue = 1;
LightSaturation = 0;
bActorShadows = False;
bCorona = False;
bLensFlare = False;
bSpecialLit = False;
Hitdamage=20;
MultiSkins[5] = FireTexture'Effects.Fire.OnFire_J';
bTorchd = True;
}
else
{
LightCone = 0;
LightEffect = LE_None;
LightPeriod = 32;
LightPhase = 0;
LightRadius = 100;
LightType = LT_None;
VolumeBrightness = 255;
Hitdamage=0;
MultiSkins[5] = Texture'PinkMaskTex';
bTorchd = False;
}
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

WeaponDamageType -> name


return 'KnockedOut';




TrainingLam.uc (extends ThrownProjectile)

var float mpBlastRadius;
var float mpProxRadius;
var float mpLAMDamage;
var float mpFuselength;
mpBlastRadius=512.000000
mpProxRadius=128.000000
mpFuselength=1.500000
fuseLength=3.000000
proxRadius=128.000000
blastRadius=384.000000
spawnWeaponClass=Class'PartyStuff.WeaponTrainingLam'
ItemName="Training Lightweight Attack Munition (TLAM)"
speed=1000.000000
MaxSpeed=1000.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.LAMExplode'
ExplosionDecal=Class'DeusEx.ScorchMark'
LifeSpan=0.000000
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=9.000000
CollisionHeight=9.000000
Mass=5.000000
Buoyancy=2.000000

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
{
blastRadius=mpBlastRadius;
proxRadius=mpProxRadius;
Damage=mpLAMDamage;
fuseLength=mpFuselength;
bIgnoresNanoDefense=True;
}

SpawnEffects (Vector HitLocation, Vector HitNormal, Actor Other)


local int i;
local SmokeTrail puff;
local TearGas gas;
local Fragment frag;
local ParticleGenerator gen;
local ProjectileGenerator projgen;
local vector loc;
local rotator rot;
local ExplosionLight light;
local DeusExDecal mark;
local AnimatedSprite expeffect;


rot.Pitch = 16384 + FRand() * 16384 - 8192;
rot.Yaw = FRand() * 65536;
rot.Roll = 0;

// don't draw damage art on destroyed movers
if (DeusExMover(Other) != None)
if (DeusExMover(Other).bDestroyed)
ExplosionDecal = None;

if (ExplosionDecal != None)
{
mark = DeusExDecal(Spawn(ExplosionDecal, Self,, HitLocation, Rotator(HitNormal)));
if (mark != None)
{
mark.DrawScale = FClamp(damage/30, 0.1, 3.0);
mark.ReattachDecal();
if (!bDamaged)
mark.RemoteRole = ROLE_None;
}
}

for (i=0; i {
if (FRand() < 0.9)
{
if (bDebris && bStuck)
{
frag = spawn(FragmentClass,,, HitLocation);
if (!bDamaged)
frag.RemoteRole = ROLE_None;
if (frag != None)
frag.CalcVelocity(VRand(), blastRadius);
}

loc = Location;
loc.X += FRand() * blastRadius - blastRadius * 0.5;
loc.Y += FRand() * blastRadius - blastRadius * 0.5;

if (damageType == 'Exploded')
{
light = Spawn(class'ExplosionLight',,, HitLocation);
if ((light != None) && (!bDamaged))
light.RemoteRole = ROLE_None;

if (FRand() < 0.5)
{
expeffect = spawn(class'ExplosionSmall',,, loc);
light.size = 2;
}
else
{
expeffect = spawn(class'ExplosionMedium',,, loc);
light.size = 4;
}
if ((expeffect != None) && (!bDamaged))
expeffect.RemoteRole = ROLE_None;
}
else if (damageType == 'EMP')
{
light = Spawn(class'ExplosionLight',,, HitLocation);
if (light != None)
{
if (!bDamaged)
light.RemoteRole = ROLE_None;
light.size = 6;
light.LightHue = 170;
light.LightSaturation = 64;
}
}
}
}

Tick (float deltaTime)


local float blinkRate;


Super.Tick(deltaTime);

if (bDisabled)
{
Skin = Texture'BlackMaskTex';
return;
}

// flash faster as the time expires
if (fuseLength - time <= 0.75)
blinkRate = 0.1;
else if (fuseLength - time <= fuseLength * 0.5)
blinkRate = 0.3;
else
blinkRate = 0.5;

if ((Level.NetMode == NM_Standalone) || (Role < ROLE_Authority) || (Level.NetMode == NM_ListenServer))
{
if (Abs((fuseLength - time)) % blinkRate > blinkRate * 0.5)
Skin = Texture'BlackMaskTex';
else
Skin = Texture'LAM3rdTex1';
}




TravelSwitch.uc (extends Switch2)

var() string MapURL;
var() float MinPercentage;
var float VoteTimer;
var DeusExPlayer Voters[16];
var() bool bDebug;
ItemName="Travel Switch"

Frob (Actor Frobber, Inventory frobWith)


local int i, f, Players, VoteCount;
local DeusExPlayer DXP, P;
local bool bVoted;


//Super.Frob(Frobber, frobWith);

P = DeusExPlayer(Frobber);

foreach AllActors(class'DeusExPlayer', DXP)
Players++;

for(i=0;i<16;i++)
if(Voters[i] != None)
VoteCount++;

for(i=0;i<16;i++)
if(Voters[i] == P)
bVoted=True;

if(!bVoted)
{
for(i=0;i<16;i++)
{
if(Voters[i] == None)
{
BroadcastMessage("Vote Statistics: "$VoteCount+1$" out of "$Players$" players voted for "$MapURL$". "$float((VoteCount+1 / Players) * 100)$"% - Requires "$MinPercentage$"%");
Voters[i] = P;

if( ( (VoteCount+1 / Players) * 100 ) >= MinPercentage )
{
if(bDebug)
{
BroadcastMessage("Vote passed.");
return;
}
Level.Servertravel( MapURL ,false);
}
return;
}
}
}

P.ClientMessage("Client Vote Statistics: "$VoteCount+1$" out of "$Players$" players voted for "$MapURL$". "$(VoteCount+1 / Players) * 100$"% - Requires "$MinPercentage$"%");






TripProj.uc (extends LaserProj)

var float mpBlastRadius;
var float mpProxRadius;
var float mpLAMDamage;
var float mpFuselength;
var MPLaserEmitter emitter;
var() bool bIsOn;
var bool bConfused; // used when hit by EMP
var bool bCanFrob;
var float confusionTimer; // how long until trigger resumes normal operation
var float confusionDuration; // how long does EMP hit last?
var int HitDamage;
var int HitPoints;
var int minDamageThreshold;
var float TripTimer;
var int charge;
confusionDuration=10.000000
TripTimer=3.000000
fuseLength=0.000000
proxRadius=0.000000
blastRadius=256.000000
spawnWeaponClass=Class'PartyStuff.WeaponTripBomb'
ItemName="Laser Wire"
speed=1000.000000
MaxSpeed=1000.000000
Damage=500.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.LAMExplode'
ExplosionDecal=Class'DeusEx.ScorchMark'
LifeSpan=0.000000
Mesh=LodMesh'DeusExDeco.LaserEmitter'
CollisionRadius=2.500000
CollisionHeight=2.500000
Mass=5.000000
Buoyancy=2.000000

Arm


emitter.TurnOn();
bIsOn = True;

emitter.SetLocation(Location);
emitter.SetRotation(Rotation);

BeginPlay


local DeusExPlayer aplayer;


Super(DeusexProjectile).BeginPlay();

SetCollision(True, True, True);

Destroyed


if (emitter != None)
{
emitter.Destroy();
emitter = None;
}

Super.Destroyed();

Disarm


emitter.TurnOff();
bDisabled=True;
bIsOn = False;
bCanFrob = True;
emitter.Destroy();
emitter = none;

Frob (Actor Frobber, Inventory frobWith)


if(bCanFrob)
{
Super.Frob(Frobber, frobWith);
return;
}
Disarm();

PostBeginPlay


SetTimer(TripTimer,False);

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
{
blastRadius=mpBlastRadius;
proxRadius=mpProxRadius;
Damage=mpLAMDamage;
fuseLength=mpFuselength;
bIgnoresNanoDefense=True;
}

Tick (float deltaTime)


local bool bConfusedOff;
local Weapon wep;
local ScriptedPawn P;
local DeusExDecoration Deco;
local DeusExPlayer Player;


if ( bIsOn)
{
if (emitter != none)
{
if ((emitter.HitActor != None) && (!bDisabled))
{
if(DeusExDecoration(emitter.hitactor) != None && !DeusExDecoration(emitter.hitactor).bInvincible)
{
DeusExDecoration(emitter.hitactor).TakeDamage(100,DeusExPlayer(Owner),DeusExDecoration(emitter.hitactor).location,vect(0,0,0),'exploded');
}

if(Pawn(emitter.hitactor) != none)
{
Pawn(emitter.hitactor).TakeDamage(20,DeusExPlayer(Owner),emitter.hitactor.location,vect(0,0,0),'special');
}
/*P = ScriptedPawn(emitter.hitactor);
Wep = Weapon(emitter.hitactor);
Player = DeusExPlayer(emitter.hitactor);
Deco = DeusExDecoration(emitter.hitactor);


player.TakeDamage(20,none,vect(0,0,7),vect(0,0,0),'special');*/

}
}
}

Timer


if ((emitter == none))
{
emitter = Spawn(class'MPLaserEmitter');

if (emitter != None)
{
emitter.TurnOn();
bIsOn = True;
bDisabled=False;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
}
}

Trigger (actor Other, pawn EventInstigator)


if(bisOn)
{
Disarm();
}
else
{
SetTimer(1,False);
}




TripProjEMP.uc (extends LaserProj)

var float mpBlastRadius;
var float mpProxRadius;
var float mpLAMDamage;
var float mpFuselength;
var mpLaserEmitter emitter;
var() bool bIsOn;
var bool bConfused; // used when hit by EMP
var bool bCanFrob;
var float confusionTimer; // how long until trigger resumes normal operation
var float confusionDuration; // how long does EMP hit last?
var int HitDamage;
var int HitPoints;
var int minDamageThreshold;
var float TripTimer;
var int charge;
confusionDuration=10.000000
TripTimer=3.000000
fuseLength=0.000000
proxRadius=0.000000
blastRadius=256.000000
spawnWeaponClass=Class'PartyStuff.WeaponTripBombEMP'
ItemName="Laser EMP"
speed=1000.000000
MaxSpeed=1000.000000
Damage=500.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.LAMExplode'
ExplosionDecal=Class'DeusEx.ScorchMark'
LifeSpan=0.000000
Mesh=LodMesh'DeusExDeco.LaserEmitter'
CollisionRadius=2.500000
CollisionHeight=2.500000
Mass=5.000000
Buoyancy=2.000000

Arm


emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
bDisabled=False;

BeginPlay


local DeusExPlayer aplayer;


Super(DeusexProjectile).BeginPlay();

SetCollision(True, True, True);

Destroyed


if (emitter != None)
{
emitter.Destroy();
emitter = None;
}

Super.Destroyed();

Disarm


emitter.TurnOff();
bDisabled=True;
bIsOn = False;
bCanFrob = True;
Emitter.Destroy();
emitter = none;

Frob (Actor Frobber, Inventory frobWith)


if(bCanFrob)
{
Super.Frob(Frobber, frobWith);
return;
}
Disarm();

PostBeginPlay


SetTimer(TripTimer,False);

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
{
blastRadius=mpBlastRadius;
proxRadius=mpProxRadius;
Damage=mpLAMDamage;
fuseLength=mpFuselength;
bIgnoresNanoDefense=True;
}

Tick (float deltaTime)


local ScriptedPawn P;
local DeusExPlayer Player;


if ( bIsOn)
{
if (emitter != none)
{
if ((emitter.HitActor != None) && (!bDisabled))
{
if(Pawn(emitter.hitactor) != none)
{
Pawn(emitter.hitactor).TakeDamage(20,DeusExPlayer(Owner),emitter.hitactor.location,vect(0,0,0),'EMP');
}
}
}
}

Timer


if ((emitter == none))
{
emitter = Spawn(class'MPLaserEmitter');

if (emitter != None)
{
emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
bDisabled=False;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
}
}

Trigger (actor Other, pawn EventInstigator)


if(bisOn)
{
Disarm();
}
else
{
SetTimer(1,False);
}




TripProjFire.uc (extends LaserProj)

var float mpBlastRadius;
var float mpProxRadius;
var float mpLAMDamage;
var float mpFuselength;
var MPLaserEmitter emitter;
var() bool bIsOn;
var bool bConfused; // used when hit by EMP
var bool bCanFrob;
var float confusionTimer; // how long until trigger resumes normal operation
var float confusionDuration; // how long does EMP hit last?
var int HitDamage;
var int HitPoints;
var int minDamageThreshold;
var float TripTimer;
var int charge;
confusionDuration=10.000000
TripTimer=3.000000
fuseLength=0.000000
proxRadius=0.000000
blastRadius=256.000000
spawnWeaponClass=Class'PartyStuff.WeaponTripBombFire'
ItemName="Laser Fire Wire"
speed=1000.000000
MaxSpeed=1000.000000
Damage=500.000000
MomentumTransfer=50000
ImpactSound=Sound'DeusExSounds.Weapons.LAMExplode'
ExplosionDecal=Class'DeusEx.ScorchMark'
LifeSpan=0.000000
Mesh=LodMesh'DeusExDeco.LaserEmitter'
CollisionRadius=2.500000
CollisionHeight=2.500000
Mass=5.000000
Buoyancy=2.000000

Arm


emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
bDisabled=False;

BeginPlay


local DeusExPlayer aplayer;


Super(DeusexProjectile).BeginPlay();

SetCollision(True, True, True);

Destroyed


if (emitter != None)
{
emitter.Destroy();
emitter = None;
}

Super.Destroyed();

Disarm


emitter.TurnOff();
emitter.Destroy();
emitter = none;
bDisabled=True;
bIsOn = False;
bCanFrob = True;

Frob (Actor Frobber, Inventory frobWith)


if(bCanFrob)
{
Super.Frob(Frobber, frobWith);
return;
}
Disarm();

PostBeginPlay


SetTimer(TripTimer,False);

PreBeginPlay


Super.PreBeginPlay();

if ( Level.NetMode != NM_Standalone )
{
blastRadius=mpBlastRadius;
proxRadius=mpProxRadius;
Damage=mpLAMDamage;
fuseLength=mpFuselength;
bIgnoresNanoDefense=True;
}

Tick (float deltaTime)


local bool bConfusedOff;
local Weapon wep;
local ScriptedPawn P;
local DeusExDecoration Deco;
local DeusExPlayer Player;


if ( bIsOn)
{
if (emitter != none)
{
//Any actor it hits will get hurt
if ((emitter.HitActor != None) && (!bDisabled))
{
if(DeusExDecoration(emitter.hitactor) != None && !DeusExDecoration(emitter.hitactor).bInvincible)
{
DeusExDecoration(emitter.hitactor).TakeDamage(100,DeusExPlayer(Owner),DeusExDecoration(emitter.hitactor).location,vect(0,0,0),'Flamed');
}

if(Pawn(emitter.hitactor) != none)
{
Pawn(emitter.hitactor).TakeDamage(20,DeusExPlayer(Owner),emitter.hitactor.location,vect(0,0,0),'Flamed');
}
}
}
}

Timer


if ((emitter == none))
{
emitter = Spawn(class'MPLaserEmitter');

if (emitter != None)
{
emitter.TurnOn();
emitter.bBlueBeam=False;
bIsOn = True;
bDisabled=False;
emitter.SetLocation(Location);
emitter.SetRotation(Rotation);
}
}

Trigger (actor Other, pawn EventInstigator)


if(bisOn)
{
Disarm();
}
else
{
SetTimer(1,False);
}




TurretItem.uc (extends ChargedPickup)

ActivateSound=Sound'DeusExSounds.Augmentation.CloakUp'
DeActivateSound=None
ChargeRemainingLabel="Box readiness:"
ItemName="Portable Turret"
PlayerViewOffset=(X=20.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExDeco.BoxSmall'
PlayerViewScale=0.200000
PickupViewMesh=LodMesh'DeusExDeco.BoxSmall'
ThirdPersonMesh=LodMesh'DeusExDeco.BoxSmall'
ThirdPersonScale=0.250000
Charge=8
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconArmorAdaptive'
largeIcon=Texture'DeusExUI.Icons.LargeIconArmorAdaptive'
largeIconWidth=35
largeIconHeight=49
Description="s"
beltDescription="BOX"
Mesh=LodMesh'DeusExDeco.BoxSmall'
CollisionRadius=13.000000
CollisionHeight=5.180000
Mass=10.000000
Buoyancy=100.000000

ChargedPickupBegin (DeusExPlayer Player)


local TempTurret CD;
local Vector loc,X,Y,Z;


CD = Spawn(Class'TempTurret',,,Player.Location + (Player.CollisionRadius+Default.CollisionRadius+30) * Vector(Player.ViewRotation) + vect(0,0,1) * 30 );
CD.Master = Player;

Super.ChargedPickupBegin(Player);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

UsedUp


local DeusExPlayer Player;


if ( Pawn(Owner) != None )
{
bActivatable = false;

}
Player = DeusExPlayer(Owner);

if (Player != None)
{
if (Player.inHand == Self)
ChargedPickupEnd(Player);
}

Destroy();




TzBallSpawnPoint.uc (extends Actor)




TzBallSwitch.uc (extends Switch2)

var bool bOn;
var() int MaxBalls;
var vector SpawnPointBB;
MaxBalls=3
ItemName="Press to bring more balls!"

BeginPlay


local TzBallSpawnPoint SPB;


foreach AllActors(class'TzBallSpawnPoint',SPB)
{
SpawnPointBB = SPB.Location;
return;
}

Frob (Actor Frobber, Inventory frobWith)


local BasketballMP BMP;
local int AmountOfBalls;

Super.Frob(Frobber, frobWith);
SetOwner(Frobber);

foreach AllActors(class'BasketballMP',BMP)
{
AmountOfBalls++;
}
if (AmountOfBalls <= MaxBalls)
{
Spawn(Class'BasketballMP',self,,SpawnPointBB);
}
else
{
ShowMessage(DeusExPlayer(Frobber),"There are enough balls!");
}

if (bOn)
{
PlaySound(sound'Switch4ClickOff');
PlayAnim('Off');
}
else
{
PlaySound(sound'Switch4ClickOn');
PlayAnim('On');
}

bOn = !bOn;

ShowMessage (DeusExPlayer Player, string Message)


local HUDMissionStartTextDisplay HUD;

if ((Player.RootWindow != None) && (DeusExRootWindow(Player.RootWindow).HUD != None))
{
HUD = DeusExRootWindow(Player.RootWindow).HUD.startDisplay;
}
if(HUD != None)
{
HUD.shadowDist = 0;
HUD.Message = "";
HUD.charIndex = 0;
HUD.winText.SetText("");
HUD.winTextShadow.SetText("");
HUD.displayTime = 5.50;
HUD.perCharDelay = 0.30;
HUD.AddMessage(Message);
HUD.StartMessage();
}




TzBasketExitTrigger.uc (extends Trigger)

Touch (actor Other)


local Actor DXPO;

DXPO = Other.Owner;
if (Other.IsA('BasketballMP'))
{
if(BasketballMP(Other).bAlreadyScored)
{
BasketballMP(Other).bAlreadyScored = False;
DeusExPlayer(DXPO).BroadcastMessage("|c33CCFF"@DeusExPlayer(DXPO).PlayerReplicationInfo.Playername@"has scored a point in basketball!");
DeusExPlayer(DXPO).PlayerReplicationInfo.Score += 1;
DeusExPlayer(DXPO).PlayerReplicationInfo.Streak += 1;
PlaySound(Sound'DeusExSounds.UserInterface.LogSkillPoints', SLOT_None,2,,512);
}

}




TzBasketTrigger.uc (extends Trigger)

Touch (actor Other)


local Actor DXPO;

DXPO = Other.Owner;
if (Other.IsA('BasketballMP')&& DeusExPlayer(DXPO) != None && !BasketballMP(Other).bAlreadyScored)
{
BasketballMP(Other).bAlreadyScored = True;
}




TzBasketZone.uc (extends ZoneInfo)




TzBasketballZone.uc (extends ZoneInfo)

ActorEntered (actor Other)


local float avg;

Super.ActorEntered(Other);
if(DeusExPlayer(Other) != None)
{
DeusExPlayer(Other).StopPoison();
DeusExPlayer(Other).ExtinguishFire();
DeusExPlayer(Other).drugEffectTimer = 0;
DeusExPlayer(Other).ReducedDamageType = 'All';
if(DeusExPlayer(Other).Health < 100)
{
DeusExPlayer(Other).HealPlayer(100, True);
}
}
if (Other.IsA('PlaygroundContainers') || Other.IsA('Box'))
{
avg = (DeusExDecoration(Other).CollisionRadius + DeusExDecoration(Other).CollisionHeight) / 2;
DeusExDecoration(Other).Frag(DeusExDecoration(Other).fragType, vect(20,20,20), avg/20.0, avg/5 + 1);
Other.Destroy();
}
else if (Other.IsA('DeusExDecoration'))
{
DeusExDecoration(Other).bInvincible=True;
}
else if (Other.IsA('SpyDrone') && !SpyDrone(Other).bDisabled)
{
DeusExPlayer(SpyDrone(Other).Owner).ForceDroneOff();
SpyDrone(Other).bDisabled = True;
SpyDrone(Other).SetPhysics(PHYS_Falling);
SpyDrone(Other).bBounce = True;
SpyDrone(Other).LifeSpan = 10.0;
SpyDrone(Other).Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
}
else if (Other.IsA('ThrownProjectile') && !Other.IsA('BasketballMP'))
{
Other.TakeDamage(15, None, Other.Location, vect(0,0,0), 'EMP');
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SphereEffect',,, Other.Location);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.LifeSpan = 10.0;
}
else if (Other.IsA('RocketLAW') || Other.IsA('HECannister20mm') || Other.isA('Rocket') || Other.isA('RocketWP'))
{
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SmokeTrail',,, Other.Location);
Other.Spawn(class'SphereEffect',,, Other.Location);
DeusExProjectile(Other).Destroy();
}
else if (Other.IsA('DeusExProjectile'))
{
Other.PlaySound(sound'ProdFire', SLOT_None,,,, 2.0);
Other.Spawn(class'SphereEffect',,, Other.Location);
DeusExProjectile(Other).Destroy();
}
else if (Other.IsA('ProjectileGenerator'))
{
ProjectileGenerator(Other).Destroy();
}
else if(Other.IsA('BasketballMP'))
{
if (BasketballMP(Other).bDoomedToDestroy)
{
BasketballMP(Other).bDoomedToDestroy = False;
BasketballMP(Other).SetTimer(0,False);
}
}

ActorLeaving (actor Other)


Super.ActorLeaving(Other);
DeusExPlayer(Other).ReducedDamageType = '';
if(Other.IsA('BasketballMP'))
{
BasketballMP(Other).bDoomedToDestroy = True;
BasketballMP(Other).SetTimer(15, False);
}




TzBlockPlayers.uc (extends Trigger)

var() vector KickVelocity;
var() name KickedClasses;
var() bool bKillVelocity;
var() bool bRandomize;
KickedClasses=DeusExPlayer
bDirectional=True

PostTouch (actor Other)


local bool bWasFalling;
local vector Push;
local float PMag;


bWasFalling = ( Other.Physics == PHYS_Falling );
if ( bKillVelocity )
Push = -1 * Other.Velocity;
else
Push.Z = -1 * Other.Velocity.Z;
if ( bRandomize )
{
PMag = VSize(KickVelocity);
Push += PMag * Normal(KickVelocity + 0.5 * PMag * VRand());
}
else
Push += KickVelocity;
Other.SetPhysics(PHYS_Falling);
Other.Velocity += Push;

Touch (actor Other)


local Actor A;


if ( !Other.IsA(KickedClasses) )
return;
PendingTouch = Other.PendingTouch;
Other.PendingTouch = self;
if( Event != '' )
foreach AllActors( class 'Actor', A, Event )
A.Trigger( Other, Other.Instigator );




Ultima.uc (extends DeusExProjectile)

bExplodes=True
blastRadius=96.000000
DamageType=Sabot
ItemName="Blood Sword"
ItemArticle="the"
speed=1000.000000
MaxSpeed=1000.000000
Damage=200.000000
MomentumTransfer=128
SpawnSound=Sound'DeusExSounds.UserInterface.DataLinkStart'
ImpactSound=Sound'DeusExSounds.Weapons.EMPGrenadeExplode'
ExplosionDecal=Class'DeusEx.BurnMark'
DrawType=DT_Sprite
Style=STY_Translucent
Texture=Texture'DeusExDeco.Skins.AlarmLightTex2'
bUnlit=True
SoundRadius=10
SoundVolume=255
SoundPitch=173

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local int i;
local Rotator rot;
local SphereEffect sphere;


// draw a cool light sphere
sphere = Spawn(class'SphereEffect',,, HitLocation);
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastradius / 32.0;
Sphere.MultiSkins[0]=Texture'DeusExDeco.Skins.AlarmLightTex3';
}

PreBeginPlay

Tick (float deltaTime)


local SmokeTrail s;


time += DeltaTime;
DrawScale = FClamp(2.5*(time+0.5), 1.0, 6.0);
if ((time > FRand() * 0.02) && (Level.NetMode != NM_DedicatedServer))
{
time = 0;

// spawn some trails
s = Spawn(class'SmokeTrail',,, Location);
if (s != None)
{
s.DrawScale = FRand() * 0.333;
s.OrigScale = s.DrawScale;
s.Texture = Texture'AlarmLightTex2';
s.Velocity = VRand() * 50;
s.OrigVel = s.Velocity;
}
}




Ultima2.uc (extends DeusExProjectile)

bExplodes=True
blastRadius=700.000000
DamageType=Sabot
ItemName="Blood Sword"
ItemArticle="the"
speed=3000.000000
MaxSpeed=3000.000000
Damage=500.000000
MomentumTransfer=100000
ImpactSound=Sound'DeusExSounds.Generic.BioElectricHiss'
Style=STY_Translucent
DrawScale=200.000000
ScaleGlow=10.000000
Fatness=120
bUnlit=True
SoundRadius=255
SoundVolume=255
TransientSoundVolume=90.000000
LightType=LT_SubtlePulse
LightBrightness=224
LightHue=51
LightRadius=255
Mass=1.000000

DrawExplosionEffects (Vector HitLocation, Vector HitNormal)


local Pring pr;
local ssring sr;
local explosionlight l;
local explosionlarge expeffect;
local int i;
local Rotator rot;
local pring sphere;


// draw a cool light sphere
sphere = Spawn(class'pring',,, HitLocation);
if (sphere != None)
{
sphere.RemoteRole = ROLE_None;
sphere.size = blastradius / 32.0;
Sphere.MultiSkins[0]=Texture'DeusExDeco.Skins.AlarmLightTex3';
}

l = spawn(class'ExplosionLight',,, HitLocation);
if (l !=None)
{
l.remoterole = Role_None;
l.size = 15;
l.LightHue = 128;
l.LightBrightness = 255;
l.LightSaturation = 96;
l.LightEffect = LE_Shell;

}




VIPCard.uc (extends DeusExPickup)

bCanHaveMultipleCopies=True
ItemName="VIP Pass"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.Credits'
PickupViewMesh=LodMesh'DeusExItems.Credits'
ThirdPersonMesh=LodMesh'DeusExItems.Credits'
LandSound=Sound'DeusExSounds.Generic.PlasticHit1'
Icon=Texture'DeusExUI.Icons.BeltIconCredits'
beltDescription="VIP Pass"
Mesh=LodMesh'DeusExItems.Credits'
MultiSkins(0)=Texture'Extras.Eggs.Matrix_A00'
CollisionRadius=7.000000
CollisionHeight=0.550000
Mass=2.000000
Buoyancy=3.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




VialBlood.uc (extends CraftingMaterial)

InvResult=Class'PartyStuff.WeaponBloodSword'
NumNeeded=1
DispStr="Requires 1x Vial of Blood, 1x Dragon's Tooth Sword to make Blood Sword"
ItemName="Vial of Blood"
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Icon=Texture'PGAssets.Icons.BeltIconCraftingFlask'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=18
largeIconHeight=44
beltDescription="BLOOD"
Mesh=LodMesh'DeusExItems.BioCell'
MultiSkins(1)=Texture'DeusExDeco.Skins.AlarmLightTex3'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=2.000000
Buoyancy=4.000000

OtherRequirements -> bool


local WeaponNanoSword GS;
local WeaponNanoSword2 GS2;
local bool bFound, bFound2;


foreach AllActors(class'WeaponNanosword',GS)
if(GS.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
bFound=True;


foreach AllActors(class'WeaponNanosword2',GS2)
if(GS2.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
bFound2=True;

if(bFound)
{
foreach AllActors(class'WeaponNanosword',GS)
if(GS.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
GS.Destroy();
return True;
}
if(bFound2)
{
foreach AllActors(class'WeaponNanosword2',GS2)
if(GS2.Owner == Owner && GS2.ItemName=="Dragon's Tooth Sword")
GS2.Destroy();
return True;
}




VialGrow.uc (extends DeusExPickup)

var bool bOn;
maxCopies=1
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Grow Vial"
ItemArticle="an"
PlayerViewOffset=(X=30.000000,Z=-12.000000)
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
LandSound=Sound'DeusExSounds.Generic.GlassHit1'
Icon=Texture'DeusExUI.Icons.BeltIconVialAmbrosia'
M_Activated=""
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=18
largeIconHeight=44
Description="The only known vaccine against the 'Gray Death.' Unfortunately, it is quickly metabolized by the body making its effects temporary at best."
beltDescription="GROW"
Mesh=LodMesh'DeusExItems.VialAmbrosia'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=2.000000
Buoyancy=3.000000

Activate


// can't turn it off

BeginState


local DeusExPlayer player;

Super.BeginState();

player = DeusExPlayer(Owner);
if (player != None)

bOn = !bOn;

if(bOn)
DeusExPlayer(Owner).ClientMessage("Grow activated.");
else
DeusExPlayer(Owner).ClientMessage("Grow de-activated.");
GotoState('DeActivated');




VialNanites.uc (extends CraftingMaterial)

InvResult=Class'PartyStuff.WeaponAugrist'
NumNeeded=7
DispStr="Requires 7x Vial of Nanites, 1x Dragon's Tooth Sword to make Augrist"
ItemName="Vial of Concentrated Nanites"
PlayerViewMesh=LodMesh'DeusExItems.VialAmbrosia'
PickupViewMesh=LodMesh'DeusExItems.VialAmbrosia'
ThirdPersonMesh=LodMesh'DeusExItems.VialAmbrosia'
Icon=Texture'PGAssets.Icons.BeltIconCraftingFlask'
largeIcon=Texture'DeusExUI.Icons.LargeIconVialAmbrosia'
largeIconWidth=18
largeIconHeight=44
beltDescription="NANITES"
Mesh=LodMesh'DeusExItems.BioCell'
MultiSkins(1)=Texture'PGAssets.Skins.wtf'
CollisionRadius=2.200000
CollisionHeight=4.890000
Mass=2.000000
Buoyancy=4.000000

OtherRequirements -> bool


local WeaponNanoSword GS;
local WeaponNanoSword2 GS2;
local bool bFound, bFound2;


foreach AllActors(class'WeaponNanosword',GS)
if(GS.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
bFound=True;


foreach AllActors(class'WeaponNanosword2',GS2)
if(GS2.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
bFound2=True;

if(bFound)
{
foreach AllActors(class'WeaponNanosword',GS)
if(GS.Owner == Owner && GS.ItemName=="Dragon's Tooth Sword")
GS.Destroy();
return True;
}
if(bFound2)
{
foreach AllActors(class'WeaponNanosword2',GS2)
if(GS2.Owner == Owner && GS2.ItemName=="Dragon's Tooth Sword")
GS2.Destroy();
return True;
}




Vortex.uc (extends Projectile)

var int TickDelay;
var int Ticks;
var bool bVAdded, bPlayedStartSound;
var bool bVortexSucking,bVortexStopped;
var float VortexGravity, VortexRadius;
var SphereEffectXL sp;
var() localized string DirectHitString, SuicideString, SuicideFString;
var() float DamageRadius;
VortexGravity=120.000000
VortexRadius=7000.000000
DamageRadius=200.000000
speed=600.000000
Damage=10.000000
MyDamageType=SpecialDamage
LifeSpan=20.000000
Skin=FireTexture'Effects.liquid.Virus_SFX'
Mesh=LodMesh'DeusExDeco.Basketball'
AmbientGlow=67
bUnlit=True
SoundRadius=112
SoundVolume=255
CollisionRadius=5.000000
CollisionHeight=5.000000
bBounce=True
bFixedRotationDir=True
DesiredRotation=(Pitch=12000,Yaw=5666,Roll=2334)

Destroyed


bVortexSucking = False;


HitWall (vector HitNormal, actor Wall)


Velocity = 0.75 * ((Velocity dot HitNormal) * HitNormal * (-2.0) + Velocity); // Reflect off Wall w/damping
speed = VSize(Velocity);
if ( Velocity.Z > 400 )
Velocity.Z = 0.5 * (400 + Velocity.Z);

Landed (vector HitNormal)


HitWall(HitNormal, None);

LoopRunAnim (float Rate)


// LoopAnim('VortexRun', Rate);

PostBeginPlay



Super.PostBeginPlay();

Velocity = Vector(Rotation) * Speed;
Velocity.Z += 200;
SetTimer(0.05, True);
RandSpin(30000);

ProcessTouch (actor Other, vector HitLocation)


HitWall(Normal(HitLocation - Other.Location), None );

SetKillType (Pawn Killer, Pawn Victim)


if ( Killer == None || Victim == None )
return;
if ( Killer != Victim )
Level.Game.SpecialDamageString = DirectHitString;
else if ( Killer.bIsFemale )
Level.Game.SpecialDamageString = SuicideFString;
else
Level.Game.SpecialDamageString = SuicideString;

SetVictimPhysics (actor Victim)


if ( Victim.Physics != PHYS_Falling && (!Victim.IsA('Pawn') || !Victim.Region.Zone.bWaterZone) )
{
Victim.SetPhysics(PHYS_Falling);
if ( Victim.IsA('Pawn') )
Pawn(Victim).Falling();
}

SpawnLights


local int randomheight,randomNum;
local vector vec1,summonLocation, PlayerHitLocation;
local LightBall lightB;


randomheight=Rand(40);
randomNum=Rand(4);

vec1=VRand();
vec1*=500;

summonLocation = vec1+Location;
summonLocation.z += randomheight;
PlayerHitLocation = Location;
PlayerHitLocation.z += randomheight;

lightB=Spawn(class'LightBall',,, summonLocation, rotator(PlayerHitLocation-summonLocation));
if (lightB!=None)
{
lightB.Texture=Texture'DeusExDeco.Skins.AlarmLightTex6';
lightB.TimeLimit=1.5;
}

SplashDamage


local actor Victim;
local float dist, damageScale;


if ( bHurtEntry )
return;
bHurtEntry = true;

foreach VisibleCollidingActors(class 'Actor', Victim, DamageRadius, Location)
if ( Victim != Self ) {
dist = FMax(1, VSize(Victim.Location - Location));
damageScale = 1 - FClamp((dist - Victim.CollisionRadius) / DamageRadius, 0, 1);
SetKillType(Instigator, Pawn(Victim));
Victim.TakeDamage(damageScale * Damage, Instigator, Victim.Location, vect(0,0,0), MyDamageType);

Tick (float DeltaTime)


//spawns lightballs all around
if(bVortexSucking)
SpawnLights();

if ( Ticks - TickDelay == 15 )
{
if ( !bVAdded )
{
Velocity.Z += 15;
bVAdded = True;
}
}

if ( Ticks - TickDelay > 15 )
Velocity -= Region.Zone.ZoneGravity * DeltaTime * 0.8;

if ( Ticks - TickDelay > 25 )
DrawScale = Min(1 + ((Ticks - TickDelay) - 25) * 0.25, 2.0);

if ( Ticks - TickDelay == 40 )
{

//Owner.PlaySound(Sound'DXRVUltimate.Effect.Teleport01',SLOT_None,16384);
Velocity = vect(0,0,0);
SetPhysics(PHYS_Rotating);
bVortexSucking = True;
}

//if ( Ticks - TickDelay == 70 )
// bVortexSucking = True;

if ( Ticks - TickDelay == 300)
{
AmbientSound = None;
PlaySound(MiscSound,, 255.0,, 6000.00);
}
else if ( Default.LifeSpan - LifeSpan > 6.0 + TickDelay * 0.05 && AmbientSound == None )
{
//AmbientSound = Sound'DXRVUltimate.Effect.VortexRun';
SoundVolume = 255;
SoundRadius = 6000;
}
else if ( Default.LifeSpan - LifeSpan > TickDelay * 0.05 && !bPlayedStartSound )
{
PlaySound(SpawnSound,, 255.0,, 6000.00);
bPlayedStartSound = True;
}

Timer


SetTimer(0.05, True);
LoopRunAnim(Min(0.25 + (Ticks * 0.05), 1.0));
Ticks += 1;
Velocity -= Velocity * 0.1;
if ( bVortexSucking )
VortexTarget();

VortexTarget


local float Distance;
local vector Direction;
local Actor Victim;
local bool bVictimInSight;


// suck (almost) everything in
ForEach RadiusActors(class'Actor', Victim, VortexRadius, Location)
{
if(Victim!=Owner)
{
bVictimInSight = FastTrace(Location, Victim.Location);

if (Victim.Class != Class && !Victim.IsA('StationaryPawn') && !Victim.bHidden && Victim.Physics != PHYS_Trailer && ( (Victim.bIsPawn || Victim.IsA('Carcass')) || Victim.IsA('TranslocatorTarget') || ( (Victim.IsA('Projectile') && Victim.Physics == PHYS_Falling) ) ) )
{
if ( Pawn(Victim) == None || !Pawn(Victim).bIsPlayer || !Pawn(Victim).PlayerReplicationInfo.bIsSpectator )
{
Direction = Location - Victim.Location;
Distance = 2.1 - VSize(Direction * 2) / VortexRadius;
Direction = Normal(Direction);
if ( !bVictimInSight )
Direction *= 0.3;
SetVictimPhysics(Victim);
Victim.Velocity += Direction * VortexGravity * 0.2 * Square(Distance);
}
}

if ( Victim.Role == ROLE_Authority && Victim.bIsPawn
&& (bVictimInSight || VSize(Location - Victim.Location) < VortexRadius * 0.8) )
{
Pawn(Victim).FearThisSpot(Self);
}

if (Victim.bIsPawn && Role == ROLE_Authority && Pawn(Victim).Health > 0 && bVictimInSight
&& VSize(Location - Victim.Location) < DamageRadius * 0.4 )
{
SetKillType(Instigator, Pawn(Victim));
Pawn(Victim).Health = -1000;
Pawn(Victim).Died(Instigator, MyDamageType, Victim.Location);
}
}
}
SplashDamage();




VortexGen.uc (extends DeusExPickup)

maxCopies=5
bCanHaveMultipleCopies=True
bActivatable=True
ItemName="Vortex Generator"
ItemArticle="an"
PlayerViewOffset=(X=20.000000,Y=10.000000,Z=-16.000000)
PlayerViewMesh=LodMesh'DeusExItems.MultitoolPOV'
PickupViewMesh=LodMesh'DeusExItems.Multitool'
ThirdPersonMesh=LodMesh'DeusExItems.Multitool3rd'
Icon=Texture'DeusExUI.Icons.BeltIconMultitool'
largeIcon=Texture'DeusExUI.Icons.LargeIconMultitool'
Description="This Tool generates a temporary powerful gravitational vortex, which will suck every human or robot within its reach.|n|n Before creating this vortex, be sure your allies are distant enough. The vortex is only able to identify its owner, therefore he is the only one who can stand unaffected near it. -- Deadalus08 "
beltDescription="VORTEX GEN"
Mesh=LodMesh'DeusExItems.Multitool'
CollisionRadius=4.800000
CollisionHeight=0.860000

Activate

BeginState


spawn(class'Vortex',Owner,,Owner.Location,DeusExPlayer(Owner).ViewRotation);

GotoState('DeActivated');
UseOnce();





WPGrenade.uc (extends GasGrenade)

DamageType=Flamed
spawnWeaponClass=Class'PartyStuff.WeaponWPGrenade'
ItemName="WP Grenade"
ImpactSound=Sound'DeusExSounds.Generic.SmallExplosion2'

DrawExplosionEffects (vector HitLocation, vector HitNormal)


local ExplosionLight light;
local ParticleGenerator gen;
local ExplosionSmall expeffect;


// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, HitLocation);
if (light != None)
{
light.RemoteRole = ROLE_None;
light.size = 12;
}

expeffect = Spawn(class'ExplosionSmall',,, HitLocation);
if (expeffect != None)
expeffect.RemoteRole = ROLE_None;

// create a particle generator shooting out white-hot fireballs
gen = Spawn(class'ParticleGenerator',,, HitLocation, Rotator(HitNormal));
if (gen != None)
{
gen.RemoteRole = ROLE_None;
gen.particleDrawScale = 1.0;
gen.checkTime = 0.05;
gen.frequency = 1.0;
gen.ejectSpeed = 200.0;
gen.bGravity = True;
gen.bRandomEject = True;
gen.particleTexture = Texture'Effects.Fire.FireballWhite';
gen.LifeSpan = 2.0;
}




WallHealer.uc (extends ElectronicDevices)

var() int healAmount;
var() int healRefreshTime;
var() int mphealRefreshTime;
var Float lastHealTime;
healAmount=300
healRefreshTime=15
mphealRefreshTime=15
bCanBeBase=True
ItemName="Medical Station"
Physics=PHYS_None
Mesh=LodMesh'DeusExItems.MedKit'
DrawScale=4.000000
MultiSkins(0)=Texture'PGAssets.Skins.iMed'
SoundRadius=8
SoundVolume=96
AmbientSound=Sound'Ambient.Ambient.HumLow3'
CollisionRadius=23.000000
CollisionHeight=5.000000
Mass=20.000000
Buoyancy=16.000000

CanHeal -> bool


return (Level.TimeSeconds - lastHealTime > healRefreshTime);

Frob (Actor Frobber, Inventory frobWith)


local DeusExPlayer player;
local DeusExRootWindow root;
local HUDMedBotAddAugsScreen winAug;
local HUDMedBotHealthScreen winHealth;
local AugmentationCannister augCan;


Super.Frob(Frobber, frobWith);

player = DeusExPlayer(Frobber);

if (CanHeal())
{
if ( Level.NetMode != NM_Standalone )
{
PlaySound(sound'MedicalHiss', SLOT_None,,, 256);
if ( Frobber.IsA('DeusExPlayer') )
{
DeusExPlayer(Frobber).StopPoison();
DeusExPlayer(Frobber).ExtinguishFire();
DeusExPlayer(Frobber).drugEffectTimer = 0;
}
}
HealPlayer(DeusExPlayer(Frobber));
}
else
{
Pawn(Frobber).ClientMessage("still charging, "$int(healRefreshTime - (Level.TimeSeconds - lastHealTime))$" seconds to go.");
}

GetRefreshTimeRemaining -> Float


return healRefreshTime - (Level.TimeSeconds - lastHealTime);

HealPlayer (DeusExPlayer player) -> int


local int healedPoints;


if (player != None)
{
healedPoints = player.HealPlayer(healAmount);
lastHealTime = Level.TimeSeconds;
}
return healedPoints;

PostBeginPlay


Super.PostBeginPlay();

if (Level.NetMode != NM_Standalone)
{
healRefreshTime = mpHealRefreshTime;
}




WaterCooler2.uc (extends DeusExDecoration)

var bool bUsing;
FragType=Class'DeusEx.PlasticFragment'
bCanBeBase=True
ItemName="Water Cooler"
bPushable=False
Mesh=LodMesh'DeusExDeco.WaterCooler'
CollisionRadius=14.070000
CollisionHeight=41.570000
Mass=70.000000
Buoyancy=100.000000

Destroyed


local Vector HitLocation, HitNormal, EndTrace;
local Actor hit;
local WaterPool pool;


// trace down about 20 feet if we're not in water
if (!Region.Zone.bWaterZone)
{
EndTrace = Location - vect(0,0,320);
hit = Trace(HitLocation, HitNormal, EndTrace, Location, False);
pool = spawn(class'WaterPool',,, HitLocation+HitNormal, Rotator(HitNormal));
if (pool != None)
pool.maxDrawScale = CollisionRadius / 20.0;
}

Super.Destroyed();

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);

if (bUsing)
return;

SetTimer(2.0, False);
bUsing = True;

// heal the frobber a small bit
if (DeusExPlayer(Frobber) != None)
DeusExPlayer(Frobber).HealPlayer(50);

PlayAnim('Bubble');
AmbientSound = sound'WaterBubbling';

Timer


bUsing = False;
AmbientSound = None;




WaterFountain2.uc (extends DeusExDecoration)

var bool bUsing;
ItemName="Water Fountain"
bPushable=False
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.WaterFountain'
CollisionRadius=20.000000
CollisionHeight=24.360001
Mass=70.000000
Buoyancy=100.000000

Frob (Actor Frobber, Inventory frobWith)


Super.Frob(Frobber, frobWith);

if (bUsing)
return;

SetTimer(2.0, False);
bUsing = True;

// heal the frobber a small bit
if (DeusExPlayer(Frobber) != None)
DeusExPlayer(Frobber).HealPlayer(50);

LoopAnim('Use');
AmbientSound = sound'WaterBubbling';

Timer


bUsing = False;
PlayAnim('Still');
AmbientSound = None;




WeaponAirget.uc (extends DeusExWeapon)

var float mpRecoilStrength;
var int muznum; //loop through muzzleflashes
var texture muztex; //sigh
var int airammo, rAirammo;
airammo=10
rAirammo=10
LowAmmoWaterMark=30
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
EnviroEffective=ENVEFF_Air
Concealability=CONC_Visual
bAutomatic=True
ShotTime=0.100000
reloadTime=3.000000
BaseAccuracy=0.000003
bHasScope=True
bCanHaveLaser=True
bHasLaser=True
bCanHaveSilencer=True
recoilStrength=0.500000
MinWeaponAcc=0.000002
mpReloadTime=0.500000
mpHitDamage=20
mpBaseAccuracy=0.000000
mpAccurateRange=2400
mpMaxRange=2400
mpReloadCount=20
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo762mm'
ReloadCount=20
PickupAmmoCount=60
bInstantHit=True
FireOffset=(X=-16.000000,Y=5.000000,Z=11.500000)
shakemag=200.000000
FireSound=Sound'DeusExSounds.Weapons.AssaultGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.AssaultGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.AssaultGunReload'
SelectSound=Sound'DeusExSounds.Weapons.AssaultGunSelect'
InventoryGroup=186
ItemName="Airget-Lamh B/V2"
PlayerViewOffset=(X=10.000000,Y=-5.000000,Z=-15.000000)
PlayerViewMesh=LodMesh'PGAssets.BRAssaultGun'
PickupViewMesh=LodMesh'PGAssets.BRAssaultGunPickup'
ThirdPersonMesh=LodMesh'PGAssets.BRAssaultGun3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'PGAssets.Icons.BeltIconSGAssault'
largeIcon=Texture'PGAssets.Icons.LargeSGAssaultIcon'
largeIconWidth=203
largeIconHeight=77
invSlotsX=2
invSlotsY=2
Description="The 7.62x51mm assault rifle is designed for close-quarters combat, utilizing a shortened barrel and 'bullpup' design for increased maneuverability. An additional underhand 20mm HE launcher increases the rifle's effectiveness against a variety of targets."
beltDescription="AIRGET"
Mesh=LodMesh'PGAssets.BRAssaultGunPickup'
CollisionRadius=15.000000
CollisionHeight=1.100000
Mass=30.000000

EraseMuzzleFlashTexture


local int i;


Muztex = none; //put this before the silencer check just in case we somehow add a silencer while mid shooting (it could happen!)
if(!bHasMuzzleflash || bHasSilencer)
return;

MultiSkins[2] = None;

GetMuzzleTex -> texture


local texture tex;


muznum++;
if(muznum > 7)
muznum = 0;
switch(muznum)
{
case 0: tex = texture'HDTPMuzzleflashlarge1'; break;
case 1: tex = texture'HDTPMuzzleflashlarge2'; break;
case 2: tex = texture'HDTPMuzzleflashlarge3'; break;
case 3: tex = texture'HDTPMuzzleflashlarge4'; break;
case 4: tex = texture'HDTPMuzzleflashlarge5'; break;
case 5: tex = texture'HDTPMuzzleflashlarge6'; break;
case 6: tex = texture'HDTPMuzzleflashlarge7'; break;
case 7: tex = texture'HDTPMuzzleflashlarge8'; break;
}
return tex;

LaserToggle


local vector v2;


v2 = Owner.location;
v2.z += 20;
if(AirAmmo >= 1)
{
Spawn(class'Rocket',Pawn(Owner),,v2,Pawn(Owner).ViewRotation);
AirAmmo -= 1;
rAirammo = AirAmmo;
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;

// Tuned for advanced -> master skill system (Monte & Ricardo's number) client-side
recoilStrength = 0.75;
}

RefreshScopeDisplay (DeusExPlayer player, bool bInstant, bool bScopeOn)


if (bScopeOn && (Player !=None))
{
DeusExPlayer(Owner).PlaySound(sound'Switch2ClickOn', SLOT_Talk,2,,1024,);
DeusExRootWindow(Player.RootWindow).HUD.AugDisplay.bVisionActive = True;
DeusExRootWindow(Player.RootWindow).HUD.AugDisplay.VisionLevel = 3;
DeusExRootWindow(Player.RootWindow).HUD.AugDisplay.VisionLevelValue = 28800;
}
else if (!bScopeOn)
{
DeusExPlayer(Owner).PlaySound(sound'Switch2ClickOff', SLOT_Talk,2,,1024,);
DeusExRootWindow(Player.RootWindow).HUD.AugDisplay.bVisionActive = False;
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local String KeyName, Alias, curKeyName;
local int i;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
if(muztex != none && multiskins[2] != muztex) //don't overwrite the muzzleflash..this is fucking ugly, but I think we can spare some comp cycles for shit like this
multiskins[2]=muztex;
else
multiskins[2]=none;

loc = P.Location;
loc.Z += P.BaseEyeHeight;
line = Vector(P.ViewRotation) * 90000;

Trace(hitLocation, hitNormal, loc+line, loc, true);
/*foreach P.TraceActors(class'Actor', CrosshairTarget, HitLocation, HitNormal, EndTrace, StartTrace)
{*/
Dist = Abs(VSize(HitLocation - P.Location));

//if ( Dist < MaxRange )
//{
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;
curKeyName = "";
for ( i=0; i<255; i++ )
{
KeyName = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyName != "" )
{
Alias = Owner.ConsoleCommand( "KEYBINDING "$KeyName );
if ( Alias ~= "ToggleLaser" )
{
curKeyName = KeyName;
break;
}
}
}
if ( curKeyName ~= "" )
curKeyName = "NONE";

Canvas.DrawText(" Alt Ammo: "$rAirAmmo$"/10 ["$curKeyName$"] - Distance: "$Left(Dist, Len(Dist)-7));
}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50
//

ScopeOff


if (bHasScope && bZoomed && (Owner != None) && Owner.IsA('DeusExPlayer'))
{
bZoomed = False;
RefreshScopeDisplay(DeusExPlayer(Owner), False, bZoomed);
}

ScopeOn


if (bHasScope && !bZoomed && (Owner != None) && Owner.IsA('DeusExPlayer'))
{
bZoomed = True;
RefreshScopeDisplay(DeusExPlayer(Owner), False, bZoomed);
}

SwapMuzzleFlashTexture


Muztex = GetMuzzleTex();
Multiskins[2] = Muztex;
MuzzleFlashLight();
SetTimer(0.1, False);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

Tick (float deltatime)


super.Tick(deltatime);

if(bZoomed)
{
DeusExPlayer(Owner).Energy -= 0.25;
if(DeusExPlayer(Owner).Energy <= 0)
{
ScopeOff();
}
}




WeaponAugrist.uc (extends WeaponNanoSword)

var() eChk Spell;*/
var() int spell, lve, lvl;
var() bool bLockState;
InventoryGroup=251
ItemName="Augrist"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="AUGRIST"
MultiSkins(1)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(2)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(4)=Texture'PGAssets.Skins.wtf'
MultiSkins(5)=Texture'PGAssets.Skins.wtf'
MultiSkins(6)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(7)=Texture'DeusExItems.Skins.PinkMaskTex'
LightEffect=LE_NonIncidence
LightHue=128

AugExp (int Spell)


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;
local DeusExPlayer DXP;

explosionDamage = 100;
explosionRadius = 1000;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;
sphere.Skin=FireTexture'Effects.Electricity.Virus_SFX';
sphere.Texture=FireTexture'Effects.Electricity.Virus_SFX';

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

if(Spell == 0) //Elec
{
foreach VisibleActors(class'DeusExPlayer', DXP, 150)
{
if(DXP != Owner)
{
DXP.TakeDamage(20*lvl,DeusExPlayer(Owner),DXP.Location,vect(0,0,1),'EMP');
}
}
}
else if(Spell == 1) //Flame
{
foreach VisibleActors(class'DeusExPlayer', DXP, 150)
{
if(DXP != Owner)
{
DXP.TakeDamage(20*lvl,DeusExPlayer(Owner),DXP.Location,vect(0,0,1),'Burned');
}
}
}
else if(Spell == 2) //Drain
{
foreach VisibleActors(class'DeusExPlayer', DXP, 150)
{
if(DXP != Owner)
{
DXP.TakeDamage(15*lvl,DeusExPlayer(Owner),DXP.Location,vect(0,0,1),'Special');
DeusExPlayer(Owner).HealPlayer(50, True);
}
}
}

BeginState


Super.BeginState();
LightType = LT_Steady;

CycleAmmo


local Augrist GA;


GA = Spawn(class'Augrist',,,Owner.Location);
GA.spell = spell;
GA.lve = lve;
GA.lvl = lvl;
Destroy();

EndState


Super.EndState();
LightType = LT_None;

EnergyUse (int i) -> bool


if(DeusExPlayer(Owner).Energy > i)
{
DeusExPlayer(Owner).Energy -= i;
return true;
}

Evolve (int i)


lve+=i;
if(lve >= 100*lvl)
{
DeusExPlayer(Owner).ClientMessage(ItemArticle@ItemName$" grows stronger...");
lvl++;
lve=0;
}

LaserToggle


if(Spell == 0 && !EnergyUse(10))
return;
if(Spell == 1 && !EnergyUse(20))
return;
if(Spell == 2 && !EnergyUse(40))
return;
AugExp(Spell);

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local int Bloodinc;

dxplayer = deusexplayer(other);
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);
if(Other.isa('Pawn') || Other.IsA('DeusExCarcass'))
{
Evolve(Rand(30));
return;
}



ScopeToggle


if(Spell == 0)
{
DeusExPlayer(Owner).ClientMessage("Flame spell active.");
Spell = 1;
return;
}
else if(Spell == 1)
{
DeusExPlayer(Owner).ClientMessage("Drain spell active.");
Spell = 2;
return;
}
else if(Spell == 2)
{
DeusExPlayer(Owner).ClientMessage("Electric spell active.");
Spell = 0;
return;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

Tick (float Deltatime)


super.Tick(deltatime);

LightHue++;
if(LightHue >= 255)
{
LightHue=0;
}
LightSaturation=126;


// DXP.TakeDamage(1, DeusExPlayer(Owner), DXP.Location, vect(0,0,0), 'EMP');




WeaponAugristReplica.uc (extends WeaponNanoSword)

InventoryGroup=251
ItemName="Augrist Replica"
ItemArticle="an"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="AUGRIST"
MultiSkins(1)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(2)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(4)=FireTexture'Effects.Electricity.Wepn_EMPG_SFX'
MultiSkins(5)=FireTexture'Effects.Electricity.Wepn_EMPG_SFX'
MultiSkins(6)=Texture'DeusExItems.Skins.PinkMaskTex'
MultiSkins(7)=Texture'DeusExItems.Skins.PinkMaskTex'
LightHue=128

AugExp


local SphereEffect sphere;
local ScorchMark s;
local ExplosionLight light;
local int i;
local float explosionDamage;
local float explosionRadius;


explosionDamage = 100;
explosionRadius = 1000;

// alert NPCs that I'm exploding
AISendEvent('LoudNoise', EAITYPE_Audio, , explosionRadius*16);
PlaySound(Sound'LargeExplosion1', SLOT_None,,, explosionRadius*16);

// draw a pretty explosion
light = Spawn(class'ExplosionLight',,, Location);
if (light != None)
light.size = 4;

Spawn(class'ExplosionSmall',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionMedium',,, Location + 2*VRand()*CollisionRadius);
Spawn(class'ExplosionLarge',,, Location + 2*VRand()*CollisionRadius);

sphere = Spawn(class'SphereEffect',,, Location);
if (sphere != None)
sphere.size = explosionRadius / 32.0;
sphere.Skin=FireTexture'Effects.Electricity.Virus_SFX';
sphere.Texture=FireTexture'Effects.Electricity.Virus_SFX';

// spawn a mark
s = spawn(class'ScorchMark', Base,, Location-vect(0,0,1)*CollisionHeight, Rotation+rot(16384,0,0));
if (s != None)
{
s.DrawScale = FClamp(explosionDamage/30, 0.1, 3.0);
s.ReattachDecal();
}

// spawn some rocks and flesh fragments
for (i=0; i {
if (FRand() < 0.3)
spawn(class'Rockchip',,,Location);
else
spawn(class'FleshFragment',,,Location);
}

DeusExPlayer(Owner).ReducedDamageType = 'Burned';
HurtRadius(explosionDamage, explosionRadius, 'Burned', explosionDamage*100, Location);

BeginState


Super.BeginState();
LightType = LT_Steady;

EndState


Super.EndState();
LightType = LT_None;

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBFG.uc (extends DeusExWeapon)

LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponHeavy'
NoiseLevel=2.000000
ShotTime=0.300000
reloadTime=0.000000
HitDamage=100
maxRange=24000
AccurateRange=14400
BaseAccuracy=0.600000
bHasMuzzleFlash=False
recoilStrength=1.000000
mpHitDamage=100
mpBaseAccuracy=0.600000
mpAccurateRange=14400
mpMaxRange=14400
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
FireOffset=(X=28.000000,Y=12.000000,Z=4.000000)
ProjectileClass=Class'PartyStuff.BFG'
shakemag=500.000000
FireSound=Sound'DeusExSounds.Weapons.LAWFire'
SelectSound=Sound'DeusExSounds.Weapons.LAWSelect'
InventoryGroup=16
ItemName="Big Fucking Gun (BFG)"
PlayerViewOffset=(X=18.000000,Y=-18.000000,Z=-7.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAW'
PickupViewMesh=LodMesh'DeusExItems.LAWPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAW3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconLAW'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAW'
largeIconWidth=166
largeIconHeight=47
invSlotsX=4
Description="The LAW provides cheap, dependable anti-armor capability in the form of an integrated one-shot rocket and delivery system, though at the expense of any laser guidance. Like other heavy weapons, the LAW can slow agents who have not trained with it extensively."
beltDescription="BFG"
Mesh=LodMesh'DeusExItems.LAWPickup'
CollisionRadius=25.000000
CollisionHeight=6.800000
Mass=50.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}




WeaponBantorain.uc (extends WeaponPistol)

var float mpRecoilStrength;
var MuzzleFlash flash;
var float mpNoScopeMult;
var() float Thick;
var() float PawnThick;
Thick=64.000000
PawnThick=32.000000
HitDamage=30
bHasScope=True
mpHitDamage=100
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=122
ItemName="Bantorain 93R"
ItemArticle="the"
beltDescription="BA 93R"
Mass=1.000000

Fire (float value)


Local Vector offset,x,y,z;
local rotator rot;

if (owner==none)
return;
else if (!bHasMuzzleFlash)
{
super.fire(value);
return;
}
GetAxes(pawn(owner).ViewRotation,x,y,z);
if (owner.IsA('DeusExPlayer'))
{
offset = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
rot=DeusExPlayer(owner).viewRotation;
}
else
{
offset= Owner.Location;
offset += X * Owner.CollisionRadius*2;
rot=owner.rotation;
}
Flash = spawn(class'muzzleflash',,,offset,rot);
if(flash!=none)
{
Flash.setbase(owner);
//Flash.playanim('shoot');
}
super.fire(value);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

TraceFire (float Accuracy)


local Vector HitLocation;
local Vector HitNormal;
local Vector StartTrace;
local Vector EndTrace;
local Vector X;
local Vector Y;
local Vector Z;
local Actor Other;
local Pawn PawnOwner;
local float Penetration;
local Rotator rot;


PawnOwner=Pawn(Owner);
Owner.MakeNoise(PawnOwner.SoundDampening);
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
StartTrace=Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
AdjustedAim=PawnOwner.AdjustAim(1000000.00,StartTrace,2 * aimerror,False,False);
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
X=vector(AdjustedAim);
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
rot = Rotator(EndTrace - StartTrace);
Spawn(class'Tracer',,, StartTrace + 96 * Vector(rot), rot);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);
if ( Other.IsA('Pawn') )
{
Penetration=PawnThick;
}
else
{
Penetration=Thick;
}
StartTrace=HitLocation + HitNormal + Penetration * X;
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);




WeaponBaton2.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
reloadTime=0.000000
HitDamage=7
maxRange=80
AccurateRange=80
BaseAccuracy=1.000000
bPenetrating=False
bHasMuzzleFlash=False
bHandToHand=True
bFallbackWeapon=True
bEmitWeaponDrawn=False
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-24.000000,Y=14.000000,Z=17.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.BatonFire'
SelectSound=Sound'DeusExSounds.Weapons.BatonSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.BatonHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.BatonHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.BatonHitSoft'
InventoryGroup=24
ItemName="Baton"
PlayerViewOffset=(X=24.000000,Y=-14.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.Baton'
PickupViewMesh=LodMesh'DeusExItems.BatonPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Baton3rd'
Icon=Texture'DeusExUI.Icons.BeltIconBaton'
largeIcon=Texture'DeusExUI.Icons.LargeIconBaton'
largeIconWidth=46
largeIconHeight=47
Description="A hefty looking baton, typically used by riot police and national security forces to discourage civilian resistance."
beltDescription="BATON"
Mesh=LodMesh'DeusExItems.BatonPickup'
CollisionRadius=14.000000
CollisionHeight=1.000000

Fire (Float value)


local Thrownbaton S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Throw)
{
S=Spawn(class'Thrownbaton',Pawn(Owner),,Location+vect(0,0,-2),DXPL.ViewRotation);
if(S!=None)
{
S.SetOwner(DXPL);
S.Lifespan=15;
}
Destroy();
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

WeaponDamageType -> name


return 'KnockedOut';

cycleammo


switch Mode
{
case MODE_Normal:
Mode = MODE_Throw;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Throwing mode");
break;

case MODE_Throw:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode");
break;

}




WeaponBeamRifle.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.LB2'
InventoryGroup=35
ItemName="Light Beam Rifle"
beltDescription="BEAM"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBeamRifleHeavy.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.LB3'
InventoryGroup=250
ItemName="Heavy Beam Rifle"
PlayerViewOffset=(X=46.000000,Y=-22.000000,Z=-10.000000)
PlayerViewMesh=LodMesh'DeusExItems.GEPGun'
PickupViewMesh=LodMesh'DeusExItems.GEPGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.GEPGun3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconGEPGun'
largeIcon=Texture'DeusExUI.Icons.LargeIconGEPGun'
largeIconWidth=203
largeIconHeight=77
invSlotsX=4
beltDescription="BEAM"

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBioRifle.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.GrayShoot'
InventoryGroup=111
ItemName="|P2Bio Assault Gun"
beltDescription="BIO"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBioRifleX.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.GrayShoot'
InventoryGroup=111
ItemName="|P2Bio Assault Gun"
ThirdPersonMesh=None
beltDescription="BIO"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBloodSword.uc (extends DeusExWeapon)

var int Blood, rBlood;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
reloadTime=0.000000
HitDamage=500
maxRange=96
AccurateRange=96
BaseAccuracy=1.000000
AreaOfEffect=AOE_Cone
bHasMuzzleFlash=False
bHandToHand=True
SwingOffset=(X=24.000000,Z=2.000000)
mpHitDamage=500
mpBaseAccuracy=1.000000
mpAccurateRange=150
mpMaxRange=150
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-21.000000,Y=16.000000,Z=27.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.NanoSwordFire'
SelectSound=Sound'DeusExSounds.Weapons.NanoSwordSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.NanoSwordHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.NanoSwordHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.NanoSwordHitSoft'
InventoryGroup=14
ItemName="Blood Sword"
ItemArticle="the"
PlayerViewOffset=(X=21.000000,Y=-16.000000,Z=-27.000000)
PlayerViewMesh=LodMesh'DeusExItems.NanoSword'
PickupViewMesh=LodMesh'DeusExItems.NanoSwordPickup'
ThirdPersonMesh=LodMesh'DeusExItems.NanoSword3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconDragonTooth'
largeIcon=Texture'DeusExUI.Icons.LargeIconDragonTooth'
largeIconWidth=205
largeIconHeight=46
invSlotsX=4
Description="Eviiiil."
beltDescription="BLOOD"
Physics=PHYS_Rotating
Rotation=(Pitch=900,Yaw=900,Roll=900)
Mesh=LodMesh'DeusExItems.NanoSwordPickup'
MultiSkins(1)=FireTexture'Effects.Laser.LaserSpot1'
MultiSkins(4)=FireTexture'Effects.liquid.Virus_SFX'
MultiSkins(5)=FireTexture'Effects.liquid.Virus_SFX'
MultiSkins(6)=FireTexture'Effects.Laser.LaserSpot1'
CollisionRadius=32.000000
CollisionHeight=2.400000
LightType=LT_SubtlePulse
LightEffect=LE_Interference
LightBrightness=224
LightRadius=10
Mass=20.000000
RotationRate=(Pitch=900,Yaw=900,Roll=900)

BeginState


Super.BeginState();
LightType = LT_Steady;

CycleAmmo

EndState


Super.EndState();
LightType = LT_None;

LaserToggle


if(Blood >= 200)
{
Blood -= 200;
rBlood = Blood;
Spawn(class'Ultima2',Pawn(Owner),,Pawn(Owner).Location,Pawn(Owner).ViewRotation);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local int Bloodinc;

dxplayer = deusexplayer(other);

if(Other.isa('Pawn') || Other.IsA('DeusExCarcass'))
{
if(DeusExPlayer(Owner).Health < 100)
{
DeusExPlayer(Owner).HealPlayer(HitDamage, True);
}
Bloodinc += RandRange(5,15);
}

super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);

Blood += Bloodinc;
rBlood = Blood;

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Pawn CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;


Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
StartTrace = ComputeProjectileStart(X, Y, Z);
AdjustedAim = P.AdjustAim(1000000, StartTrace, 2*AimError, False, False);
EndTrace = StartTrace + Accuracy * (FRand()-0.5)*Y*1000 + Accuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += (FMax(1024.0, MaxRange) * Vector(AdjustedAim));
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
Canvas.DrawColor.R = Rand(128);
Canvas.DrawColor.G = 0;
Canvas.DrawColor.B = 0;
Canvas.Font = Canvas.SmallFont;

Canvas.DrawText(" Blood: "$rBlood);
}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50

ScopeToggle


if(Blood >= 10)
{
Blood -= 10;
rBlood = Blood;
Spawn(class'Ultima',Pawn(Owner),,Pawn(Owner).Location,Pawn(Owner).ViewRotation);
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBoner.uc (extends DeusExWeapon)

var bool bStickyPayload;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=0.000000
HitDamage=8
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
bHasScope=True
ScopeFOV=25
bCanHaveLaser=True
bHasLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpHitDamage=30
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=8200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.Boner'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.MiniCrossbowFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=190
ItemName="Boner"
PlayerViewOffset=(X=22.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.Glock'
PickupViewMesh=LodMesh'DeusExItems.GlockPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Glock3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconPistol'
largeIconWidth=47
largeIconHeight=37
Description="Hot boner"
beltDescription="Boner"
Skin=Texture'PGAssets.boner3rdTex1'
Mesh=LodMesh'DeusExItems.Glock'
CollisionRadius=7.000000
CollisionHeight=1.000000
Mass=3.000000

LaserToggle


bStickyPayload = !bStickyPayload;
if(bStickyPayload)
{
DeusExPlayer(Owner).ClientMessage("Sticky Payload is armed!");
}
else
{
DeusExPlayer(Owner).ClientMessage("Sticky Payload is disarmed!");
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

RenderOverlays (canvas Canvas)


// set first person skin settings
MultiSkins[3]=Texture'BonerTex1';

Super.RenderOverlays( Canvas );

// reset third person skin settings
MultiSkins[0]=Texture'boner3rdTex1';

ScopeToggle


local BonerPayload BP;

DeusExPlayer(Owner).ClientMessage("Blown the load!!!!!!");
foreach AllActors(class'BonerPayload', BP)
{
if(BP.Payloader == DeusExPlayer(Owner))
{
BP.BlowLoad();
}
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponBoxGun.uc (extends WeaponLAW)

var int currentMode;
var Box currentBox;
var string cycleMessages[5];
var float createSize;
var travel Texture CurSkin;
var travel byte SkinMode;
cycleMessages(0)="Box Spawn Mode Activated"
cycleMessages(1)="Box Move Mode Activated"
cycleMessages(2)="Box Delete Mode Activated"
cycleMessages(3)="Box Size Mode Activated"
cycleMessages(4)="Box Skin Mode Activated"
createSize=1.000000
reloadTime=0.500000
PickupAmmoCount=10
bInstantHit=True
bWeaponStay=True
shakemag=0.000000
InventoryGroup=56
ItemName="Box Gun"
beltDescription="BOX"

GiveTo (pawn Other)


super.Giveto(Other);
CurSkin = Texture'CoreTexDetail.Detail.DStone_A';
Other.ClientMessage("SCOPE to change skin. AMMO CHANGE to change mode.");

PostBeginPlay


Super.PostBeginPlay();
if (Level.NetMode != NM_Standalone)
{
bWeaponStay = True;
if (bNeedToSetMPPickupAmmo)
{
PickupAmmoCount = PickupAmmoCount * 3;
bNeedToSetMPPickupAmmo = False;
}
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local vector spawnLocation;


if(currentMode == 0)
{
spawnLocation = HitLocation;

if(Box(Other) != None)
spawnLocation.Z += (Class'Box'.Default.CollisionHeight*createSize) / 2;

createBox(spawnLocation);
}
else if(currentMode == 1)
{
if(currentBox != None)
{
currentBox.bHidden = False;
currentBox.SetCollision(True, True, True);
currentBox.SetLocation(HitLocation);
currentBox.bMovable=False;
currentBox = None;
}
else
{
if(Box(Other) != None)
{
if(Box(Other).CreatedBy == DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName || DeusExPlayer(Owner).bAdmin)
{
currentBox.bMovable=True;
currentBox = Box(Other);
currentBox.SetCollision(False, False, False);
currentBox.bHidden = True;
}
}
}
}
else if(currentMode == 2)
{
if(Box(Other) != None)
{
if(Box(Other).CreatedBy == DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName || DeusExPlayer(Owner).bAdmin)
{
Box(Other).Destroy();
}
}
}
else if(currentMode == 3)
{
if(Box(Other) != None)
{
if(Box(Other).CreatedBy == DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName || DeusExPlayer(Owner).bAdmin)
{
if(currentBox != None)
{
currentBox.bHidden = False;
currentBox.SetCollision(True, True, True);
}
currentBox = Box(Other);
createSizeWindow();
}
}
}
else if(currentMode == 4)
{
if(Box(Other) != None)
{
if(Box(Other).CreatedBy == DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName || DeusExPlayer(Owner).bAdmin)
{
Box(Other).Multiskins[0] = CurSkin;
}
}
}

ScopeToggle


local DeusExplayer P;

P=DeusExPlayer(Owner);

if (SkinMode == 0)
{
SkinMode = 1;
CurSkin = Texture'DeusExDeco.Skins.AlarmLightTex3';
DeusExPlayer(Owner).Clientmessage("|P3Red Box");
return;
}
if (SkinMode == 1)
{
SkinMode = 2;
CurSkin = Texture'DeusExDeco.Skins.AlarmLightTex5';
DeusExPlayer(Owner).Clientmessage("|P3Green Box");
return;
}
if (SkinMode == 2)
{
SkinMode = 3;
CurSkin = Texture'DeusExDeco.Skins.AlarmLightTex7';
DeusExPlayer(Owner).Clientmessage("|P3Blue Box");
return;
}
if (SkinMode == 3)
{
SkinMode = 4;
CurSkin = Texture'DeusExDeco.Skins.AlarmLightTex9';
DeusExPlayer(Owner).Clientmessage("|P3Gold Box");
return;
}
if (SkinMode == 4)
{
SkinMode = 5;
CurSkin = Texture'Extras.Eggs.Matrix_A00';
DeusExPlayer(Owner).Clientmessage("|P3Matrix Box");
return;
}
if (SkinMode == 5)
{
SkinMode = 6;
CurSkin = Texture'Effects.water.bluewater_a';
DeusExPlayer(Owner).Clientmessage("|P3Water Box");
return;
}
if (SkinMode == 6)
{
SkinMode = 0;
CurSkin = Texture'CoreTexDetail.Detail.DStone_A';
DeusExPlayer(Owner).Clientmessage("|P3Default Box");
return;
}

createBox (vector spawnLocation)


local Box _newBox;

_newBox = Spawn (class'Box',,, spawnLocation);
if(_newBox != None)
{
_newBox.SetRotation(_newBox.Default.Rotation);
_newBox.DrawScale = _newBox.Default.DrawScale*createSize;
_newBox.Skin = CurSkin;
_newBox.Texture = CurSkin;
_newBox.Multiskins[0] = CurSkin;
_newBox.CreatedBy = DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName;
_newBox.SetCollisionSize(_newBox.Default.CollisionRadius*createSize,_newBox.Default.CollisionHeight*createSize);
}

createSizeWindow


local DeusExPlayer _Player;
local DeusExRootWindow _root;
local BoxSizeWindow _boxWindow;

_Player = DeusExPlayer(Owner);
if(_Player != None)
{
_Player.InitRootWindow();
_root = DeusExRootWindow(_Player.rootWindow);
if(_root != None)
{
_boxWindow = BoxSizeWindow(_root.InvokeUIScreen(Class'BoxSizeWindow', True));
if(_boxWindow != None)
{
_boxWindow._windowOwner = self;
}
}
}

cycleammo



if(currentMode == 3 && currentBox != None)
{
currentBox = None;
}

currentMode++;
if(currentMode > 4)
{
currentMode = 0;
}
DeusExPlayer(Owner).ClientMessage(cycleMessages[currentMode]);


setSize (float newSize, int sizeType)


if(newSize > 5)
newSize = 5.00000;

if(sizeType == 1 && currentBox != None)
{
currentBox.DrawScale = currentBox.Default.DrawScale*newSize;
currentBox.SetCollisionSize(currentBox.Default.CollisionRadius*newSize,currentBox.Default.CollisionHeight*newSize);
}
else if(sizeType == 2)
{
createSize = newSize;
}




WeaponBurnRifle.uc (extends DeusExWeapon)

var float mpNoScopeMult;
mpNoScopeMult=0.350000
LowAmmoWaterMark=6
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
NoiseLevel=2.000000
ShotTime=1.500000
reloadTime=2.000000
HitDamage=25
maxRange=48000
AccurateRange=28800
bCanHaveScope=True
bHasScope=True
bCanHaveLaser=True
bCanHaveSilencer=True
bHasMuzzleFlash=False
recoilStrength=0.400000
bUseWhileCrouched=False
mpReloadTime=2.000000
mpHitDamage=25
mpAccurateRange=28800
mpMaxRange=28800
mpReloadCount=6
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo3006'
ReloadCount=6
PickupAmmoCount=6
FireOffset=(X=-20.000000,Y=2.000000,Z=30.000000)
ProjectileClass=Class'PartyStuff.FireBolt'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=5
ItemName="Burn Rifle"
PlayerViewOffset=(X=20.000000,Y=-2.000000,Z=-30.000000)
PlayerViewMesh=LodMesh'DeusExItems.SniperRifle'
PickupViewMesh=LodMesh'DeusExItems.SniperRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.SniperRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconRifle'
largeIconWidth=159
largeIconHeight=47
invSlotsX=4
Description="The military sniper rifle is the superior tool for the interdiction of long-range targets. When coupled with the proven 30.06 round, a marksman can achieve tight groupings at better than 1 MOA (minute of angle) depending on environmental conditions."
beltDescription="SNIPER"
Mesh=LodMesh'DeusExItems.SniperRiflePickup'
CollisionRadius=26.000000
CollisionHeight=2.000000
Mass=30.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
bHasMuzzleFlash = True;
ReloadCount = 1;
ReloadTime = ShotTime;
}




WeaponClaymore.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="Laser"
LowAmmoWaterMark=2
GoverningSkill=Class'DeusEx.SkillDemolition'
Concealability=CONC_All
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
mpPickupAmmoCount=6
AmmoName=Class'PartyStuff.AmmoClaymore'
ReloadCount=1
PickupAmmoCount=6
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.ClaymoreProj'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=77
ItemName="Claymore Laser Mine"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="Places a deadly laser wire that will instantly kill anything that touches it"
beltDescription="CLAY"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


// if facing a wall, affix the LAM to the wall
if (Pawn(Owner) != None)
{
if (!NearWallCheck())
{
DeusExPlayer(Owner).bJustFired = False;
bReadyToFire = True;
bPointing = False;
bFiring = False;
GotoState('Idle');
DeusExPlayer(Owner).ConsoleCommand("ThrowWeapon");
return;
}
else
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.0);
return;
}
}

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponCombatKnife2.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
Concealability=CONC_Visual
reloadTime=0.000000
HitDamage=5
maxRange=80
AccurateRange=80
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bFallbackWeapon=True
mpHitDamage=20
mpBaseAccuracy=1.000000
mpAccurateRange=96
mpMaxRange=96
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-5.000000,Y=8.000000,Z=14.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.CombatKnifeFire'
SelectSound=Sound'DeusExSounds.Weapons.CombatKnifeSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitSoft'
InventoryGroup=11
ItemName="Combat Knife"
PlayerViewOffset=(X=5.000000,Y=-8.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.CombatKnife'
PickupViewMesh=LodMesh'DeusExItems.CombatKnifePickup'
ThirdPersonMesh=LodMesh'DeusExItems.CombatKnife3rd'
Icon=Texture'DeusExUI.Icons.BeltIconCombatKnife'
largeIcon=Texture'DeusExUI.Icons.LargeIconCombatKnife'
largeIconWidth=49
largeIconHeight=45
Description="An ultra-high carbon stainless steel knife."
beltDescription="KNIFE"
Mesh=LodMesh'DeusExItems.CombatKnifePickup'
CollisionRadius=12.650000
CollisionHeight=0.800000

Fire (Float value)


local ThrownCombatKnife S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Throw)
{
S=Spawn(class'ThrownCombatKnife',Pawn(Owner),,Location+vect(0,0,-2),DXPL.ViewRotation);
if(S!=None)
{
S.SetOwner(DXPL);
S.Lifespan=15;
}
Destroy();
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

cycleammo


switch Mode
{
case MODE_Normal:
Mode = MODE_Throw;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Throwing mode");
break;

case MODE_Throw:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode");
break;

}




WeaponCoyote.uc (extends DeusExWeapon)

LowAmmoWaterMark=4
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
EnviroEffective=ENVEFF_Air
Concealability=CONC_Visual
ShotTime=0.300000
reloadTime=5.000000
HitDamage=30
maxRange=2400
AccurateRange=1200
BaseAccuracy=0.600000
AmmoNames(0)=Class'DeusEx.AmmoShell'
AmmoNames(1)=Class'DeusEx.AmmoSabot'
AreaOfEffect=AOE_Cone
recoilStrength=0.500000
mpReloadTime=0.500000
mpHitDamage=30
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
mpReloadCount=3
mpPickupAmmoCount=12
bCanHaveModReloadCount=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.AmmoShell'
ReloadCount=3
PickupAmmoCount=12
bInstantHit=True
FireOffset=(X=-11.000000,Y=4.000000,Z=13.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.SawedOffShotgunFire'
AltFireSound=Sound'DeusExSounds.Weapons.SawedOffShotgunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.SawedOffShotgunReload'
SelectSound=Sound'DeusExSounds.Weapons.SawedOffShotgunSelect'
InventoryGroup=6
ItemName="Coyote M17F"
ItemArticle="the"
PlayerViewOffset=(X=11.000000,Y=-4.000000,Z=-13.000000)
PlayerViewMesh=LodMesh'DeusExItems.Shotgun'
PickupViewMesh=LodMesh'DeusExItems.ShotgunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Shotgun3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconShotgun'
largeIcon=Texture'DeusExUI.Icons.LargeIconShotgun'
largeIconWidth=131
largeIconHeight=45
invSlotsX=3
Description="The sawed-off, pump-action shotgun features a truncated barrel resulting in a wide spread at close range and will accept either buckshot or sabot shells."
beltDescription="COYOTE"
Mesh=LodMesh'DeusExItems.ShotgunPickup'
CollisionRadius=12.000000
CollisionHeight=0.900000
Mass=15.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
PickupAmmoCount = 12; //to match assaultshotgun
}




WeaponCrowbar2.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
reloadTime=0.000000
HitDamage=6
maxRange=80
AccurateRange=80
BaseAccuracy=1.000000
bPenetrating=False
bHasMuzzleFlash=False
bHandToHand=True
bFallbackWeapon=True
bEmitWeaponDrawn=False
mpHitDamage=12
mpBaseAccuracy=1.000000
mpAccurateRange=96
mpMaxRange=96
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-40.000000,Y=15.000000,Z=8.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.CrowbarFire'
SelectSound=Sound'DeusExSounds.Weapons.CrowbarSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.CrowbarHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.CrowbarHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.CrowbarHitSoft'
InventoryGroup=10
ItemName="Crowbar"
PlayerViewOffset=(X=40.000000,Y=-15.000000,Z=-8.000000)
PlayerViewMesh=LodMesh'DeusExItems.Crowbar'
PickupViewMesh=LodMesh'DeusExItems.CrowbarPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Crowbar3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconCrowbar'
largeIcon=Texture'DeusExUI.Icons.LargeIconCrowbar'
largeIconWidth=101
largeIconHeight=43
invSlotsX=2
Description="A crowbar. Hit someone or something with it. Repeat.|n|n Many crowbars we call 'murder of crowbars.' Always have one for kombat. Ha. -- Gunther Hermann "
beltDescription="CROWBAR"
Mesh=LodMesh'DeusExItems.CrowbarPickup'
CollisionRadius=19.000000
CollisionHeight=1.050000
Mass=15.000000

Fire (Float value)


local ThrownCrowbar S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Throw)
{
S=Spawn(class'ThrownCrowbar',Pawn(Owner),,Location+vect(0,0,-2),DXPL.ViewRotation);
if(S!=None)
{
S.SetOwner(DXPL);
S.Lifespan=15;
}
Destroy();
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

cycleammo


switch Mode
{
case MODE_Normal:
Mode = MODE_Throw;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Throwing mode");
break;

case MODE_Throw:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode");
break;

}




WeaponDRR.uc (extends WeaponAssaultGun)

AmmoNames(0)=None
AmmoNames(1)=None
ProjectileNames(1)=None
bInstantHit=False
ProjectileClass=Class'PartyStuff.RocketDrone'
InventoryGroup=116
ItemName="Automatic Drone Rocket Rifle"
beltDescription="DRR"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponDePressurizer.uc (extends DeusExWeapon)

LowAmmoWaterMark=12
GoverningSkill=Class'DeusEx.SkillWeaponHeavy'
reloadTime=2.000000
HitDamage=35
maxRange=24000
AccurateRange=14400
BaseAccuracy=0.600000
bCanHaveScope=True
bHasScope=True
ScopeFOV=20
bCanHaveLaser=True
bHasLaser=True
AreaOfEffect=AOE_Cone
bPenetrating=False
recoilStrength=0.300000
mpReloadTime=0.200000
mpHitDamage=50
mpBaseAccuracy=1.500000
mpAccurateRange=9000
mpMaxRange=10000
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
ReloadCount=0
ProjectileClass=Class'PartyStuff.PBeam'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.PlasmaRifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.PlasmaRifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PlasmaRifleReload'
SelectSound=Sound'DeusExSounds.Weapons.PlasmaRifleSelect'
InventoryGroup=8
ItemName="De-Pressurizer"
PlayerViewOffset=(X=18.000000,Z=-7.000000)
PlayerViewMesh=LodMesh'DeusExItems.PlasmaRifle'
PickupViewMesh=LodMesh'DeusExItems.PlasmaRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.PlasmaRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconPlasmaRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconPlasmaRifle'
largeIconWidth=203
largeIconHeight=66
invSlotsX=4
invSlotsY=2
Description="A weapon made with TOP-SECRET technology from labs."
beltDescription="DPGUN"
Mesh=LodMesh'DeusExItems.PlasmaRiflePickup'
CollisionRadius=15.600000
CollisionHeight=5.200000
Mass=1.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponDildo.uc (extends WeaponBaton)

var Name WeaponDamageType;
var bool bHard;
WeaponDamageType=exploded
mpHitDamage=25
mpBaseAccuracy=1.000000
mpAccurateRange=150
mpMaxRange=150
InventoryGroup=141
ItemName="Dildo"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="DILDO"
Skin=Texture'PGAssets.Skins.DildoTex1'
Fatness=180
MultiSkins(0)=Texture'PGAssets.Skins.DildoTex1'
Mass=20.000000

DropFrom (vector StartLocation)


if(bHard)
{
DeusExPlayer(Owner).ClientMessage("Your hand has gripped the dildo too hard.");
}
else
{
super.DropFrom(startLocation);
}

ScopeToggle


if(!bHard)
{
mpHitDamage=100;
mpMaxRange=300;
HitDamage=100;
MaxRange=300;
DeusExPlayer(Owner).ClientMessage("Dildo hardened.");
bHard=True;
}
else
{
mpHitDamage=25;
HitDamage=25;
MaxRange=150;
mpMaxRange=150;
bHard=False;
DeusExPlayer(Owner).ClientMessage("Dildo went soft.");
}

Timer


mpHitDamage=25;
mpMaxRange=150;
bHard=False;
DeusExPlayer(Owner).ClientMessage("Dildo went soft.");





WeaponDisarmer.uc (extends WeaponPistol)

ShotTime=0.100000
HitDamage=5
BaseAccuracy=0.000000
ReloadCount=0
PickupAmmoCount=0
FireSound=Sound'DeusExSounds.Generic.Beep1'
InventoryGroup=117
ItemName="Arrester gun"
ItemArticle="the"
Description="A Pistol that charges up it's projectile and that projectile can disarm any person immediately."
beltDescription="PP"

PreBeginPlay


return;

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local DeusExWeapon W;
local JailPoint JP;
local bool bFoundJail;
local int Jails;
local int Decider;

super.ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);
if(Other.IsA('Pawn'))
{


foreach allactors(class'DeusExWeapon',W)
{
if(W.Owner == Other)
{
W.Destroy();
}
}

}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponDragonsClaw.uc (extends WeaponNanoSword)

var Name WeaponDamageType;
mpHitDamage=5
InventoryGroup=109
ItemName="Dragon's Claw"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
MultiSkins(1)=FireTexture'Effects.Fire.flmethrwr_fire'
MultiSkins(2)=FireTexture'Effects.Fire.flmethrwr_fire'
MultiSkins(4)=FireTexture'Effects.Fire.flmethrwr_fire'
MultiSkins(5)=FireTexture'Effects.Fire.flmethrwr_fire'
MultiSkins(6)=FireTexture'Effects.Fire.flmethrwr_fire'
LightHue=40

BeginState


Super.BeginState();
LightType = LT_Steady;

EndState


Super.EndState();
LightType = LT_None;


ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;


if (Other != None)
{
// AugCombat increases our damage if hand to hand
mult = 1.0;
if (bHandToHand && (DeusExPlayer(Owner) != None))
{
mult = DeusExPlayer(Owner).AugmentationSystem.GetAugLevelValue(class'AugCombat');
if (mult == -1.0)
mult = 1.0;
}

// skill also affects our damage
// GetWeaponSkill returns 0.0 to -0.7 (max skill/aug)
mult += -2.0 * GetWeaponSkill();

// Determine damage type
damageType = WeaponDamageType;

if (Other != None)
{
if (Other.bOwned)
{
dxPlayer = DeusExPlayer(Owner);
if (dxPlayer != None)
dxPlayer.AISendEvent('Futz', EAITYPE_Visual);
}
}
if ((Other == Level) || (Other.IsA('Mover')))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);

SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);
}
else if ((Other != self) && (Other != Owner))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);
if (bHandToHand)
SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);

if (bPenetrating && Other.IsA('Pawn') && !Other.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
}
}
if (DeusExMPGame(Level.Game) != None)
{
if (DeusExPlayer(Other) != None)
DeusExMPGame(Level.Game).TrackWeapon(self,HitDamage * mult);
else
DeusExMPGame(Level.Game).TrackWeapon(self,0);
}




WeaponDroneGrenade.uc (extends WeaponEMPGrenade)

AmmoName=Class'PartyStuff.AmmoDG'
ProjectileClass=Class'PartyStuff.DroneGrenade'
InventoryGroup=35
ItemName="Drone Grenade"
ItemArticle="a"
Description="A Droner.."
beltDescription="DRONE"
MultiSkins(4)=Texture'DeusExDeco.Skins.AlarmLightTex3'

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

ProjectileFire (class ProjClass, float ProjSpeed, bool bWarn) -> Projectile


local Projectile proj;


proj = Super.ProjectileFire(ProjClass, ProjSpeed, bWarn);

if (proj != None)
proj.PlayAnim('Open');

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 4);




WeaponEnergyAssault.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.BB'
InventoryGroup=255
ItemName="|P5Charged Energy Rifle"
beltDescription="ENERGY"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponFRK1.uc (extends WeaponNPCMelee)

ShotTime=0.100000
HitDamage=15
maxRange=120
AccurateRange=120
BaseAccuracy=0.000000
bFallbackWeapon=True
ProjectileClass=Class'DeusEx.Rocket'
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'



WeaponFRK2.uc (extends WeaponNPCRanged)

ShotTime=0.100000
HitDamage=15
maxRange=80
AccurateRange=80
BaseAccuracy=0.000000
AITimeLimit=10.000000
AIFireDelay=8.000000
ProjectileClass=Class'DeusEx.RocketWP'
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'



WeaponFatten.uc (extends DeusExWeapon)

GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
mpReloadCount=12
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
AmmoName=Class'DeusEx.Ammo10mm'
PickupAmmoCount=10
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=128
ItemName="Fatness Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="FAT"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local Pawn P;
local PSFattener PSF;


if( Other.isA('Decoration') || Other.isA('Pawn') )
{
foreach AllActors(class'PSFattener',PSF)
{
if(PSF.Fattener == Pawn(Other))
{
DeusExPlayer(Owner).ClientMessage("Fattener already attached.");
return;
}
}

if(DeusExPlayer(Other).ReducedDamageType == 'All')
{
DeusExPlayer(Owner).ClientMessage("God mode blocks the fattener.");
return;
}
PSF = Spawn( class'PSFattener',Owner,,Other.Location);
PSF.Fattener = Other;
DeusExPlayer(Owner).ClientMessage("Fattener attached to "$GetDisplayString(Other)$".");
return;
}

super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponFlashBang.uc (extends WeaponEMPGrenade)

AmmoName=Class'PartyStuff.AmmoFlashBang'
PickupAmmoCount=2
ProjectileClass=Class'PartyStuff.FlashBang'
InventoryGroup=118
ItemName="Flash Bang Grenade"
ItemArticle="a"
beltDescription="Flash"
MultiSkins(4)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(5)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(6)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(7)=FireTexture'Effects.UserInterface.WhiteStatic'

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

ProjectileFire (class ProjClass, float ProjSpeed, bool bWarn) -> Projectile


local Projectile proj;


proj = Super.ProjectileFire(ProjClass, ProjSpeed, bWarn);

if (proj != None)
proj.PlayAnim('Open');

TestMPBeltSpot (int BeltSpot) -> bool


return ((BeltSpot <= 9) && (BeltSpot >= 1));




WeaponFreezeGrenade.uc (extends WeaponEMPGrenade)

AmmoName=Class'PartyStuff.AmmoFreezeGrenade'
PickupAmmoCount=2
ProjectileClass=Class'PartyStuff.FreezeGrenade'
InventoryGroup=118
ItemName="Icer Grenade"
beltDescription="Freeze"
MultiSkins(4)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(5)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(6)=FireTexture'Effects.UserInterface.WhiteStatic'
MultiSkins(7)=FireTexture'Effects.UserInterface.WhiteStatic'

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

ProjectileFire (class ProjClass, float ProjSpeed, bool bWarn) -> Projectile


local Projectile proj;


proj = Super.ProjectileFire(ProjClass, ProjSpeed, bWarn);

if (proj != None)
proj.PlayAnim('Open');

TestMPBeltSpot (int BeltSpot) -> bool


return ((BeltSpot <= 3) && (BeltSpot >= 1));




WeaponFrostRifle.uc (extends DeusExWeapon)

var float mpNoScopeMult;
mpNoScopeMult=0.350000
LowAmmoWaterMark=6
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
NoiseLevel=2.000000
ShotTime=1.500000
reloadTime=2.000000
HitDamage=25
maxRange=48000
AccurateRange=28800
bCanHaveScope=True
bHasScope=True
bCanHaveLaser=True
bCanHaveSilencer=True
bHasMuzzleFlash=False
recoilStrength=0.400000
bUseWhileCrouched=False
mpReloadTime=2.000000
mpHitDamage=25
mpAccurateRange=28800
mpMaxRange=28800
mpReloadCount=6
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo3006'
ReloadCount=6
PickupAmmoCount=6
FireOffset=(X=-20.000000,Y=2.000000,Z=30.000000)
ProjectileClass=Class'PartyStuff.FreezeBolt'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=5
ItemName="Freeze Rifle"
PlayerViewOffset=(X=20.000000,Y=-2.000000,Z=-30.000000)
PlayerViewMesh=LodMesh'DeusExItems.SniperRifle'
PickupViewMesh=LodMesh'DeusExItems.SniperRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.SniperRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconRifle'
largeIconWidth=159
largeIconHeight=47
invSlotsX=4
Description="The military sniper rifle is the superior tool for the interdiction of long-range targets. When coupled with the proven 30.06 round, a marksman can achieve tight groupings at better than 1 MOA (minute of angle) depending on environmental conditions."
beltDescription="SNIPER"
Mesh=LodMesh'DeusExItems.SniperRiflePickup'
CollisionRadius=26.000000
CollisionHeight=2.000000
Mass=30.000000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
bHasMuzzleFlash = True;
ReloadCount = 1;
ReloadTime = ShotTime;
}




WeaponGPF.uc (extends DeusExWeapon)

GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=68
ItemName="GPF Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="GPF"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

CalculateAccuracy -> float

eturn 0.000000; //Dirty hack to always return dead on accuracy

LaserToggle

PreBeginPlay

uper.PreBeginPlay()

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)

f(Other.isa('DeusExPlayer') && DeusExPlayer(Owner).bAdmin)

ScopeToggle

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponGunganir.uc (extends DeusExWeapon)

var float mpNoScopeMult;
var float ZoomScale,ZoomInc,
var bool bSilenced;
var() float Thick;
var() float PawnThick;
mpNoScopeMult=0.350000
ZoomScale=1.000000
ZoomInc=0.100000
MaxScale=1.000000
MinScale=0.100000
Thick=64.000000
PawnThick=32.000000
LowAmmoWaterMark=6
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
NoiseLevel=2.000000
EnviroEffective=ENVEFF_Air
ShotTime=2.500000
reloadTime=5.000000
HitDamage=100
maxRange=48000
AccurateRange=28800
bCanHaveScope=True
bHasScope=True
bCanHaveLaser=True
bCanHaveSilencer=True
bHasMuzzleFlash=False
recoilStrength=0.400000
bUseWhileCrouched=False
mpReloadTime=5.000000
mpHitDamage=100
mpAccurateRange=28800
mpMaxRange=28800
mpReloadCount=3
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo3006'
ReloadCount=6
PickupAmmoCount=6
bInstantHit=True
FireOffset=(X=-20.000000,Y=2.000000,Z=30.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=5
ItemName="Gunganir HAG35"
ItemArticle="the"
PlayerViewOffset=(X=20.000000,Y=-2.000000,Z=-30.000000)
PlayerViewMesh=LodMesh'DeusExItems.SniperRifle'
PickupViewMesh=LodMesh'DeusExItems.SniperRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.SniperRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconRifle'
largeIconWidth=159
largeIconHeight=47
invSlotsX=4
Description="The military sniper rifle is the superior tool for the interdiction of long-range targets. When coupled with the proven 30.06 round, a marksman can achieve tight groupings at better than 1 MOA (minute of angle) depending on environmental conditions."
beltDescription="HAG35"
Mesh=LodMesh'DeusExItems.SniperRiflePickup'
CollisionRadius=26.000000
CollisionHeight=2.000000
Mass=30.000000

AltFire (float Value)


if(bHasSilencer)
{
DeusExPlayer(Owner).ClientMessage("Silencer off");
bHasSilencer = False;
BaseAccuracy=Default.BaseAccuracy;
HitDamage = Default.HitDamage;
bSilenced=False;
}
else
{
DeusExPlayer(Owner).ClientMessage("Silencer on");
bHasSilencer = True;
BaseAccuracy=0.000001;
HitDamage = 100;
bSilenced=True;
}

CycleAmmo


ZoomOff();
ScopeOff();
DisableScope();
ZoomScale=MaxScale;
bZoomed=False;
UpdateScope(ScopeFOV,bZoomed);

DisableScope


ScopeOff();

Fire (float value)


Local Vector offset,x,y,z;
local rotator rot;

if (owner==none)
return;
else if (!bHasMuzzleFlash)
{
super.fire(value);
return;
}
GetAxes(pawn(owner).ViewRotation,x,y,z);
if (owner.IsA('DeusExPlayer'))
{
offset = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
rot=DeusExPlayer(owner).viewRotation;
}
else
{
offset= Owner.Location;
offset += X * Owner.CollisionRadius*2;
rot=owner.rotation;
}
Flash = spawn(class'muzzleflash',,,offset,rot);
if(flash!=none)
{
Flash.setbase(owner);
//Flash.playanim('shoot');
}
super.fire(value);

LaserToggle


ZoomOut();

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
bHasMuzzleFlash = True;
ReloadCount = 3;
ReloadTime = ShotTime;
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local Actor CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local vector loc, line;
local string str;


Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
/*GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
StartTrace = ComputeProjectileStart(X, Y, Z);
AdjustedAim = P.AdjustAim(1000000, StartTrace, 2*AimError, False, False);
EndTrace = StartTrace + Accuracy * (FRand()-0.5)*Y*1000 + Accuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += (FMax(1024.0, MaxRange) * Vector(AdjustedAim));*/
loc = P.Location;
loc.Z += P.BaseEyeHeight;
line = Vector(P.ViewRotation) * 90000;

Trace(hitLocation, hitNormal, loc+line, loc, true);
/*foreach P.TraceActors(class'Actor', CrosshairTarget, HitLocation, HitNormal, EndTrace, StartTrace)
{*/
Dist = Abs(VSize(HitLocation - P.Location));

//if ( Dist < MaxRange )
//{
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 250;
Canvas.DrawColor.B = 255;
Canvas.Font = Canvas.SmallFont;
//Canvas.DrawIcon(Texture'DeusExUI.UserInterface.AugIcontarget_Small', Scale);
//Canvas.bCenter=True;
if(bSilenced)
str = " - Silenced";
Canvas.DrawText(" ["$Left(ZoomScale, Len(ZoomScale)-5)$"] Distance: "$Left(Dist, Len(Dist)-7)$str);
//Canvas.DrawPortal(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale , 30, 30, CrosshairTarget, CrosshairTarget.Location, CrosshairTarget.Rotation);
}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50
//

ScopeOff


ZoomOff();
UpdateScope(ScopeFOV,False);

ScopeToggle


ZoomIn();

TraceFire (float Accuracy)


local Vector HitLocation;
local Vector HitNormal;
local Vector StartTrace;
local Vector EndTrace;
local Vector X;
local Vector Y;
local Vector Z;
local Actor Other;
local Pawn PawnOwner;
local float Penetration;
local Rotator rot;


PawnOwner=Pawn(Owner);
Owner.MakeNoise(PawnOwner.SoundDampening);
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
StartTrace=Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
AdjustedAim=PawnOwner.AdjustAim(1000000.00,StartTrace,2 * aimerror,False,False);
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
X=vector(AdjustedAim);
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
rot = Rotator(EndTrace - StartTrace);
Spawn(class'Tracer',,, StartTrace + 96 * Vector(rot), rot);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);
if ( Other.IsA('Pawn') )
{
Penetration=PawnThick;
}
else
{
Penetration=Thick;
}
StartTrace=HitLocation + HitNormal + Penetration * X;
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);

UpdateScope (float FOV, bool bShow)


bZoomed=bShow;
ScopeFOV=FOV;

RefreshScopeDisplay(DeusExPlayer(Owner), False, bZoomed);

ZoomIn -> bool


bZoomed=True;

ZoomScale-=ZoomInc;

if(ZoomScale ZoomScale=MinScale;
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,True);

return bZoomed;

ZoomOff


if(bHasScope && bZoomed && (Owner != None) && Owner.IsA('DeusExPlayer'))
{
bZoomed = False;
ZoomScale=MaxScale;
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,False);
}

ZoomOut -> bool


if(bZoomed)
{
ZoomScale+=ZoomInc;
if(ZoomScale>MaxScale)
{
ZoomScale=MaxScale;
bZoomed=False;
}
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,bZoomed);
}

return bZoomed;




WeaponHeavyBeamSword.uc (extends WeaponNanoSword)

var Name WeaponDamageType;
WeaponDamageType=exploded
InventoryGroup=135
ItemName="Heavy Beam Sword"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="HEAVY"
Fatness=255

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;


if (Other != None)
{
// AugCombat increases our damage if hand to hand
mult = 1.0;
if (bHandToHand && (DeusExPlayer(Owner) != None))
{
mult = DeusExPlayer(Owner).AugmentationSystem.GetAugLevelValue(class'AugCombat');
if (mult == -1.0)
mult = 1.0;
}

// skill also affects our damage
// GetWeaponSkill returns 0.0 to -0.7 (max skill/aug)
mult += -2.0 * GetWeaponSkill();

// Determine damage type
damageType = WeaponDamageType;

if (Other != None)
{
if (Other.bOwned)
{
dxPlayer = DeusExPlayer(Owner);
if (dxPlayer != None)
dxPlayer.AISendEvent('Futz', EAITYPE_Visual);
}
}
if ((Other == Level) || (Other.IsA('Mover')))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);

SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);
}
else if ((Other != self) && (Other != Owner))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);
if (bHandToHand)
SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);

if (bPenetrating && Other.IsA('Pawn') && !Other.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
}
}
if (DeusExMPGame(Level.Game) != None)
{
if (DeusExPlayer(Other) != None)
DeusExMPGame(Level.Game).TrackWeapon(self,HitDamage * mult);
else
DeusExMPGame(Level.Game).TrackWeapon(self,0);
}




WeaponHellBite.uc (extends WeaponNPCMelee)

ShotTime=0.100000
HitDamage=30
maxRange=120
AccurateRange=120
BaseAccuracy=0.000000
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'



WeaponHostageDevice.uc (extends WeaponStealthPistol)

var int currentMode;
var string cycleMessages[6];
var Pawn hostage;
cycleMessages(0)="Take Hostage"
cycleMessages(1)="Release Hostage"
cycleMessages(2)="Teleport to Hostage"
cycleMessages(3)="Summon Hostage"
cycleMessages(4)="Kill Hostage"
cycleMessages(5)="Cheat View Hostage"
ShotTime=0.100000
HitDamage=0
BaseAccuracy=0.000000
ReloadCount=0
PickupAmmoCount=0
FireSound=Sound'DeusExSounds.Generic.Beep1'
InventoryGroup=201
ItemName="Hostage Device"
PickupViewMesh=LodMesh'DeusExItems.Multitool'
ThirdPersonMesh=LodMesh'DeusExItems.Multitool3rd'
Icon=Texture'DeusExUI.Icons.BeltIconMultitool'
largeIcon=None
Description="An interesting device..."
beltDescription="HOSTAGE"

GetDisplayString (Pawn P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;

GiveTo (pawn Other)


super.Giveto(Other);
super.GiveAmmo(Other);
hostage = none;
currentMode = 0;
Other.ClientMessage("|P3Press Ammochange to cycle through the modes");


PreBeginPlay


return;

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local DeusExWeapon W;
local Pawn P;
local vector hostageLocation;
local string checkedhostage;



if(currentMode == 0)
{
//Hooking
Other = Pawn(Other);
if(hostage != none)
{
if(Other != None)
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{
checkedhostage = GetDisplayString(P);
DeusExPlayer(Owner).ClientMessage("|P3Current hostage will be released: "$checkedhostage,'TeamSay');
}
}
}
}

if(Other != None)
{
if(Other.isA('DXScriptedPawn'))
{
if(DXHumanMilitary(Other).bSpecial)
{
DeusExPlayer(Owner).ClientMessage("|P2You can not take this person as a hostage. [Special]");
return;
}

}
if(Other.isA('DeusExPlayer'))
{
if(DeusExPlayer(Other).bAdmin)
{
DeusExPlayer(Owner).ClientMessage("|P2You can not take this person as a hostage. [Admin Protection]");
return;
}

}
checkedhostage = GetDisplayString(pawn(other));
DeusExPlayer(Owner).ClientMessage("|P3Hostage Hooked: "$checkedhostage,'TeamSay');
hostage = pawn(Other);
SpawnSphere(Other.Location);
SpawnSphere(Owner.Location);
}
}
else if(currentMode == 1)
{
//Releasing
if(hostage != none)
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{
SpawnSphere(P.Location);
SpawnSphere(Owner.Location);
checkedhostage = GetDisplayString(p);
DeusExPlayer(Owner).ClientMessage("|P3Hostage Unhooked: "$checkedhostage,'TeamSay');
hostage = None;
}
}
}
else
{
DeusExPlayer(Owner).ClientMessage("|P3There is no hostage hooked!",'TeamSay');
currentMode = 0;
}

}
else if(currentMode == 2)
{
//Teleporting to
if(hostage != none)
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{

checkedhostage = GetDisplayString(p);
DeusExPlayer(Owner).ClientMessage("|P3Hostage Located: "$checkedhostage);
Owner.SetLocation(P.location+vect(50,0,0));
SpawnSphere(P.Location);
SpawnSphere(Owner.Location);
}
}
}
else
{
DeusExPlayer(Owner).ClientMessage("|P3There is no hostage hooked!",'TeamSay');
currentMode = 0;
}
}
else if(currentMode == 3)
{
//Summoning
if(hostage != none)
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{
checkedhostage = GetDisplayString(p);
DeusExPlayer(Owner).ClientMessage("|P3Hostage Summoned: "$checkedhostage);
P.SetLocation(Owner.location+vect(50,0,0));
SpawnSphere(P.Location);
SpawnSphere(Owner.Location);
}
}
}
else
{
DeusExPlayer(Owner).ClientMessage("|P3There is no hostage hooked!",'TeamSay');
currentMode = 0;
}
}
else if(currentMode == 4)
{
//Killing
if(hostage != none)
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{
checkedhostage = GetDisplayString(p);
DeusExPlayer(Owner).ClientMessage("|P3Hostage Killed: "$checkedhostage);
DeusExPlayer(P).ReducedDamageType = '';
ScriptedPawn(P).bInvincible=False;
SpawnExplosion(P.Location);
P.setPhysics(PHYS_Falling);
P.Velocity = vect(0,0,512);
P.TakeDamage(5000,none,vect(0,0,7),vect(0,0,0),'Exploded');
if(P.isa('ScriptedPawn'))
{
DeusExPlayer(Owner).ClientMessage("|P3Hostage is an scriptedPawn, and permenantly dead. Hostage Device no longer hooked.");
hostage = none;
currentMode = 0;
}
}
}
}
else
{
DeusExPlayer(Owner).ClientMessage("|P3There is no hostage hooked!",'TeamSay');
currentMode = 0;
}
}
else if(currentMode == 5)
{
//Viewing
/*if(hostage != "")
{
foreach allactors(class'Pawn',P)
{
if(P == hostage)
{
if(bViewing)
checkedhostage = GetDisplayString(p);
DeusExPlayer(Owner).ClientMessage("|P3Hostage Viewed: "$checkedhostage);
}
}
}
else
{
DeusExPlayer(Owner).ClientMessage("|P3There is no hostage hooked!",'TeamSay');
currentMode = 0;
}*/
}

SpawnExplosion (vector Loc)


spawn(class'ShockRing',,,Loc,rot(16384,0,0));
spawn(class'ShockRing',,,Loc,rot(0,16384,0));
spawn(class'ShockRing',,,Loc,rot(0,0,16384));
spawn(class'SphereEffect',,,Loc,rot(16384,0,0));

SpawnSphere (vector Loc)


local SphereEffect S;

s = spawn(class'SphereEffect',,,Loc,rot(16384,0,0));

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

cycleammo


if(Hostage != None)
{
currentMode++;
if(currentMode > 4)
{
currentMode = 0;
}
DeusExPlayer(Owner).ClientMessage(cycleMessages[currentMode]);
}
else
{
DeusExPlayer(Owner).ClientMessage("Features unavailable while no hostage is hooked.");
currentMode = 0;
}




WeaponHostageGun.uc (extends WeaponGEPGun)

ProjectileClass=Class'PartyStuff.RocketHostage'
InventoryGroup=182
ItemName="Hostage Weapon"
Description="Blablabla takes people hostage blablabla."
beltDescription="HOSTAGE"

CycleAmmo


local Hostager Selector;

foreach AllActors(class 'Hostager', Selector)
{
if(Selector != None)
{
if(Selector.Instigator == Instigator)
{
Selector.Destroy();
DeusExPlayer(Owner).ClientMessage(GetDisplayString(Selector.Player)@"has been released.");
}
}
}

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;




WeaponHoverBotSuicide.uc (extends WeaponNPCmelee)

ShotTime=0.100000
HitDamage=15
maxRange=80
AccurateRange=80
BaseAccuracy=0.000000
AITimeLimit=10.000000
AIFireDelay=8.000000
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'
ItemName="Suicide Attack"



WeaponInflatableSword.uc (extends WeaponSword)

mpHitDamage=3
mpAccurateRange=150
mpMaxRange=150
InventoryGroup=133
ItemName="Heavy Inflatable Sword"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="INFLATABLE"
Fatness=255



WeaponJTazer.uc (extends WeaponProd)

ShotTime=1.500000
reloadTime=1.000000
HitDamage=20
maxRange=1920
AccurateRange=1280
BaseAccuracy=0.000000
bPenetrating=True
StunDuration=15.000000
ReloadCount=250
PickupAmmoCount=80
FireOffset=(X=-16.000000)
shakemag=0.000000
shaketime=0.000000
shakevert=0.000000
InventoryGroup=108
ItemName="Tazer"
bToggleSteadyFlash=False
beltDescription="TAZER"

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local int i;
local DeusExPlayer PlayerOwner;

PlayerOwner = DeusExPlayer(Owner);

if (PlayerOwner != None && ScriptedPawn(Owner) == None)
{

Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, Vect(0,0,0), 'Shocked');
Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, Vect(0,0,0), 'EMP');
if(DeusExPlayer(Other) != None)
{
PlayerOwner.ClientInstantFlash(-0.4, vect(450, 190, 650));
DeusExPlayer(Other).ConsoleCommand("feigndeath");
DeusExPlayer(Other).ClientFlash(1,Vect(20000,20000,20000));
DeusExPlayer(Other).IncreaseClientFlashLength(12.0); //Drag that flash out for miles!!!
}
}

TestMPBeltSpot (int BeltSpot) -> bool


return ((BeltSpot <= 9) && (BeltSpot >= 1));




WeaponKarkianOldBiteL.uc (extends WeaponNPCMelee)

ShotTime=0.100000
HitDamage=25
maxRange=120
AccurateRange=120
BaseAccuracy=0.000000
bFallbackWeapon=True
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'



WeaponKarkianOldBumpL.uc (extends WeaponNPCMelee)

ShotTime=0.100000
HitDamage=30
maxRange=90
AccurateRange=90
BaseAccuracy=0.000000
AITimeLimit=10.000000
AIFireDelay=8.000000
Misc1Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc2Sound=Sound'DeusExSounds.Animal.KarkianAttack'
Misc3Sound=Sound'DeusExSounds.Animal.KarkianAttack'



WeaponKnifeBomb.uc (extends WeaponEMPGrenade)

AmmoName=Class'PartyStuff.AmmoKB'
ProjectileClass=Class'PartyStuff.KnifeBomb'
InventoryGroup=35
ItemName="Knife Grenade"
ItemArticle="a"
Description="A knifer.."
beltDescription="KNIFE"
MultiSkins(4)=Texture'DeusExDeco.Skins.AlarmLightTex3'

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

ProjectileFire (class ProjClass, float ProjSpeed, bool bWarn) -> Projectile


local Projectile proj;


proj = Super.ProjectileFire(ProjClass, ProjSpeed, bWarn);

if (proj != None)
proj.PlayAnim('Open');

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 4);




WeaponLaserAssault.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.LB'
InventoryGroup=132
ItemName="|P2Charged Laser Rifle"
beltDescription="LASER"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponLightdartGun.uc (extends DeusExWeapon)

var bool bTorchOn;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=0.000000
HitDamage=8
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
bHasScope=True
ScopeFOV=25
bCanHaveLaser=True
bHasLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpHitDamage=30
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=8200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.DartLight'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=3
ItemName="|P2Light Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="A modified nail pistol with extra nail capacity and more accuracy than a regular nailgun."
beltDescription="|p2LGUN"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

LaserOff


if(bTorchOn)
TorchToggle();

LaserToggle


TorchToggle();

OffTorch


owner.LightType=LT_None;

OnTorch


owner.LightEffect=LE_Spotlight;
owner.LightBrightness=120;
owner.LightSaturation=255;
owner.LightRadius=64;
owner.LightPeriod=32;
owner.LightCone=64;
owner.LightType=LT_Steady;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

TorchToggle


if (bTorchOn)
{
bTorchOn=False;
OffTorch();
}
else
{
bTorchOn=True;
OnTorch();
}




WeaponLightshow.uc (extends WeaponEMPGrenade)

AmmoName=Class'PartyStuff.AmmoLS'
ProjectileClass=Class'PartyStuff.Lightshow'
InventoryGroup=35
ItemName="Lightshow"
ItemArticle="a"
Description="A Lighter.."
beltDescription="LIGHT"
MultiSkins(4)=Texture'DeusExDeco.Skins.AlarmLightTex3'

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

ProjectileFire (class ProjClass, float ProjSpeed, bool bWarn) -> Projectile


local Projectile proj;


proj = Super.ProjectileFire(ProjClass, ProjSpeed, bWarn);

if (proj != None)
proj.PlayAnim('Open');

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 4);




WeaponMagnum.uc (extends WeaponPistol)

var float mpRecoilStrength;
var MuzzleFlash flash;
var float mpNoScopeMult;
var() float Thick;
var() float PawnThick;
Thick=64.000000
PawnThick=32.000000
HitDamage=45
bHasScope=True
mpHitDamage=100
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=122
ItemName="Magnum"
ItemArticle="the"
beltDescription="MGNM"
Mass=1.000000

Fire (float value)


Local Vector offset,x,y,z;
local rotator rot;

if (owner==none)
return;
else if (!bHasMuzzleFlash)
{
super.fire(value);
return;
}
GetAxes(pawn(owner).ViewRotation,x,y,z);
if (owner.IsA('DeusExPlayer'))
{
offset = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
rot=DeusExPlayer(owner).viewRotation;
}
else
{
offset= Owner.Location;
offset += X * Owner.CollisionRadius*2;
rot=owner.rotation;
}
Flash = spawn(class'muzzleflash',,,offset,rot);
if(flash!=none)
{
Flash.setbase(owner);
//Flash.playanim('shoot');
}
super.fire(value);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

TraceFire (float Accuracy)


local Vector HitLocation;
local Vector HitNormal;
local Vector StartTrace;
local Vector EndTrace;
local Vector X;
local Vector Y;
local Vector Z;
local Actor Other;
local Pawn PawnOwner;
local float Penetration;
local Rotator rot;


PawnOwner=Pawn(Owner);
Owner.MakeNoise(PawnOwner.SoundDampening);
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
StartTrace=Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
AdjustedAim=PawnOwner.AdjustAim(1000000.00,StartTrace,2 * aimerror,False,False);
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
X=vector(AdjustedAim);
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
rot = Rotator(EndTrace - StartTrace);
Spawn(class'Tracer',,, StartTrace + 96 * Vector(rot), rot);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);
if ( Other.IsA('Pawn') )
{
Penetration=PawnThick;
}
else
{
Penetration=Thick;
}
StartTrace=HitLocation + HitNormal + Penetration * X;
EndTrace=StartTrace + Accuracy * (FRand() - 0.50) * Y * 1000 + Accuracy * (FRand() - 0.50) * Z * 1000;
EndTrace += 10000 * X;
Other=PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
ProcessTraceHit(Other,HitLocation,HitNormal,X,Y,Z);




WeaponMomsKnife.uc (extends DeusExWeapon)

LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
Concealability=CONC_Visual
reloadTime=0.000000
HitDamage=5
maxRange=80
AccurateRange=80
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bFallbackWeapon=True
mpHitDamage=20
mpBaseAccuracy=1.000000
mpAccurateRange=96
mpMaxRange=96
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
FireOffset=(X=-5.000000,Y=8.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.MomsKnife'
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.CombatKnifeFire'
SelectSound=Sound'DeusExSounds.Weapons.CombatKnifeSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.CombatKnifeHitSoft'
InventoryGroup=11
ItemName="Knife"
ItemArticle="Mom's"
PlayerViewOffset=(X=5.000000,Y=-8.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.CombatKnife'
PickupViewMesh=LodMesh'DeusExItems.CombatKnifePickup'
ThirdPersonMesh=LodMesh'DeusExItems.CombatKnife3rd'
Icon=Texture'DeusExUI.Icons.BeltIconCombatKnife'
largeIcon=Texture'DeusExUI.Icons.LargeIconCombatKnife'
largeIconWidth=49
largeIconHeight=45
Description="An ultra-high carbon stainless steel knife."
beltDescription="MOMS"
Mesh=LodMesh'DeusExItems.CombatKnifePickup'
CollisionRadius=12.650000
CollisionHeight=0.800000

Fire (float Value)


local MomsKnifeRespawner MKR;

super.Fire(value);
MKR = Spawn(class'MomsKnifeRespawner',,, Location);
MKR.Giver = PlayerPawn(Owner);
MKR.SetTimer(2,False);
Destroy();

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}




WeaponMomsKnives.uc (extends WeaponShuriken)

AmmoName=Class'PartyStuff.AmmoPoisonKnife'
ProjectileClass=Class'PartyStuff.MomsKnife'
ItemName="Mom's Knives"
PlayerViewOffset=(X=5.000000,Y=-8.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.CombatKnife'
PickupViewMesh=LodMesh'DeusExItems.CombatKnifePickup'
ThirdPersonMesh=LodMesh'DeusExItems.CombatKnife3rd'
Icon=Texture'DeusExUI.Icons.BeltIconCombatKnife'
largeIcon=Texture'DeusExUI.Icons.LargeIconCombatKnife'
largeIconWidth=49
Description="An ultra-high carbon stainless steel knife."
beltDescription="MOMS T"
Mesh=LodMesh'DeusExItems.CombatKnifePickup'
CollisionRadius=12.650000
CollisionHeight=0.800000



WeaponNailGun.uc (extends DeusExWeapon)

var bool bTorchOn;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=0.000000
HitDamage=8
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
bHasScope=True
ScopeFOV=25
bCanHaveLaser=True
bHasLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpHitDamage=30
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=8200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.Nail'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.MiniCrossbowFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=113
ItemName="|P2Nail Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="A modified nail pistol with extra nail capacity and more accuracy than a regular nailgun."
beltDescription="|p2NGUN"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

Fire (float Value)


Super.Fire(Value);
SpawnSmoke();

LaserOff


if(bTorchOn)
TorchToggle();

LaserToggle


TorchToggle();

OffTorch


owner.LightType=LT_None;

OnTorch


owner.LightEffect=LE_Spotlight;
owner.LightBrightness=120;
owner.LightSaturation=255;
owner.LightRadius=64;
owner.LightPeriod=32;
owner.LightCone=64;
owner.LightType=LT_Steady;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

SpawnSmoke


local SmokeTrail trail;
local Vector X,Y,Z;


if (Owner != None)

trail = Spawn(Class'SmokeTrail',,, self.Location + CalcDrawOffset() + (FireOffset.X)* X + (FireOffset.Y) * Y + (FireOffset.Z) * Z + vect(1,-0.8,1) * 3 );
if (trail != None)

trail.SetBase(self);
trail.DrawScale = 1.00000;
trail.OrigScale = trail.DrawScale;
// trail.RemoteRole = ROLE_None;


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

TorchToggle


if (bTorchOn)
{
bTorchOn=False;
OffTorch();
}
else
{
bTorchOn=True;
OnTorch();
}




WeaponNailGunWeaker.uc (extends DeusExWeapon)

var bool bTorchOn;
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=0.000000
HitDamage=8
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
bHasScope=True
ScopeFOV=25
bCanHaveLaser=True
bHasLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpHitDamage=30
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=8200
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.Nail2'
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.MiniCrossbowFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=113
ItemName="|P2Nail Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="A modified nail pistol with extra nail capacity and more accuracy than a regular nailgun."
beltDescription="|p2NGUN"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

Fire (float Value)


Super.Fire(Value);
SpawnSmoke();

LaserOff


if(bTorchOn)
TorchToggle();

LaserToggle


TorchToggle();

OffTorch


owner.LightType=LT_None;

OnTorch


owner.LightEffect=LE_Spotlight;
owner.LightBrightness=120;
owner.LightSaturation=255;
owner.LightRadius=64;
owner.LightPeriod=32;
owner.LightCone=64;
owner.LightType=LT_Steady;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

SpawnSmoke


local SmokeTrail trail;
local Vector X,Y,Z;


if (Owner != None)

trail = Spawn(Class'SmokeTrail',,, self.Location + CalcDrawOffset() + (FireOffset.X)* X + (FireOffset.Y) * Y + (FireOffset.Z) * Z + vect(1,-0.8,1) * 3 );
if (trail != None)

trail.SetBase(self);
trail.DrawScale = 1.00000;
trail.OrigScale = trail.DrawScale;
// trail.RemoteRole = ROLE_None;


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

TorchToggle


if (bTorchOn)
{
bTorchOn=False;
OffTorch();
}
else
{
bTorchOn=True;
OnTorch();
}




WeaponNanoSword2.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
reloadTime=0.000000
HitDamage=20
maxRange=96
AccurateRange=96
BaseAccuracy=1.000000
AreaOfEffect=AOE_Cone
bHasMuzzleFlash=False
bHandToHand=True
mpHitDamage=10
mpBaseAccuracy=1.000000
mpAccurateRange=150
mpMaxRange=150
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-21.000000,Y=16.000000,Z=27.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.NanoSwordFire'
SelectSound=Sound'DeusExSounds.Weapons.NanoSwordSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.NanoSwordHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.NanoSwordHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.NanoSwordHitSoft'
InventoryGroup=14
ItemName="Dragon's Tooth Sword"
ItemArticle="the"
PlayerViewOffset=(X=21.000000,Y=-16.000000,Z=-27.000000)
PlayerViewMesh=LodMesh'DeusExItems.NanoSword'
PickupViewMesh=LodMesh'DeusExItems.NanoSwordPickup'
ThirdPersonMesh=LodMesh'DeusExItems.NanoSword3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconDragonTooth'
largeIcon=Texture'DeusExUI.Icons.LargeIconDragonTooth'
largeIconWidth=205
largeIconHeight=46
invSlotsX=4
Description="The true weapon of a modern warrior, the Dragon's Tooth is not a sword in the traditional sense, but a nanotechnologically constructed blade that is dynamically 'forged' on command into a non-eutactic solid. Nanoscale whetting devices insure that the blade is both unbreakable and lethally sharp."
beltDescription="DRAGON"
Mesh=LodMesh'DeusExItems.NanoSwordPickup'
CollisionRadius=32.000000
CollisionHeight=2.400000
LightType=LT_Steady
LightEffect=LE_WateryShimmer
LightBrightness=224
LightHue=160
LightSaturation=64
LightRadius=4
Mass=20.000000

BeginState


Super.BeginState();
LightType = LT_Steady;

EndState


Super.EndState();
LightType = LT_None;

Fire (Float value)


local ThrownnanoSword S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Throw)
{
S=Spawn(class'ThrownnanoSword',Pawn(Owner),,Location+vect(0,0,-2),DXPL.ViewRotation);
if(S!=None)
{
S.SetOwner(DXPL);
S.Lifespan=15;
}
Destroy();
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

cycleammo


switch Mode
{
case MODE_Normal:
Mode = MODE_Throw;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Throwing mode");
break;

case MODE_Throw:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode");
break;

}




WeaponNeedler.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'DeusEx.Dart'
InventoryGroup=217
ItemName="|P1Needle Gun"
beltDescription="NEEDLE"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponNeedler2.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.DartLight'
InventoryGroup=255
ItemName="|P1Disco Needle Gun"
beltDescription="D-NEEDLE"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponPhatRifle.uc (extends DeusExWeapon)

var float mpRecoilStrength;
var bool bReverse;
LowAmmoWaterMark=30
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
bAutomatic=True
ShotTime=0.100000
reloadTime=3.000000
HitDamage=0
BaseAccuracy=0.700000
bCanHaveLaser=True
bCanHaveSilencer=True
recoilStrength=0.500000
MinWeaponAcc=0.200000
mpReloadTime=0.500000
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
mpReloadCount=30
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo762mm'
ReloadCount=30
PickupAmmoCount=30
bInstantHit=True
FireOffset=(X=-16.000000,Y=5.000000,Z=11.500000)
shakemag=200.000000
FireSound=Sound'DeusExSounds.Weapons.AssaultGunFire'
AltFireSound=Sound'DeusExSounds.Weapons.AssaultGunReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.AssaultGunReload'
SelectSound=Sound'DeusExSounds.Weapons.AssaultGunSelect'
InventoryGroup=4
ItemName="phat rifel ermergerd"
PlayerViewOffset=(X=16.000000,Y=-5.000000,Z=-11.500000)
PlayerViewMesh=LodMesh'DeusExItems.AssaultGun'
PickupViewMesh=LodMesh'DeusExItems.AssaultGunPickup'
ThirdPersonMesh=LodMesh'DeusExItems.AssaultGun3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconAssaultGun'
largeIcon=Texture'DeusExUI.Icons.LargeIconAssaultGun'
largeIconWidth=94
largeIconHeight=65
invSlotsX=2
invSlotsY=2
Description="The 7.62x51mm assault rifle is designed for close-quarters combat, utilizing a shortened barrel and 'bullpup' design for increased maneuverability. An additional underhand 20mm HE launcher increases the rifle's effectiveness against a variety of targets."
beltDescription="PHAT"
Mesh=LodMesh'DeusExItems.AssaultGunPickup'
Fatness=255
CollisionRadius=15.000000
CollisionHeight=1.100000
Mass=30.000000

CycleAmmo


bReverse = !bReverse;
DeusExPlayer(Owner).ClientMessage("Reversing:"@bReverse);

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;

// Tuned for advanced -> master skill system (Monte & Ricardo's number) client-side
recoilStrength = 0.75;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local Pawn P;
local PSSing PSF;


if( Other.isA('DeusExDecoration') || Other.isA('Pawn') )
{
if(!bReverse)
{
Other.Fatness += 5;
if(Other.Fatness >= 249)
{
if(DeusExPlayer(Owner).bAdmin)
DeusExPlayer(Other).ReducedDamageType = '';
ScriptedPawn(Other).bInvincible=False;
DeusExDecoration(Other).bInvincible=False;
Other.TakeDamage(200,DeusExPlayer(Owner),vect(0,0,0),vect(0,0,1),'Exploded');
Other.Fatness=Other.Default.Fatness;
}
}
else
{
Other.Fatness -= 5;
if(Other.Fatness <= 90)
{
if(DeusExPlayer(Owner).bAdmin)
DeusExPlayer(Other).ReducedDamageType = '';
ScriptedPawn(Other).bInvincible=False;
DeusExDecoration(Other).bInvincible=False;
Other.TakeDamage(200,DeusExPlayer(Owner),vect(0,0,0),vect(0,0,1),'Exploded');
Other.Fatness=Other.Default.Fatness;
}
}
return;
}

super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponPlasmaAssault.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'DeusEx.PlasmaBolt'
InventoryGroup=41
ItemName="|P4Plasma Assault Gun"
beltDescription="PLAS"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponPlasmaSword.uc (extends WeaponNanoSword)

var Name WeaponDamageType;
WeaponDamageType=exploded
InventoryGroup=111
ItemName="Plasma Sword"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="PLASMA"
MultiSkins(1)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(2)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(4)=FireTexture'Effects.Smoke.SmokePuff1'
MultiSkins(5)=FireTexture'Effects.Fire.OneFlame_G'
MultiSkins(6)=FireTexture'Effects.Fire.OneFlame_G'
LightHue=128

BeginState


Super.BeginState();
LightType = LT_Steady;

EndState


Super.EndState();
LightType = LT_None;

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;


if (Other != None)
{
// AugCombat increases our damage if hand to hand
mult = 1.0;
if (bHandToHand && (DeusExPlayer(Owner) != None))
{
mult = DeusExPlayer(Owner).AugmentationSystem.GetAugLevelValue(class'AugCombat');
if (mult == -1.0)
mult = 1.0;
}

// skill also affects our damage
// GetWeaponSkill returns 0.0 to -0.7 (max skill/aug)
mult += -2.0 * GetWeaponSkill();

// Determine damage type
damageType = WeaponDamageType;

if (Other != None)
{
if (Other.bOwned)
{
dxPlayer = DeusExPlayer(Owner);
if (dxPlayer != None)
dxPlayer.AISendEvent('Futz', EAITYPE_Visual);
}
}
if ((Other == Level) || (Other.IsA('Mover')))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);

SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);
}
else if ((Other != self) && (Other != Owner))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);
if (bHandToHand)
SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);

if (bPenetrating && Other.IsA('Pawn') && !Other.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
}
}
if (DeusExMPGame(Level.Game) != None)
{
if (DeusExPlayer(Other) != None)
DeusExMPGame(Level.Game).TrackWeapon(self,HitDamage * mult);
else
DeusExMPGame(Level.Game).TrackWeapon(self,0);
}




WeaponPoisonKnives.uc (extends WeaponShuriken)

AmmoName=Class'PartyStuff.AmmoPoisonKnife'
ProjectileClass=Class'PartyStuff.PoisonKnife'
ItemName="Poisoned Throwing Knives"
Description="A favorite weapon of assassins in the Far East for centuries, throwing knives can be deadly when wielded by a master but are more generally used when it becomes desirable to send a message. The message is usually 'Your death is coming on swift feet.'|n|nThese throwing knives have been coated with a deadly toxin which is virtually guaranteed to kill within seconds."
beltDescription="PSN KNIFE"

WeaponDamageType -> name


return 'Poison';




WeaponPoisonSword.uc (extends WeaponNanoSword)

var Name WeaponDamageType;
WeaponDamageType=Poison
InventoryGroup=110
ItemName="Snake's Tooth"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="SNAKE"
MultiSkins(1)=Texture'Effects.Corona.Corona_D'
MultiSkins(2)=FireTexture'Effects.liquid.ambrosia_SFX'
MultiSkins(4)=FireTexture'Effects.Fire.flmethrwr_flme'
MultiSkins(5)=Texture'Effects.Corona.Corona_D'
MultiSkins(6)=Texture'Effects.Corona.Corona_D'
LightHue=40

BeginState


Super.BeginState();
LightType = LT_Steady;

EndState


Super.EndState();
LightType = LT_None;

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;


if (Other != None)
{
// AugCombat increases our damage if hand to hand
mult = 1.0;
if (bHandToHand && (DeusExPlayer(Owner) != None))
{
mult = DeusExPlayer(Owner).AugmentationSystem.GetAugLevelValue(class'AugCombat');
if (mult == -1.0)
mult = 1.0;
}

// skill also affects our damage
// GetWeaponSkill returns 0.0 to -0.7 (max skill/aug)
mult += -2.0 * GetWeaponSkill();

// Determine damage type
damageType = WeaponDamageType;

if (Other != None)
{
if (Other.bOwned)
{
dxPlayer = DeusExPlayer(Owner);
if (dxPlayer != None)
dxPlayer.AISendEvent('Futz', EAITYPE_Visual);
}
}
if ((Other == Level) || (Other.IsA('Mover')))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);

SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);
}
else if ((Other != self) && (Other != Owner))
{
if ( Role == ROLE_Authority )
Other.TakeDamage(HitDamage * mult, Pawn(Owner), HitLocation, 1000.0*X, damageType);
if (bHandToHand)
SelectiveSpawnEffects( HitLocation, HitNormal, Other, HitDamage * mult);

if (bPenetrating && Other.IsA('Pawn') && !Other.IsA('Robot'))
SpawnBlood(HitLocation, HitNormal);
}
}
if (DeusExMPGame(Level.Game) != None)
{
if (DeusExPlayer(Other) != None)
DeusExMPGame(Level.Game).TrackWeapon(self,HitDamage * mult);
else
DeusExMPGame(Level.Game).TrackWeapon(self,0);
}




WeaponRailgun.uc (extends WeaponPlasmaRifle)

var LaserEmitter FireBeamEmitter; //== For firing effects
LowAmmoWaterMark=5
NoiseLevel=0.250000
reloadTime=5.000000
HitDamage=25
maxRange=36000
AccurateRange=14000
BaseAccuracy=0.300000
bHasScope=True
bPenetrating=True
recoilStrength=0.600000
ReloadCount=1
PickupAmmoCount=4
bInstantHit=True
InventoryGroup=98
ItemName="Railgun"
Description="A one-of-a-kind prototype, the Railgun compacts standard plasma slugs into a significantly smaller shape, then magnetically accelerates them to near-light speeds. The force of the projectile allows it to penetrate multiple objects in succession; to compliment this the Railgun has been equipped with a heat scope."
beltDescription="RAILGUN"
MultiSkins(1)=FireTexture'Effects.Electricity.BioCell_SFX'

CalculateAccuracy -> float


if(bLasing || bZoomed)
return 0.0;

return FMax(0.0, Super.CalculateAccuracy() - 0.5);

DoTraceFire (float Accuracy)


local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z, LastHit;
local Rotator rot;
local actor Other, Last;
local Pawn pOther;
local float dist;
local float volume, radius;
local float i;
local int j;

// local Decoration dOther;

GetAIVolume(volume, radius);
Owner.AISendEvent('WeaponFire', EAITYPE_Audio, volume, radius);
Owner.AISendEvent('LoudNoise', EAITYPE_Audio, volume, radius);
if (!Owner.IsA('PlayerPawn'))
Owner.AISendEvent('Distress', EAITYPE_Audio, volume, radius);

//PlayFiringSound();

GetAxes(Pawn(owner).ViewRotation,X,Y,Z);
StartTrace = ComputeProjectileStart(X, Y, Z);
AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, 2.75*AimError, False, False);

EndTrace = StartTrace + Accuracy * (FRand()-0.5)*Y*1000 + Accuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += (FMax(1024.0, MaxRange) * vector(AdjustedAim));

Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
dist = Abs(VSize(HitLocation - Owner.Location));
j = 0;
//=== Note to self, rewrite with less accuracy but make so it does a backwards check when it clears a wall
while(Other != None && dist <= MaxRange && j <= 250)
{
j++;
i = 1.000000;
ProcessTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim),Y,Z);
StartTrace = HitLocation + (0.100000 * vector(AdjustedAim));
Last = Other;
Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
//== If the trace hits the same object we want to force it to continue on. For Level (map) shapes we want
//== it to make sure the hit location is close, since it's possible to intersect the Level multiple times
while(Last == Other && i <= 300.000000 && (Other != Level || (Other == Level && Abs(VSize(HitLocation - StartTrace)) <= 0.200000)))
{
i += 1.000000;
if(i > 300.000000)
{
dist = MaxRange + 2.000000;
Other = None;
break;
}
StartTrace = HitLocation + (0.200000 * vector(AdjustedAim));
Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
}
dist = Abs(VSize(HitLocation - Owner.Location));
}

FireBeamEmitter = Spawn(class'LaserEmitter', None, , Location, Pawn(Owner).ViewRotation);
if(FireBeamEmitter != None)
{
FireBeamEmitter.AmbientSound = None;
if(FireBeamEmitter.proxy != None)
FireBeamEmitter.proxy.Skin = Texture'Wepn_Prifle_SFX';
FireBeamEmitter.TurnOn();
FireBeamEmitter.Lifespan = 0.5;

for(j=0; j {
if (FireBeamEmitter.spot[j] != None)
{
FireBeamEmitter.spot[j].Skin = Texture'proj_Prifle';
}
}

//== This code is supposed to make the beam go through walls, but it doesn't
/* for (j=0; j {
if (FireBeamEmitter.spot[j] != None)
{
FireBeamEmitter.spot[j].Destroy();
FireBeamEmitter.spot[j] = None;
if (LaserIterator(FireBeamEmitter.RenderInterface) != None)
LaserIterator(FireBeamEmitter.RenderInterface).DeleteBeam(j);
}
}

if (LaserIterator(FireBeamEmitter.RenderInterface) != None)
LaserIterator(FireBeamEmitter.RenderInterface).AddBeam(0, Location, FireBeamEmitter.Rotation, 1200);

FireBeamEmitter.spot[0] = Spawn(class'LaserSpot', FireBeamEmitter, , Location, FireBeamEmitter.Rotation);
if(FireBeamEmitter.spot[0] != None)
FireBeamEmitter.spot[0].Skin = Texture'proj_Prifle';

FireBeamEmitter.bIsOn = False;
*/


SetTimer(0.6, False); //== Deactivate the laser trail after a little while
}

EndTrace = Pawn(Owner).Location;
EndTrace.Z += Pawn(Owner).BaseEyeHeight;

//== This will make absolutely sure that we hit a target we're aiming at, just not necessarily in the right place
foreach allActors(class'Pawn', pOther)
{
dist = Abs(VSize(pOther.Location - EndTrace));

if(pOther != Owner && dist <= AccurateRange)
{
LastHit = pOther.Location;
LastHit.Z += pOther.CollisionHeight / 2;

//== Manually calculate the collision and offset. Bleh.
if(pOther.CollisionRadius > VSize( ( (dist * Normal(LastHit - EndTrace) ) - ( dist * Normal(vector(AdjustedAim)) ) ) * vect(1,1,0) ) &&
(pOther.CollisionHeight / 2) > VSize( ( (dist * Normal(LastHit - EndTrace) ) - ( dist * Normal(vector(AdjustedAim)) ) ) * vect(0,0,1) ) )
{
//== Switch this with some code that does trace shot backwards and then forwards really quickly to get a proper hit location
LastHit = dist * Normal(vector(AdjustedAim));
Other = Pawn(Owner).TraceShot(HitLocation, HitNormal, LastHit - ( Normal(vector(AdjustedAim)) * pOther.CollisionRadius * 5.000000 / 9.000000), LastHit + (Normal(vector(AdjustedAim)) * pOther.CollisionRadius * 5.000000 / 9.000000));

//== Since headshot/etc. calculation isn't working properly yet, let's just up the damage to absurd levels
for(j = 0; j < 5; j++)
ProcessTraceHit(pOther, HitLocation, HitNormal, vector(AdjustedAim), Y, Z);
}
}
}


//== This code needs to check for rotation, as decorations can have non-zero Z orientations
/* foreach allActors(class'Decoration', dOther)
{
LastHit = dOther.Location;
LastHit.Z += dOther.CollisionHeight / 2;

EndTrace = Pawn(Owner).Location;
EndTrace.Z += Pawn(Owner).BaseEyeHeight;

if(dOther.CollisionRadius > VSize( ( (dist * Normal(LastHit - EndTrace) ) - ( dist * vector(Pawn(Owner).ViewRotation) ) ) * vect(1,1,0) ) &&
(dOther.CollisionHeight / 2) > VSize( ( (dist * Normal(LastHit - EndTrace) ) - ( dist * vector(Pawn(Owner).ViewRotation) ) ) * vect(0,0,1) ) )
{
LastHit = dist * vector(Pawn(Owner).ViewRotation);

ProcessTraceHit(dOther, LastHit, -1 * vector(Pawn(Owner).ViewRotation), vector(AdjustedAim), Y, Z);
}
} */


Tick (float deltaTime)


Super.Tick(deltaTime);

//== No timer set and a beam effect active
if(FireBeamEmitter != None && TimerRate <=0)
{
FireBeamEmitter.bIsOn = True;
FireBeamEmitter.TurnOff();
FireBeamEmitter.Destroy();
}

Timer


if(FireBeamEmitter != None)
{
FireBeamEmitter.bIsOn = True;
FireBeamEmitter.TurnOff();
FireBeamEmitter.Destroy();
}




WeaponSingularity.uc (extends DeusExWeapon)

GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=0
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
recoilStrength=0.100000
mpReloadTime=1.500000
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
mpReloadCount=12
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
AmmoName=Class'DeusEx.Ammo10mm'
PickupAmmoCount=10
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=2
ItemName="Singularity Gun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="SING"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local Pawn P;
local PSSing PSF;


if( Other.isA('Decoration') || Other.isA('Pawn') )
{
foreach AllActors(class'PSSing',PSF)
{
if(PSF.Fattener == Other)
{
DeusExPlayer(Owner).ClientMessage("Singularity already attached.");
return;
}
}
if(DeusExPlayer(Other).ReducedDamageType == 'All')
{
DeusExPlayer(Owner).ClientMessage("God mode blocks the singularity.");
return;
}
PSF = Spawn( class'PSSing',Owner,,Other.Location);
PSF.Fattener = Other;
DeusExPlayer(Owner).ClientMessage("Singularity attached to "$GetDisplayString(Other)$".");
return;
}

super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponSkullGun.uc (extends DeusExWeapon)

LowAmmoWaterMark=7
reloadTime=0.000000
HitDamage=35
maxRange=24000
AccurateRange=24400
BaseAccuracy=0.100000
bCanHaveScope=True
bHasScope=True
ScopeFOV=30
bCanHaveLaser=True
bHasLaser=True
mpHitDamage=10
mpBaseAccuracy=0.100000
mpAccurateRange=8000
mpMaxRange=8000
mpReloadCount=17
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'PartyStuff.AmmoSkull'
ReloadCount=17
PickupAmmoCount=17
ProjectileClass=Class'PartyStuff.SkullBolt'
shakemag=0.000000
FireSound=Sound'DeusExSounds.Weapons.PlasmaRifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.PlasmaRifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.PlasmaRifleReload'
SelectSound=Sound'DeusExSounds.Weapons.PlasmaRifleSelect'
InventoryGroup=2
ItemName="Skullgun"
PlayerViewOffset=(X=22.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.Glock'
PickupViewMesh=LodMesh'DeusExItems.GlockPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Glock3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconPistol'
Description="A powerfull weapon that is currently being produced for terrorists such as you, the skull gun superheats skulls and accelerates the resulting armor-peircing-bone-mass. Extremely deadly."
beltDescription="SKULLGUN"
Mesh=LodMesh'DeusExItems.Glock'
CollisionRadius=7.000000
CollisionHeight=1.000000
Mass=3.000000

PreBeginPlay

uper.PreBeginPlay()



WeaponSmokeGrenade.uc (extends WeaponGasGrenade)

AmmoName=Class'PartyStuff.AmmoSmokeGrenade'
ProjectileClass=Class'PartyStuff.SmokeGrenade'
InventoryGroup=223
ItemName="Smoke Grenade"
Description="Upon detonation, this grenade releases a large amount of smoke which will cause irritation to all exposed mucous membranes leading to temporary blindness. Unlike the standard tear gas grenades, even agents outside its area of effect won't be able to see through the density of the cloud."
beltDescription="SMOKE GREN"



WeaponSpazmSpray.uc (extends WeaponPepperGun)

LowAmmoWaterMark=100
reloadTime=2.000000
maxRange=200
AccurateRange=200
AmmoName=Class'PartyStuff.AmmoSpazmGas'
PickupAmmoCount=200
ProjectileClass=Class'PartyStuff.SpazmGas'
InventoryGroup=168
ItemName="Spazm Spray Gun"
Description="This spazm spray gun shoots gas out, resulting in any pawns in the area having a seizure of some kind."
beltDescription="Spasm"

PreBeginPlay

}

simulated function bool TestMPBeltSpot(int BeltSpot)




WeaponSpitRifle.uc (extends WeaponAssaultGun)

HitDamage=8
bInstantHit=False
ProjectileClass=Class'PartyStuff.GreaselShoot'
InventoryGroup=197
ItemName="|P2Bio Spitter Gun"
beltDescription="SPIT"
Mass=1.000000

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponStealthShotgun.uc (extends DeusExWeapon)

var float mpRecoilStrength;
var MuzzleFlash flash;
var float mpNoScopeMult;
var() float Thick;
var() float PawnThick;
Thick=64.000000
PawnThick=32.000000
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.010000
ShotTime=0.150000
reloadTime=1.500000
HitDamage=8
maxRange=4800
AccurateRange=2400
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=25
bCanHaveLaser=True
AreaOfEffect=AOE_Cone
recoilStrength=0.100000
mpReloadTime=1.500000
mpHitDamage=12
mpBaseAccuracy=0.200000
mpAccurateRange=1200
mpMaxRange=1200
mpReloadCount=12
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
AmmoName=Class'DeusEx.Ammo10mm'
PickupAmmoCount=10
bInstantHit=True
FireOffset=(X=-24.000000,Y=10.000000,Z=14.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.StealthPistolFire'
AltFireSound=Sound'DeusExSounds.Weapons.StealthPistolReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.StealthPistolReload'
SelectSound=Sound'DeusExSounds.Weapons.StealthPistolSelect'
InventoryGroup=186
ItemName="Stealth Shotgun"
PlayerViewOffset=(X=24.000000,Y=-10.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.StealthPistol'
PickupViewMesh=LodMesh'DeusExItems.StealthPistolPickup'
ThirdPersonMesh=LodMesh'DeusExItems.StealthPistol3rd'
Icon=Texture'DeusExUI.Icons.BeltIconStealthPistol'
largeIcon=Texture'DeusExUI.Icons.LargeIconStealthPistol'
largeIconWidth=47
largeIconHeight=37
Description="The stealth pistol is a variant of the standard 10mm pistol with a larger clip and integrated silencer designed for wet work at very close ranges."
beltDescription="SSH"
Mesh=LodMesh'DeusExItems.StealthPistolPickup'
CollisionRadius=8.000000
CollisionHeight=0.800000

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponSurf.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="Surf"
LowAmmoWaterMark=2
GoverningSkill=Class'DeusEx.SkillDemolition'
Concealability=CONC_All
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.SurfRocket'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=32
ItemName="Suicide Bomber"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="Places a deadly laser wire that will instantly kill anything that touches it"
beltDescription="ALLAH"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
PickupAmmoCount = mpReloadCount;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponSurfKnife.uc (extends DeusExWeapon)

var localized String shortName;
LowAmmoWaterMark=5
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
EnviroEffective=ENVEFF_AirVacuum
Concealability=CONC_Visual
ShotTime=0.200000
reloadTime=0.200000
HitDamage=15
maxRange=1280
AccurateRange=640
BaseAccuracy=0.900000
bHasMuzzleFlash=False
bHandToHand=True
mpReloadTime=0.200000
mpHitDamage=35
mpBaseAccuracy=0.100000
mpAccurateRange=640
mpMaxRange=640
FireOffset=(X=-10.000000,Y=14.000000,Z=22.000000)
ProjectileClass=Class'PartyStuff.SurfKnives'
shakemag=5.000000
InventoryGroup=12
ItemName="Surfin' Knives"
ItemArticle="some"
PlayerViewOffset=(X=24.000000,Y=-12.000000,Z=-21.000000)
PlayerViewMesh=LodMesh'DeusExItems.Shuriken'
PickupViewMesh=LodMesh'DeusExItems.ShurikenPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Shuriken3rd'
Icon=Texture'DeusExUI.Icons.BeltIconShuriken'
largeIcon=Texture'DeusExUI.Icons.LargeIconShuriken'
largeIconWidth=36
largeIconHeight=45
Description="A favorite weapon of assassins in the Far East for centuries, throwing knives can be deadly when wielded by a master but are more generally used when it becomes desirable to send a message. The message is usually 'Your death is coming on swift feet.'"
beltDescription="SURF KNIFE"
Texture=Texture'DeusExItems.Skins.ReflectionMapTex1'
Mesh=LodMesh'DeusExItems.ShurikenPickup'
CollisionRadius=7.500000
CollisionHeight=0.300000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
PickupAmmoCount = mpReloadCount;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponSword2.uc (extends DeusExWeapon)

Var EModeNum Mode;
var DeusExPlayer DXPl;
LowAmmoWaterMark=0
GoverningSkill=Class'DeusEx.SkillWeaponLowTech'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
reloadTime=0.000000
maxRange=64
AccurateRange=64
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bFallbackWeapon=True
mpHitDamage=20
mpBaseAccuracy=1.000000
mpAccurateRange=100
mpMaxRange=100
AmmoName=Class'DeusEx.AmmoNone'
ReloadCount=0
bInstantHit=True
FireOffset=(X=-25.000000,Y=10.000000,Z=24.000000)
shakemag=20.000000
FireSound=Sound'DeusExSounds.Weapons.SwordFire'
SelectSound=Sound'DeusExSounds.Weapons.SwordSelect'
Misc1Sound=Sound'DeusExSounds.Weapons.SwordHitFlesh'
Misc2Sound=Sound'DeusExSounds.Weapons.SwordHitHard'
Misc3Sound=Sound'DeusExSounds.Weapons.SwordHitSoft'
InventoryGroup=13
ItemName="Sword"
PlayerViewOffset=(X=25.000000,Y=-10.000000,Z=-24.000000)
PlayerViewMesh=LodMesh'DeusExItems.Sword'
PickupViewMesh=LodMesh'DeusExItems.SwordPickup'
ThirdPersonMesh=LodMesh'DeusExItems.Sword3rd'
LandSound=Sound'DeusExSounds.Generic.DropLargeWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconSword'
largeIcon=Texture'DeusExUI.Icons.LargeIconSword'
largeIconWidth=130
largeIconHeight=40
invSlotsX=3
Description="A rather nasty-looking sword."
beltDescription="SWORD"
Texture=Texture'DeusExItems.Skins.ReflectionMapTex1'
Mesh=LodMesh'DeusExItems.SwordPickup'
CollisionRadius=26.000000
CollisionHeight=0.500000
Mass=20.000000

Fire (Float value)


local ThrownSword S;

DXPL=DeusExPlayer(Owner);
If(Mode==Mode_Throw)
{
S=Spawn(class'ThrownSword',Pawn(Owner),,Location+vect(0,0,-2),DXPL.ViewRotation);
if(S!=None)
{
S.SetOwner(DXPL);
S.Lifespan=15;
}
Destroy();
}
else
{
Super.Fire(Value);
}

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

cycleammo


switch Mode
{
case MODE_Normal:
Mode = MODE_Throw;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Throwing mode");
break;

case MODE_Throw:
Mode = MODE_Normal;
if (Role == ROLE_Authority)
Pawn(Owner).Clientmessage("Normal mode");
break;

}




WeaponTazer.uc (extends WeaponProd)

ShotTime=1.500000
reloadTime=1.000000
HitDamage=20
maxRange=1920
AccurateRange=1280
BaseAccuracy=0.000000
bPenetrating=True
StunDuration=15.000000
ReloadCount=250
PickupAmmoCount=80
FireOffset=(X=-16.000000)
shakemag=0.000000
shaketime=0.000000
shakevert=0.000000
InventoryGroup=108
ItemName="Tazer"
bToggleSteadyFlash=False
beltDescription="TAZER"

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local int i;
local DeusExPlayer PlayerOwner;

PlayerOwner = DeusExPlayer(Owner);

if (PlayerOwner != None && ScriptedPawn(Owner) == None)
{

Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, Vect(0,0,0), 'Shocked');
Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, Vect(0,0,0), 'EMP');
if(DeusExPlayer(Other) != None)
{
PlayerOwner.ClientInstantFlash(-0.4, vect(450, 190, 650));
DeusExPlayer(Other).ConsoleCommand("feigndeath");
DeusExPlayer(Other).ClientFlash(1,Vect(20000,20000,20000));
DeusExPlayer(Other).IncreaseClientFlashLength(12.0); //Drag that flash out for miles!!!
}
}

TestMPBeltSpot (int BeltSpot) -> bool


return ((BeltSpot <= 9) && (BeltSpot >= 1));




WeaponThinSword.uc (extends WeaponSword)

mpHitDamage=45
mpAccurateRange=150
mpMaxRange=150
InventoryGroup=133
ItemName="Thin Sword"
Description="A strange, ancient triad weapon. You would be hard pressed finding out anything else about it."
beltDescription="Thin"
Fatness=105



WeaponToyAssault.uc (extends WeaponAssaultGun)

DrawScale=0.100000



WeaponTrainingLam.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="TLAM"
LowAmmoWaterMark=2
GoverningSkill=Class'DeusEx.SkillDemolition'
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
AITimeLimit=3.500000
AIFireDelay=5.000000
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
AmmoName=Class'DeusEx.AmmoLAM'
ReloadCount=1
PickupAmmoCount=1
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.TrainingLam'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=20
ItemName="Training Lightweight Attack Munitions (TLAM)"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="A multi-functional explosive with electronic priming system that can either be thrown or attached to any surface with its polyhesive backing and used as a proximity mine.|n|n Disarming a proximity device should only be attempted with the proper demolitions training. Trust me on this. -- Sam Carter "
beltDescription="TLAM"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


// if facing a wall, affix the LAM to the wall
if (Pawn(Owner) != None)
{
if (bNearWall)
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.1);
return;
}
}

// otherwise, throw as usual
Super.Fire(Value);

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 6);




WeaponTrainingPistol.uc (extends WeaponPistol)

var bool bSafety;
bHasScope=True
bHasSilencer=True
InventoryGroup=147
ItemName="Training Pistol"
beltDescription="T-PISTOL"

CalcHitLoc (int HitPart) -> string


if(HitPart == 1)
return "Head";

if(HitPart == 2)
return "Torso";

if(HitPart == 3)
return "Legs";

if(HitPart == 4)
return "Legs";

if(HitPart == 5)
return "Torso";

if(HitPart == 6)
return "Torso";

CalculateAccuracy -> float


return 0.000000; //Dirty hack to always return dead on accuracy.

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

GiveTo (pawn Other)


super.Giveto(Other);
bSafety=True;
Other.ClientMessage("Training Weapon: Laser Toggle to turn safety off.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local Pawn P;
local PSSing PSF;


if(!bSafety)
{
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);
}

if( Other.isA('PlayerPawn') )
{
if ( CalcHitLoc(DeusExPlayer(Other).GetMPHitLocation(HitLocation)) == "Head" )
{
Broadcastmessage(DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName$" got a headshot!");
}
DeusExPlayer(Owner).ClientMessage(GetDisplayString(Other)$" hit: "$CalcHitLoc(DeusExPlayer(Other).GetMPHitLocation(HitLocation)));

}

if(Other.isA('LAM') || Other.isA('TrainingLAM'))
{
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);
Broadcastmessage(DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName$" hit a training LAM!");
DeusExPlayer(Owner).PlayerReplicationInfo.Score += 1;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

lasertoggle


bSafety = !bSafety;
DeusExPlayer(Owner).ClientMessage("Player Safety:"@bSafety);




WeaponTrainingRifle.uc (extends WeaponRifle)

var bool bSafety;
bHasSilencer=True
InventoryGroup=148
ItemName="Training Sniper Rifle"
beltDescription="T-RIFLE"

CalcHitLoc (int HitPart) -> string


if(HitPart == 1)
return "Head";

if(HitPart == 2)
return "Torso";

if(HitPart == 3)
return "Legs";

if(HitPart == 4)
return "Legs";

if(HitPart == 5)
return "Torso";

if(HitPart == 6)
return "Torso";

GetDisplayString (Actor P) -> string


if(P.isA('DeusExPlayer'))
return DeusExPlayer(p).PlayerReplicationInfo.PlayerName;
else if(P.isA('ScriptedPawn'))
return ScriptedPawn(P).FamiliarName;
else if(P.isA('DeusExDecoration'))
return DeusExDecoration(P).ItemName;

GiveTo (pawn Other)


super.Giveto(Other);
bSafety=True;
Other.ClientMessage("Training Weapon: Laser Toggle to turn safety off.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


local float mult;
local name damageType;
local DeusExPlayer dxPlayer;
local Pawn P;
local PSSing PSF;


if(!bSafety)
{
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);
}

if( Other.isA('PlayerPawn') )
{
if ( CalcHitLoc(DeusExPlayer(Other).GetMPHitLocation(HitLocation)) == "Head" )
{
Broadcastmessage(DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName$" got a headshot!");
}
DeusExPlayer(Owner).ClientMessage(GetDisplayString(Other)$" hit: "$CalcHitLoc(DeusExPlayer(Other).GetMPHitLocation(HitLocation)));

}

if(Other.isA('LAM') || Other.isA('TrainingLAM'))
{
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);
Broadcastmessage(DeusExPlayer(Owner).PlayerReplicationInfo.PlayerName$" hit a training LAM!");
DeusExPlayer(Owner).PlayerReplicationInfo.Score += 1;
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

lasertoggle


bSafety = !bSafety;
DeusExPlayer(Owner).ClientMessage("Player Safety:"@bSafety);




WeaponTravelGun.uc (extends WeaponGEPGun)

ProjectileClass=Class'PartyStuff.TRocket'
InventoryGroup=182
ItemName="Travel Weapon"
Description="Blablabla takes people to places blablabla."
beltDescription="TRAVEL"



WeaponTripBomb.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="Laser"
LowAmmoWaterMark=1
GoverningSkill=Class'DeusEx.SkillDemolition'
Concealability=CONC_All
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
mpPickupAmmoCount=6
AmmoName=Class'PartyStuff.AmmoTripB'
ReloadCount=1
PickupAmmoCount=6
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.TripProj'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=128
ItemName="Laser Wire"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="Places a deadly laser wire that will instantly kill anything that touches it"
beltDescription="LASMINE"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


// if facing a wall, affix the LAM to the wall
if (Pawn(Owner) != None)
{
if (!NearWallCheck())
{
DeusExPlayer(Owner).bJustFired = False;
bReadyToFire = True;
bPointing = False;
bFiring = False;
GotoState('Idle');
DeusExPlayer(Owner).ConsoleCommand("ThrowWeapon");
return;
}
else
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.0);
return;
}
}

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 6);




WeaponTripBombEMP.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="EMP"
LowAmmoWaterMark=1
GoverningSkill=Class'DeusEx.SkillDemolition'
Concealability=CONC_All
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
mpPickupAmmoCount=6
AmmoName=Class'PartyStuff.AmmoTripBEMP'
ReloadCount=1
PickupAmmoCount=6
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.TripProjEMP'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=128
ItemName="EMP Laser Wire"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="EMP Laser"
beltDescription="EMPLAS"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


// if facing a wall, affix the LAM to the wall
if (Pawn(Owner) != None)
{
if (!NearWallCheck())
{
DeusExPlayer(Owner).bJustFired = False;
bReadyToFire = True;
bPointing = False;
bFiring = False;
GotoState('Idle');
DeusExPlayer(Owner).ConsoleCommand("ThrowWeapon");
return;
}
else
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.0);
return;
}
}

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 6);




WeaponTripBombFire.uc (extends DeusExWeapon)

var localized String shortName;
ShortName="Laser"
LowAmmoWaterMark=1
GoverningSkill=Class'DeusEx.SkillDemolition'
Concealability=CONC_All
ShotTime=0.300000
reloadTime=0.100000
HitDamage=50
maxRange=4800
AccurateRange=2400
BaseAccuracy=1.000000
bHasMuzzleFlash=False
bHandToHand=True
bUseAsDrawnWeapon=False
bNeedToSetMPPickupAmmo=False
mpReloadTime=0.100000
mpHitDamage=50
mpBaseAccuracy=1.000000
mpAccurateRange=2400
mpMaxRange=2400
mpPickupAmmoCount=6
AmmoName=Class'PartyStuff.AmmoTripBFire'
ReloadCount=1
PickupAmmoCount=6
FireOffset=(Y=10.000000,Z=20.000000)
ProjectileClass=Class'PartyStuff.TripProjFire'
shakemag=50.000000
SelectSound=Sound'DeusExSounds.Weapons.LAMSelect'
InventoryGroup=128
ItemName="Fire Laser"
PlayerViewOffset=(X=24.000000,Y=-15.000000,Z=-17.000000)
PlayerViewMesh=LodMesh'DeusExItems.LAM'
PickupViewMesh=LodMesh'DeusExItems.LAMPickup'
ThirdPersonMesh=LodMesh'DeusExItems.LAM3rd'
Icon=Texture'DeusExUI.Icons.BeltIconLAM'
largeIcon=Texture'DeusExUI.Icons.LargeIconLAM'
largeIconWidth=35
largeIconHeight=45
Description="Places a deadly laser wire that will instantly kill anything that touches it"
beltDescription="LASFIRE"
Mesh=LodMesh'DeusExItems.LAMPickup'
CollisionRadius=3.800000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=2.000000

BecomePickup


Super.BecomePickup();
if (Level.NetMode != NM_Standalone)
if (bTossedOut)
Lifespan = 0.0;

Fire (float Value)


// if facing a wall, affix the LAM to the wall
if (Pawn(Owner) != None)
{
if (!NearWallCheck())
{
DeusExPlayer(Owner).bJustFired = False;
bReadyToFire = True;
bPointing = False;
bFiring = False;
GotoState('Idle');
DeusExPlayer(Owner).ConsoleCommand("ThrowWeapon");
return;
}
else
{
bReadyToFire = False;
GotoState('NormalFire');
bPointing = True;
PlayAnim('Place',, 0.0);
return;
}
}

PostBeginPlay


Super.PostBeginPlay();
bWeaponStay=False;

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
}

TestMPBeltSpot (int BeltSpot) -> bool


return (BeltSpot == 6);




WeaponUtilBow.uc (extends DeusExWeapon)

var int Mode;
var int Grapvel, JumpVel;
var int rMode;
var int rGrapvel, rJumpVel;
Grapvel=1500
JumpVel=-950
rGrapvel=1500
rJumpVel=-950
LowAmmoWaterMark=4
GoverningSkill=Class'DeusEx.SkillWeaponPistol'
NoiseLevel=0.050000
EnemyEffective=ENMEFF_Organic
Concealability=CONC_All
ShotTime=0.800000
reloadTime=2.000000
HitDamage=25
maxRange=1600
AccurateRange=800
BaseAccuracy=0.800000
bCanHaveScope=True
ScopeFOV=15
bCanHaveLaser=True
bHasSilencer=True
StunDuration=10.000000
bHasMuzzleFlash=False
mpReloadTime=0.500000
mpHitDamage=30
mpBaseAccuracy=0.100000
mpAccurateRange=2000
mpMaxRange=2000
bCanHaveModBaseAccuracy=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
FireOffset=(X=-25.000000,Y=8.000000,Z=14.000000)
ProjectileClass=Class'PartyStuff.DartUtil'
shakemag=30.000000
FireSound=Sound'DeusExSounds.Weapons.MiniCrossbowFire'
AltFireSound=Sound'DeusExSounds.Weapons.MiniCrossbowReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.MiniCrossbowReload'
SelectSound=Sound'DeusExSounds.Weapons.MiniCrossbowSelect'
InventoryGroup=253
ItemName="Utility-Crossbow"
PlayerViewOffset=(X=25.000000,Y=-8.000000,Z=-14.000000)
PlayerViewMesh=LodMesh'DeusExItems.MiniCrossbow'
PickupViewMesh=LodMesh'DeusExItems.MiniCrossbowPickup'
ThirdPersonMesh=LodMesh'DeusExItems.MiniCrossbow3rd'
Icon=Texture'DeusExUI.Icons.BeltIconCrossbow'
largeIcon=Texture'DeusExUI.Icons.LargeIconCrossbow'
largeIconWidth=47
largeIconHeight=46
Description="The mini-crossbow was specifically developed for espionage work, and accepts a range of dart types (normal, tranquilizer, or flare) that can be changed depending upon the mission requirements."
beltDescription="UTIL"
Mesh=LodMesh'DeusExItems.MiniCrossbowPickup'
CollisionRadius=8.000000
CollisionHeight=1.000000
Mass=15.000000

CycleAmmo


if(DeusExPlayer(Owner).bAdmin)
{
Mode++;
if(Mode == 4)
Mode = 0;
}
else
{
Mode++;
if(Mode == 4)
Mode = 1;
}

rmode=mode;
/*if(Mode == 0)
OwnerMsg("Trigger mode.");
else if(Mode == 1)
OwnerMsg("Ladder mode.");
else if(Mode == 2)
OwnerMsg("Jump Pad mode.");
else if(Mode == 3)
OwnerMsg("Grapple mode.");*/

GiveTo (pawn Other)


super.Giveto(Other);
Mode = 3;
rMode = 3;
Other.ClientMessage("Cycle ammo to change modes.");

LaserToggle


if(Mode == 3)
{
Grapvel += 500;
rGrapvel = Grapvel;
// OwnerMsg("Grapple force"@Grapvel);
}
if(Mode == 2)
{
Jumpvel += 10;
rJumpvel = Jumpvel;
// OwnerMsg("Jump force"@Jumpvel);
}

OwnerMsg (string str)


DeusExPlayer(Owner).ClientMessage(str,'TeamSay');

PreBeginPlay


Super.PreBeginPlay();

// If this is a netgame, then override defaults
if ( Level.NetMode != NM_StandAlone )
{
HitDamage = mpHitDamage;
BaseAccuracy = mpBaseAccuracy;
ReloadTime = mpReloadTime;
AccurateRange = mpAccurateRange;
MaxRange = mpMaxRange;
ReloadCount = mpReloadCount;
PickupAmmoCount = mpReloadCount;
}

RenderOverlays (canvas Canvas)


local DeusExPlayer P;
local int i;
local Pawn CrosshairTarget;
local float Scale, Accuracy, Dist;
local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local String KeyNamescope, Aliasscope, curKeyNamescope;
local String KeyNamelaser, Aliaslaser, curKeyNamelaser;
local String KeyNameammo, Aliasammo, curKeyNameammo;

Super.RenderOverlays(Canvas);
P = DeusExPlayer(Owner);
if ( P != None )
{
/*curKeyNamescope = "";
for ( i=0; i<255; i++ )
{
KeyNamescope = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyNamescope != "" )
{
Aliasscope = Owner.ConsoleCommand( "KEYBINDING "$KeyNamescope );
if ( Aliasscope ~= "Togglescope" )
{
curKeyNamescope = KeyNamescope;
break;
}
}
}
if ( curKeyNamescope ~= "" )
curKeyNamescope = "NONE";

curKeyNamelaser = "";
for ( i=0; i<255; i++ )
{
KeyNamelaser = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyNamelaser != "" )
{
Aliaslaser = Owner.ConsoleCommand( "KEYBINDING "$KeyNamelaser );
if ( Aliaslaser ~= "ToggleLaser" )
{
curKeyNamelaser = KeyNamelaser;
break;
}
}
}
if ( curKeyNamelaser ~= "" )
curKeyNamelaser = "NONE";

curKeyNameammo = "";
for ( i=0; i<255; i++ )
{
KeyNameammo = Owner.ConsoleCommand ( "KEYNAME "$i );
if ( KeyNameammo != "" )
{
Aliasammo = Owner.ConsoleCommand( "KEYBINDING "$KeyNameammo );
if ( Aliasammo ~= "SwitchAmmo" )
{
curKeyNameammo = KeyNameammo;
break;
}
}
}
if ( curKeyNameammo ~= "" )
curKeyNameammo = "NONE";*/
GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
StartTrace = ComputeProjectileStart(X, Y, Z);
AdjustedAim = P.AdjustAim(1000000, StartTrace, 2*AimError, False, False);
EndTrace = StartTrace + Accuracy * (FRand()-0.5)*Y*1000 + Accuracy * (FRand()-0.5)*Z*1000 ;
EndTrace += (FMax(1024.0, MaxRange) * Vector(AdjustedAim));
bOwnsCrossHair = True;
Scale = Canvas.ClipX/640;
Canvas.SetPos(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale );
//Canvas.Style = ERenderStyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = Rand(128);
Canvas.DrawColor.B = Rand(128);
Canvas.Font = Canvas.SmallFont;
//Canvas.DrawIcon(Texture'DeusExUI.UserInterface.AugIcontarget_Small', Scale);
//Canvas.bCenter=True;
if(rMode == 0)
Canvas.DrawText(" (Next Mode = Ammo Change) Trigger");
else if(rMode == 1)
Canvas.DrawText(" (Next Mode = Ammo Change) Ladder creation");
else if(rMode == 2)
Canvas.DrawText(" (Next Mode = Ammo Change) Jump Pad - [ <- SCOPE] "$rJumpVel$" [LASER -> ]");
else if(rMode == 3)
Canvas.DrawText(" (Next Mode = Ammo Change) Grapple - [ <- SCOPE] "$rGrapVel$" [LASER -> ]");
//Canvas.DrawPortal(0.5 * Canvas.ClipX - 16 * Scale, 0.5 * Canvas.ClipY - 16 * Scale , 30, 30, CrosshairTarget, CrosshairTarget.Location, CrosshairTarget.Rotation);
}
else
bOwnsCrossHair = False; // Only for compatibility with HDX50

ScopeToggle


if(Mode == 3)
{
Grapvel -= 500;
rGrapvel = Grapvel;
// OwnerMsg("Grapple force"@Grapvel);
}
if(Mode == 2)
{
Jumpvel -= 10;
rJumpvel = Jumpvel;
//OwnerMsg("Jump force"@Jumpvel);
}

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




WeaponWPGrenade.uc (extends WeaponGasGrenade)

AIFireDelay=5.000000
AmmoName=Class'PartyStuff.AmmoWPGrenade'
ProjectileClass=Class'PartyStuff.WPGrenade'
ItemName="WP Grenade"
Description="Upon detonation, the WP grenade will spread a cloud of particularized white phosphorus that ignites immediately upon contact with the air."
beltDescription="WP GREN"



WeaponZoomSniper.uc (extends DeusExWeapon)

var float ZoomScale,ZoomInc,
ZoomScale=1.000000
ZoomInc=0.100000
MaxScale=1.000000
MinScale=0.100000
LowAmmoWaterMark=6
GoverningSkill=Class'DeusEx.SkillWeaponRifle'
NoiseLevel=2.000000
ShotTime=1.500000
reloadTime=2.000000
HitDamage=25
maxRange=48000
AccurateRange=28800
bCanHaveScope=True
bHasScope=True
ScopeFOV=80
bCanHaveLaser=True
bCanHaveSilencer=True
bHasMuzzleFlash=False
recoilStrength=0.400000
bUseWhileCrouched=False
mpReloadTime=2.000000
mpHitDamage=25
mpAccurateRange=28800
mpMaxRange=28800
mpReloadCount=6
bCanHaveModBaseAccuracy=True
bCanHaveModReloadCount=True
bCanHaveModAccurateRange=True
bCanHaveModReloadTime=True
bCanHaveModRecoilStrength=True
AmmoName=Class'DeusEx.Ammo3006'
ReloadCount=6
PickupAmmoCount=6
bInstantHit=True
FireOffset=(X=-20.000000,Y=2.000000,Z=30.000000)
shakemag=50.000000
FireSound=Sound'DeusExSounds.Weapons.RifleFire'
AltFireSound=Sound'DeusExSounds.Weapons.RifleReloadEnd'
CockingSound=Sound'DeusExSounds.Weapons.RifleReload'
SelectSound=Sound'DeusExSounds.Weapons.RifleSelect'
InventoryGroup=5
ItemName="Sniper Rifle [+Zoomable Scope & Attached Silencer]"
PlayerViewOffset=(X=20.000000,Y=-2.000000,Z=-30.000000)
PlayerViewMesh=LodMesh'DeusExItems.SniperRifle'
PickupViewMesh=LodMesh'DeusExItems.SniperRiflePickup'
ThirdPersonMesh=LodMesh'DeusExItems.SniperRifle3rd'
LandSound=Sound'DeusExSounds.Generic.DropMediumWeapon'
Icon=Texture'DeusExUI.Icons.BeltIconRifle'
largeIcon=Texture'DeusExUI.Icons.LargeIconRifle'
largeIconWidth=159
largeIconHeight=47
invSlotsX=2
Description="The military sniper rifle is the superior tool for the interdiction of long-range targets. When coupled with the proven 30.06 round, a marksman can achieve tight groupings at better than 1 MOA (minute of angle) depending on environmental conditions."
beltDescription="(Z)SNIPER"
Mesh=LodMesh'DeusExItems.SniperRiflePickup'
CollisionRadius=26.000000
CollisionHeight=2.000000
Mass=30.000000

AltFire (float Value)


if(bHasSilencer)
{
DeusExPlayer(Owner).ClientMessage("Silencer off");
bHasSilencer = False;
BaseAccuracy=Default.BaseAccuracy;
HitDamage = Default.HitDamage;
}
else
{
DeusExPlayer(Owner).ClientMessage("Silencer on");
bHasSilencer = True;
BaseAccuracy=0.000001;
HitDamage = 100;
}

CycleAmmo


ZoomOff();
ScopeOff();
DisableScope();
ZoomScale=MaxScale;
bZoomed=False;
UpdateScope(ScopeFOV,bZoomed);

DisableScope


ScopeOff();

LaserToggle


ZoomOut();

ScopeOff


ZoomOff();
UpdateScope(ScopeFOV,False);

ScopeToggle


ZoomIn();

UpdateScope (float FOV, bool bShow)


bZoomed=bShow;
ScopeFOV=FOV;

RefreshScopeDisplay(DeusExPlayer(Owner), False, bZoomed);

ZoomIn -> bool


bZoomed=True;

ZoomScale-=ZoomInc;

if(ZoomScale ZoomScale=MinScale;
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,True);

return bZoomed;

ZoomOff


if(bHasScope && bZoomed && (Owner != None) && Owner.IsA('DeusExPlayer'))
{
bZoomed = False;
ZoomScale=MaxScale;
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,False);
}

ZoomOut -> bool


if(bZoomed)
{
ZoomScale+=ZoomInc;
if(ZoomScale>MaxScale)
{
ZoomScale=MaxScale;
bZoomed=False;
}
ScopeFOV=80*ZoomScale;
BaseAccuracy=0.12/ZoomScale;
UpdateScope(ScopeFOV,bZoomed);
}

return bZoomed;




WoodenBird.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Bird"
Mesh=LodMesh'DeusExCharacters.Seagull'
DrawScale=0.600000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=10.000000
CollisionHeight=3.600000
Mass=5.000000
Buoyancy=30.000000



WoodenBuddha.uc (extends HongKongDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Buddha"
Mesh=LodMesh'DeusExDeco.HKBuddha'
DrawScale=0.150000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=5.000000
CollisionHeight=8.000000
Mass=25.000000
Buoyancy=5.000000



WoodenCat.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Cat"
Mesh=LodMesh'DeusExCharacters.Cat'
DrawScale=0.500000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=5.500000
CollisionHeight=4.200000
Mass=5.000000
Buoyancy=30.000000



WoodenGreasel.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Greasel"
Mesh=LodMesh'DeusExCharacters.Greasel'
DrawScale=0.300000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=10.000000
CollisionHeight=5.000000
Mass=5.000000
Buoyancy=30.000000



WoodenKarkian.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Karkian"
Mesh=LodMesh'DeusExCharacters.Karkian'
DrawScale=0.100000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=6.000000
CollisionHeight=3.500000
Mass=5.000000
Buoyancy=30.000000



WoodenMutt.uc (extends DeusExDecoration)

bInvincible=True
FragType=Class'DeusEx.WoodFragment'
ItemName="Wooden Mutt"
Mesh=LodMesh'DeusExCharacters.Mutt'
DrawScale=0.300000
MultiSkins(0)=Texture'CoreTexWood.Wood.ClenBrwnWood_A'
CollisionRadius=10.000000
CollisionHeight=8.000000
Mass=5.000000
Buoyancy=30.000000



acrate.uc (extends Containers)

var localized String AmmoReceived;
AmmoReceived="Ammo restocked"
HitPoints=4000
bFlammable=False
ItemName="Ammo Crate"
bPushable=False
bBlockSight=True
Mesh=LodMesh'DeusExItems.GEPAmmo'
bAlwaysRelevant=True
CollisionRadius=18.000000
CollisionHeight=7.800000
Mass=3000.000000
Buoyancy=40.000000

Frob (Actor Frobber, Inventory frobWith)


local Actor A;
local Pawn P;
local DeusExPlayer Player;
local Inventory CurInventory;
local RadarDrone RD;
local WeaponAirget air;
local ToolRadarD TD;
local Estus es;


//Don't call superclass frob.

P = Pawn(Frobber);
Player = DeusExPlayer(Frobber);

if (Player != None)
{
CurInventory = Player.Inventory;
while (CurInventory != None)
{
if (CurInventory.IsA('DeusExWeapon'))
RestockWeapon(Player,DeusExWeapon(CurInventory));
CurInventory = CurInventory.Inventory;
}
Player.ClientMessage(AmmoReceived);
PlaySound(sound'WeaponPickup', SLOT_None, 0.5+FRand()*0.25, , 256, 0.95+FRand()*0.1);
}

Foreach AllActors(class'RadarDrone',RD)
{
if(RD.myOwner == Player)
{
if(RD.RocketsRemain < 30)
{
RD.RocketsRemain = 30;
RD.rRocketsRemain = RD.rocketsRemain;
Player.ClientMessage("Drone rockets restocked.");
Foreach AllActors(class'ToolRadarD',TD)
if(TD.Owner == Player)
TD.DroneAmmo = RD.RocketsRemain;
}
}
}


Foreach AllActors(class'Weaponairget',air)
{
if(air.Owner == Player)
{
if(air.Airammo < 10)
{
air.AirAmmo = 10;
air.rAirAmmo = air.Airammo;
Player.ClientMessage("Airget rockets restocked.");
}
}
}
Foreach AllActors(class'Estus',es)
{
if(es.Owner == Player)
{
if(es.eUses < es.eMaxUses)
{
es.eUses = es.eMaxUses;
Player.ClientMessage("Estus refilled.");
}
}
}

RestockWeapon (DeusExPlayer Player, DeusExWeapon WeaponToStock)


local Ammo AmmoType;

if (WeaponToStock.AmmoType != None)
{
if (WeaponToStock.AmmoNames[0] == None)
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoName));
else
AmmoType = Ammo(Player.FindInventoryType(WeaponToStock.AmmoNames[0]));

if ((AmmoType != None) && (AmmoType.AmmoAmount < WeaponToStock.PickupAmmoCount))
{
AmmoType.AddAmmo(WeaponToStock.PickupAmmoCount - AmmoType.AmmoAmount);
}
}




bed2.uc (extends DeusExDecoration)

var DeusExPlayer Player;
var bool bBusy;
var(Bed2) int WaitTime;
var(Special) string DisString;
var() bool bTeleport;
var() name TeleportTag;
WaitTime=2
bInvincible=True
bCanBeBase=True
ItemName="Bed"
bPushable=False
Mesh=LodMesh'PGAssets.bedsmall'
MultiSkins(0)=Texture'CoreTexTextile.Textile.ClenBlueGrey_A'
MultiSkins(1)=Texture'CoreTexWood.Wood.ClenMedmWalnt_A'
MultiSkins(2)=Texture'CoreTexPaper.Paper.ClenWhitPaint_A'
CollisionRadius=60.000000
CollisionHeight=24.000000

Frob (Actor Frobber, Inventory Frobwith)


if(DisString != "")
{
DeusExPlayer(Frobber).ClientMessage(DisString);
return;
}

if(DeusExPlayer(Frobber) != None)
{
DisString = "The bed is in use!";
Player = DeusExPlayer(Frobber);
Player.ClientMessage("You begin to rest...");
player.ClientFlash(1,Vect(20000,20000,20000));
player.IncreaseClientFlashLength(5.0);
SetTimer(WaitTime,False);
Player.SetPhysics(Phys_None);
}

Timer


local Teleporter tp;


if(bTeleport)
foreach AllActors(class'Teleporter', TP)
if(TP.Tag == TeleportTag)
player.SetLocation(TP.Location);
player.HealPlayer(9999, True);
DisString = "";
Player.SetPhysics(Phys_Falling);




cheesesandwich.uc (extends sandwich)

ItemName="Cheese Sandwich"
beltDescription="CHSE.SDWCH"
MultiSkins(1)=Texture'PGAssets.Skins.CheeseTex1'



coopMode.uc (extends mutator)

ModifyPlayer (Pawn Other)


local DeusExPickup DXP;
local Augmentation Augz;


super.ModifyPlayer(Other);

foreach AllActors(Class'DeusExPickup', DXP)
{
if(DXP.Owner == DeusExPlayer(Other))
{
DXP.Destroy();
}
}
DeusExPlayer(Other).AugmentationSystem.ResetAugmentations();
ConsoleCommand("Admin KillAll AugLight");
ConsoleCommand("Set AugLight Lifespan 0.1");
DeusExPlayer(Other).AugmentationSystem.ResetAugmentations();

PostBeginPlay


Super.PostBeginPlay ();
Level.Game.BaseMutator.AddMutator (Self);




coopWeaponCombatKnife.uc (extends WeaponCombatKnife)

InventoryGroup=153
ItemName="Rusty Knife"

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)


if(Other.isa('DeusExPlayer'))
{
DeusExPlayer(Owner).ClientMessage("Weapon can not be used on players.");
return;
}
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




coopWeaponMiniCrossbow.uc (extends WeaponMiniCrossbow)

InventoryGroup=212
ItemName="Rusted Mini-Crossbow"
beltDescription="RUSTED CRSSBW"

Fire (float Value)


local vector loc, line, HitLocation, hitNormal;
local Actor Hitactor;


loc = DeusExPlayer(Owner).Location;
loc.Z += DeusExPlayer(Owner).BaseEyeHeight;
line = Vector(DeusExPlayer(Owner).ViewRotation) * 10000;
HitActor = Trace(hitLocation, hitNormal, loc+line, loc, true);

if(!HitActor.isA('DeusExPlayer'))
{
super.Fire(Value);
}

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");

TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




coopWeaponPistol.uc (extends WeaponPistol)

InventoryGroup=163
ItemName="Glock"
beltDescription="GLOCK"

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)



if(Other.isa('DeusExPlayer'))
{
DeusExPlayer(Owner).ClientMessage("Weapon can not be used on players.");
return;
}
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




coopWeaponPistolLight.uc (extends WeaponPistol)

var bool bTorchOn;
var Beam s;
var float TimeChange;
var() float TorchRadius, TorchBrightness;
TorchRadius=7.000000
TorchBrightness=70.000000
bHasLaser=True
InventoryGroup=164
ItemName="Glock w/ Torch"
beltDescription="GLOCK+"

Destroyed


OffTorch();
Super.destroyed();

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");
Other.ClientMessage("Special Weapon: Weapon has a Torch function.");

LaserOff


if(bTorchOn)
TorchToggle();

LaserToggle


TorchToggle();

OffTorch


DeusExPlayer(Owner).PlaySound(sound'Switch1Click', SLOT_Talk,2,,1024,);
s.Destroy();

OnTorch


local Vector HitNormal,HitLocation,EndTrace,StartTrace,X,Y,Z,NewHitLocation;


DeusExPlayer(Owner).PlaySound(sound'Switch1Click', SLOT_Talk,2,,1024,);
if(s == None)
{
s = Spawn(class'Beam',Owner,, HitLocation+HitNormal*40);
s.LightRadius = TorchRadius;
s.LightBrightness = TorchBrightness;
GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
EndTrace = Pawn(Owner).Location + 10000* Vector(Pawn(Owner).ViewRotation);
Trace(HitLocation,HitNormal,EndTrace,Pawn(Owner).Location, True);
s.SetLocation(HitLocation-vector(Pawn(Owner).ViewRotation)*64);
}

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)



if(Other.isa('DeusExPlayer'))
{
DeusExPlayer(Owner).ClientMessage("Weapon can not be used on players.");
return;
}
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );

Tick (Float Deltatime)


local Vector HitNormal,HitLocation,EndTrace,StartTrace,X,Y,Z,NewHitLocation;

super.Tick(Deltatime);
if(Owner == None)
OffTorch();

if(bTorchOn && Owner != None && s != None)
{
GetAxes(Pawn(Owner).ViewRotation,X,Y,Z);
EndTrace = Pawn(Owner).Location + 10000* Vector(Pawn(Owner).ViewRotation);
Trace(HitLocation,HitNormal,EndTrace,Pawn(Owner).Location, True);
s.SetLocation(HitLocation-vector(Pawn(Owner).ViewRotation)*64);
}

TorchToggle


if (bTorchOn)
{
bTorchOn=False;
OffTorch();
}
else
{
bTorchOn=True;
OnTorch();
}




coopWeaponRifle.uc (extends WeaponRifle)

InventoryGroup=100
ItemName="Rifle"
beltDescription="RIFLE"

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)



if(Other.isa('DeusExPlayer'))
{
DeusExPlayer(Owner).ClientMessage("Weapon can not be used on players.");
return;
}
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




coopWeaponShotgun.uc (extends WeaponSawedOffShotgun)

InventoryGroup=96
ItemName="Shotgun"
beltDescription="SHOT"

GiveTo (pawn Other)


super.Giveto(Other);
Other.ClientMessage("Special Weapon: Can't be used on Players.");

ProcessTraceHit (Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)



if(Other.isa('DeusExPlayer'))
{
DeusExPlayer(Owner).ClientMessage("Weapon can not be used on players.");
return;
}
super.ProcessTraceHit(other, hitlocation, hitnormal, x, y, z);


TestMPBeltSpot (int BeltSpot) -> bool


return ( (BeltSpot >= 1) && (BeltSpot <=9) );




kebab.uc (extends FoodMMRPG)

ItemName="Kebab"
PlayerViewMesh=LodMesh'PGAssets.kebab'
PlayerViewScale=0.150000
PickupViewMesh=LodMesh'PGAssets.kebab'
PickupViewScale=0.150000
ThirdPersonMesh=LodMesh'PGAssets.kebab'
ThirdPersonScale=0.150000
Icon=Texture'PGAssets.Skins.KebabBelt'
largeIcon=Texture'PGAssets.Skins.KebabBelt'
largeIconWidth=42
largeIconHeight=46
beltDescription="KEBAB"
Mesh=LodMesh'PGAssets.kebab'
DrawScale=0.150000
MultiSkins(0)=Texture'CoreTexEarth.Earth.LakeBed_A'
MultiSkins(1)=Texture'CoreTexMetal.Metal.Galvanzd'
CollisionRadius=7.000000
CollisionHeight=2.000000
Mass=3.000000



mpCigaretteMachine.uc (extends ElectronicDevices)

var() class ItemSale;
var() int Price;
ItemName="Cigarette Machine"
Physics=PHYS_None
Mesh=LodMesh'DeusExDeco.CigaretteMachine'
SoundRadius=8
SoundVolume=96
AmbientSound=Sound'Ambient.Ambient.HumLight3'
CollisionRadius=27.000000
CollisionHeight=26.320000
Mass=150.000000
Buoyancy=100.000000

BeginPlay


Super.BeginPlay();

if(ItemSale == None)
ItemSale = class'DeusEx.Cigarettes';

Frob (actor Frobber, Inventory frobWith)


local DeusExPlayer player;
local Vector loc;
local Inventory product;


Super.Frob(Frobber, frobWith);

player = DeusExPlayer(Frobber);

if (player != None)
{
if (player.Credits >= price)
{
PlaySound(sound'VendingCoin', SLOT_None);
loc = Vector(Rotation) * CollisionRadius * 0.8;
loc.Z -= CollisionHeight * 0.6;
loc += Location;

product = Spawn(ItemSale, None,, loc);

if (product != None)
{
PlaySound(sound'VendingSmokes', SLOT_None);
if(product.isA('Estus'))
Estus(product).bEstusArmed=False;
if(product.isA('PoisonEstus'))
PoisonEstus(product).bEstusArmed=False;
product.Velocity = Vector(Rotation) * 100;
product.bFixedRotationDir = True;
product.Lifespan = 6;
product.RotationRate.Pitch = (32768 - Rand(65536)) * 4.0;
product.RotationRate.Yaw = (32768 - Rand(65536)) * 4.0;
}

player.Credits -= price;
player.ClientMessage("Bought "$Product.itemname$" for "$Price$" credits.");
}
else
player.ClientMessage("Needs"@Price@"credits.");
}




mpVendingMachine.uc (extends ElectronicDevices)

var() ESkinColor SkinColor;
var() class ItemSale;
var() int Price;
bCanBeBase=True
ItemName="Vending Machine"
Mesh=LodMesh'DeusExDeco.VendingMachine'
SoundRadius=8
SoundVolume=96
AmbientSound=Sound'Ambient.Ambient.HumLow3'
CollisionRadius=34.000000
CollisionHeight=50.000000
Mass=150.000000
Buoyancy=100.000000

BeginPlay


Super.BeginPlay();

switch (SkinColor)
{
case SC_Drink: Skin = Texture'VendingMachineTex1'; ItemSale = class'DeusEx.Sodacan'; break;
case SC_Snack: Skin = Texture'VendingMachineTex2'; break;
}

if(ItemSale == None)
ItemSale = class'DeusEx.Candybar';

Frob (actor Frobber, Inventory frobWith)


local DeusExPlayer player;
local Vector loc;
local Inventory product;


Super.Frob(Frobber, frobWith);

player = DeusExPlayer(Frobber);

if (player != None)
{
if (player.Credits >= Price)
{
PlaySound(sound'VendingCoin', SLOT_None);
loc = Vector(Rotation) * CollisionRadius * 0.8;
loc.Z -= CollisionHeight * 0.7;
loc += Location;

product = Spawn(ItemSale, None,, loc);

if (product != None)
{
if (product.IsA('Sodacan'))
PlaySound(sound'VendingCan', SLOT_None);
else
PlaySound(sound'VendingSmokes', SLOT_None);

if(product.isA('Estus'))
Estus(product).bEstusArmed=False;
if(product.isA('PoisonEstus'))
PoisonEstus(product).bEstusArmed=False;

product.Velocity = Vector(Rotation) * 100;
product.bFixedRotationDir = True;
product.Lifespan = 6;
product.RotationRate.Pitch = (32768 - Rand(65536)) * 4.0;
product.RotationRate.Yaw = (32768 - Rand(65536)) * 4.0;
}

player.Credits -= Price;
player.ClientMessage("Bought "$Product.itemname$" for "$Price$" credits.");
}
else
player.ClientMessage("Needs"@Price@"credits.");
}




psRepeater.uc (extends PGActors)

var() string RepeaterString;
var() int RepeaterTimes;
var int TimesRun;
var() string psRef;
RepeaterTimes=5

BeepToAll (string str)


local DeusExPlayer DXP;


foreach allactors(class'DeusExPlayer',DXP)
{
DXP.ClientMessage(str,'Say');
}

Engage (string Stringz, int Timerz, int Repeatz)


SetTimer(float(Timerz),False);

Timer


if(TimesRun != RepeaterTimes)
{
BeepToAll(RepeaterString);
TimesRun++;
}
else
{
BeepToAll(RepeaterString);
Destroy();
}




psTeleRing1.uc (extends Actor)

var DeusExPlayer Target;
var int QT;
var vector OriginLoc, TPLoc;
var float size;
size=5.000000
LifeSpan=0.500000
DrawType=DT_Mesh
Style=STY_Translucent
Skin=Texture'DeusExItems.Skins.FlatFXTex41'
Mesh=LodMesh'DeusExItems.FlatFX'
bUnlit=True

PostBeginPlay


local Rotator rot;


Super.PostBeginPlay();

rot.Pitch = 16384;
rot.Roll = 0;
rot.Yaw = Rand(65535);
SetRotation(rot);

if (size > 5)
Skin = Texture'FlatFXTex43';

SetTimer(0.7,False);

Tick (float deltaTime)


DrawScale = size * (Default.LifeSpan - LifeSpan) / Default.LifeSpan;
ScaleGlow = LifeSpan / Default.LifeSpan;

Timer


local psTeleRing1 pn1, pn2;
local vector finLoc;
local PSAfterEffect PSAE;


if(QT==0)
{
if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z += 25;

pn1 = Spawn(class'psTeleRing1',,,finLoc);
pn1.QT = 1;
pn1.Target = Target;
pn1.TPLoc = TPLoc;

if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z -= 25;

pn2 = Spawn(class'psTeleRing1',,,finLoc);
pn2.QT = 2;
pn2.Target = Target;
pn2.TPLoc = TPLoc;
}

if(QT==1)
{
if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z += 50;

pn1 = Spawn(class'psTeleRing1',,,finLoc);
pn1.QT = 3;
pn1.Target = Target;
pn1.TPLoc = TPLoc;
}

if(QT==2)
{
if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z -= 50;

pn1 = Spawn(class'psTeleRing1',,,finLoc);
pn1.QT = 4;
pn1.Target = Target;
pn1.TPLoc = TPLoc;
}

if(QT==3)
{
if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z += 75;

pn1 = Spawn(class'psTeleRing1',,,finLoc);
pn1.QT = 5;
pn1.Target = Target;
pn1.TPLoc = TPLoc;
}

if(QT==4)
{
if(Target != None)
finLoc = Target.Location;
else
finLoc = OriginLoc;

finloc.Z -= 75;

pn1 = Spawn(class'psTeleRing1',,,finLoc);
pn1.QT = 6;
pn1.Target = Target;
pn1.TPLoc = TPLoc;
}

if(QT==6)
{
PSAE = Spawn(class'PSAfterEffect');
PSAE.AttachToPlayer(Target);
Target.bMovable=True;
Target.SetCollision(false, false, false);
Target.bCollideWorld = true;
Target.GotoState('PlayerWalking');
Target.SetLocation(TPLoc);
Target.SetCollision(true, true , true);
Target.SetPhysics(PHYS_Walking);
Target.bCollideWorld = true;
Target.GotoState('PlayerWalking');
Target.ClientReStart();

}




redbull.uc (extends FoodMMRPG)

rechargeAmount=100
ItemName="Red Bull"
ItemArticle="a can of"
PlayerViewMesh=LodMesh'DeusExItems.Sodacan'
PlayerViewScale=1.200000
PickupViewMesh=LodMesh'DeusExItems.Sodacan'
PickupViewScale=1.200000
ThirdPersonMesh=LodMesh'DeusExItems.Sodacan'
ThirdPersonScale=1.200000
Icon=Texture'DeusExUI.Icons.BeltIconSoyFood'
largeIcon=Texture'DeusExUI.Icons.LargeIconSoyFood'
largeIconWidth=42
largeIconHeight=46
beltDescription="REDBULL"
Skin=Texture'PGAssets.Skins.RedBullTex1'
Mesh=LodMesh'DeusExItems.Sodacan'
DrawScale=1.200000
MultiSkins(0)=Texture'PGAssets.Skins.RedBullTex1'
CollisionRadius=3.000000
CollisionHeight=4.500000
Mass=3.000000



sandwich.uc (extends FoodMMRPG)

rechargeAmount=30
ItemName="Chicken Salad Sandwich"
PlayerViewMesh=LodMesh'PGAssets.sandwich'
PickupViewMesh=LodMesh'PGAssets.sandwich'
ThirdPersonMesh=LodMesh'PGAssets.sandwich'
Icon=Texture'PGAssets.Skins.SandwichBelt'
largeIcon=Texture'PGAssets.Skins.SandwichBelt'
largeIconWidth=42
largeIconHeight=46
beltDescription="CHK.SNDWCH"
Mesh=LodMesh'PGAssets.sandwich'
MultiSkins(0)=Texture'PGAssets.Skins.SandwichTex2'
MultiSkins(1)=Texture'PGAssets.Skins.SandwichTex1'
CollisionRadius=8.000000
CollisionHeight=4.000000
Mass=3.000000