ACShard.uc (extends CraftingMaterial)
DecoResult=Class'PartyStuff.acrate'
NumNeeded=5
DispStr="Requires 5x to make Ammo Crate"
ItemName="Ammo Crate shard"
beltDescription="AC"
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
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
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;
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
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;
var DXScriptedPawn SpawnedAlly;
var() int Cooldown;
var bool bCooling;
Cooldown=255
bHidden=True
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
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
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"
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
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"
MaxAmmo=10
ItemName="Flash Bangs"
beltDescription="F-Bangs"
AmmoFreezeGrenade.uc (extends DeusExAmmo)
AmmoAmount=2
MaxAmmo=10
ItemName="FreezeGrenade"
beltDescription="ICER"
MaxAmmo=10
ItemName="FreezeGrenade"
beltDescription="ICER"
AmmoKB.uc (extends DeusExAmmo)
AmmoAmount=2
MaxAmmo=5
ItemName="Knife Grenades"
Description="It'll shred"
beltDescription="KB"
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"
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
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
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
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"
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
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
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"
MaxAmmo=10
ItemName="Speed"
beltDescription="Speed"
AmmoTelefrag.uc (extends DeusExAmmo)
AmmoAmount=2
MaxAmmo=5
ItemName="Telefrag Grenades"
Description="It'll telefrag"
beltDescription="T-FRAG"
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
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
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
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"
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"
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;
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
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
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;
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
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;
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
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'
beltDescription="BLT.SDWCH"
MultiSkins(1)=Texture'PGAssets.Skins.BLTTex1'
BasketballMP.uc (extends ThrownProjectile)
var bool bDoomedToDestroy;
var bool bAlreadyScored;
var bool bAllowBumping;
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
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
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;
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
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;
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
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
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"
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;
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
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;
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
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;
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;
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"
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;
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'
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;
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;
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
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;
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
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
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;
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
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
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;
var(CheckClass) eChk CheckClass;
var(CheckClass) bool bAdminOverride;
ItemName="Checker Switch"
Mesh=LodMesh'DeusExDeco.Switch1'
CollisionRadius=2.630000
CollisionHeight=2.970000
Mass=10.000000
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;
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
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;
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
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;
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
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;
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
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
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;
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
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;
var() class
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
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;
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
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)
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)
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)
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"
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;
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"
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;
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
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
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=""
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
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
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
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
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;
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
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
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
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
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
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'
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;
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;
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"
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;
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
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
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
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
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;
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
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
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
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
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"
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;
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
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
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)
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;
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
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
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
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"
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'
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
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'
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;
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
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
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'
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
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
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
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
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
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
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
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
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
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
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
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;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gdefault'
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;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gblue'
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;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gpink'
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;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gred'
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;
var float maxDrawScale;
var float time;
spreadTime=0.100000
maxDrawScale=0.500000
Texture=Texture'PGAssets.Skins.gyellow'
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
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
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
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
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
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
ItemArticle="a"
Damage=20.000000
GreaselShoot.uc (extends GreaselSpit)
ItemName="Bio Spit"
ItemArticle="a"
Damage=20.000000
ItemArticle="a"
Damage=20.000000
HiddenFrob.uc (extends DeusExDecoration)
var() bool bMessage, bTrigger, bTimedrepeat;
var() int TimedRepeat;
var() string mMessage;
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
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
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
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;
var bool bInBox;
var PlayerPawn StoredPlayer;
var bool bFixWeapons;
var bool bActive;
bFixWeapons=True
bActive=True
bInvincible=True
bPushable=False
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;
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;
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
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;
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
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;
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
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
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;
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
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
local class
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
if(JobInventory2 != "")
invy2 = class
if(JobInventory3 != "")
invy3 = class
if(JobInventory4 != "")
invy4 = 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
if(JobInventory2 != "")
invy2 = class
if(JobInventory3 != "")
invy3 = class
if(JobInventory4 != "")
invy4 = 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
if(JobInventory2 != "")
invy2 = class
if(JobInventory3 != "")
invy3 = class
if(JobInventory4 != "")
invy4 = 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'
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;
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
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;
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
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;
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
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
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?
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
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'
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
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;
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
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;
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
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
}
}
// 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;
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'
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
{
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
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
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
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;
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
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;
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
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'
Skin=Texture'PGAssets.Skins.YellowRay'
Mesh=LodMesh'DeusExItems.FlatFX'
MenuAlert.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;
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
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
CreateMenuLabelX (int posX, int posY, String strLabel, Window winParent) -> MenuUILabelWindow
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;
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);
Crt (string title, string str)
local float i;
i = ClientWidth;
i += Len(Str)*10;
SetTitle(title);
CreateMenuLabelX(10, 22, str, winClient);
SetSize(ClientWidth,ClientHeight);
AskParentForReconfigure();
InitWindow
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();
RawKeyPressed (EInputKey key, EInputState iState, bool bRepeat) -> bool
if (key == IK_Enter)// &&//(iState == IST_Release))
{
return False;
}
else
{
return false;
}
SetMessageText (String msgText)
winText.SetText(msgText);
AskParentForReconfigure();
VirtualKeyPressed (EInputKey key, bool bRepeat) -> bool
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)
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;
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
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;
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;
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
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
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
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
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"
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;
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
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
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
TempName = string(carcian.Class);
if( InStr(TempName,"Carcass")>=0 )
CarcassName = Left( TempName, InStr(TempName,"Carcass") );
Spawn(class
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;
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
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;
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
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;
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
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;
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
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;
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
}
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;
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;
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
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);
}
GetLink (playerpawn check) -> DXScriptedPawn
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
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
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;
var float size;
size=5.000000
LifeSpan=4.750000
Skin=FireTexture'Effects.liquid.Virus_SFX'
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;
var bool bPSActive;
bPSActive=True
ItemName="Enter the arena!"
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;
var bool bPSActive;
bPSActive=True
ItemName="Exit the arena!"
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;
var bool bPSActive;
bPSActive=True
ItemName="Begin the battle!"
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;
var() bool bRunning;
var() music myTrack;
var() EMusicTransition Transition;
var() byte SongSection;
var() byte CdTrack;
var() name PSATags[10];
var() class
var() class
var() class
var() class
var() class
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;
var() string Messages[250];
var() string Notifications[250];
var() name ZoneTag;
var() bool bDebug;
var() string Group;
var() string InfoProp[16];
var class
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
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
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
else if(mailstring ~= "mark")
xAlert("Help", "|P1Format: mark
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+
else if(mailstring ~= "cred-")
xAlert("Help", "|P1Format: cred-
else if(mailstring ~= "give")
xAlert("Help", "|P1Format: give
else if(mailstring ~= "clearitem")
xAlert("Help", "|P1Format: clearitem
else if(mailstring ~= "setusername")
xAlert("Help", "|P1Format: setusername
else if(mailstring ~= "setpass")
xAlert("Help", "|P1Format: setpass
else if(mailstring ~= "alert")
xAlert("Help", "|P1Format: alert
else if(mailstring ~= "exec")
xAlert("Help", "|P1Format: exec
else if(mailstring ~= "mail")
xAlert("Help", "|P1Format: mailsend
else if(mailstring ~= "me")
xAlert("Help", "|P1Format: me: |P2Shows basic computer information.");
else if(mailstring ~= "ping")
xAlert("Help", "|P1Format: ping
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<
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<
}
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
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;
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
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;
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
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;
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;
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
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;
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
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;
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
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'
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'
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
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;
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
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
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;
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
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;
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
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;
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
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;
var() float respawnDelay;
var rotator OrigRotation;
var vector OrigLocation;
var bool bRespawning;
var scriptedpawn CurrentPawn;
var name OrigOrders, OrigState;
var class
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
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;
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
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
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;
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
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
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;
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
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;
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;
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
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
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
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];
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
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;
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;
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;
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
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
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
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"
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
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;
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
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;
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)
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;
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
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"
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;
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
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;
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
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
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;
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)
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
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'
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
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;
var ScoundrelMarker SM, LM;
var bool bSelectionProcess;
var PGGames myRef;
var class
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;
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"
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;
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
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;
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;
var(RPG) class
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
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;
var(RPG) class
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
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
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;
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
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
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;
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
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;
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
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;
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
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
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
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'
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
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'
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
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
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
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
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
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
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
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
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
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;
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"
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
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"
ItemArticle="surf knife"
Tick (float DeltaTime)
Super.Tick(DeltaTime);
Owner.SetLocation(Location);
SurfRocket.uc (extends Rocket)
ItemName="bombing"
ItemArticle="suicide"
ItemArticle="suicide"
Tick (float DeltaTime)
Super.Tick(DeltaTime);
Owner.SetLocation(Location);
TCAutoTimeTrigger.uc (extends Actor)
var() float TCDelay;
var() name Events[10];
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;
var string sMessage;
var float fDelay;
var DXScriptedPawn pSender;
LifeSpan=1.000000
NetPriority=1.500000
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;
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
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
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
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;
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
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;
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
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;
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
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
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)
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)
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)
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)
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)
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;
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
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;
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
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
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
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;
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
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;
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;
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
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;
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
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;
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
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
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;
var() int MaxBalls;
var vector SpawnPointBB;
MaxBalls=3
ItemName="Press to bring more balls!"
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;
var() name KickedClasses;
var() bool bKillVelocity;
var() bool bRandomize;
KickedClasses=DeusExPlayer
bDirectional=True
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
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
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
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
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
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
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;
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)
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
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
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'
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;
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
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
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
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;
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
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;
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
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
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
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;
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
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;
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
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
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"
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
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
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)
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
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;
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"
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
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
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;
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
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
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;
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
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
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
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
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;
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
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"
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
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'
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
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'
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'
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
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'
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'
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
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
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;
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
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
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
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'
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;
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"
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"
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"
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
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"
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'
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'
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'
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
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
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'
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;
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
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
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
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
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
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;
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
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
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
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;
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
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
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
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"
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
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'
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
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
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"
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"
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)
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
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;
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
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
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
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;
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
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"
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
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
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
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"
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"
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"
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
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
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
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;
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
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"
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
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
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
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
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
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
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
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
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
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;
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
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'
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"
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"
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"
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;
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+"
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"
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"
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
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;
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
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;
var() class
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
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;
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;
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
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
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
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