GFX card profile config file logging moved to debug only
WIP mode of guiSliderCtrl to be a filled rectangle instead of a textured UI Fixed bug with guiTextEditCtrl losing focus updating history passing malformed strings Updated WIP options menu Editor/Project settings WIP Updated editor theme to be consistent, and feed off the editor settings Updated popup menus to reference renamed profiles Added more in-progress modules for examples/stress testing
16
Templates/Modules/AI_Guard/AI_Guard.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
function AI_Guard::onCreate(%this)
|
||||
{
|
||||
exec("./Scripts/aiPlayer.cs");
|
||||
exec("./Scripts/guardTrigger.cs");
|
||||
|
||||
if(isObject(DatablockFilesList))
|
||||
{
|
||||
DatablockFilesList.add( "data/AI_Guard/Datablocks/aiPlayerDatablocks.cs" );
|
||||
DatablockFilesList.add( "data/AI_Guard/Datablocks/aiPlayerMarker.cs" );
|
||||
}
|
||||
}
|
||||
|
||||
function AI_Guard::onDestroy(%this)
|
||||
{
|
||||
}
|
||||
|
||||
15
Templates/Modules/AI_Guard/AI_Guard.module
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<ModuleDefinition
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
ModuleId="AI_Guard"
|
||||
VersionId="1"
|
||||
Group="Game"
|
||||
scriptFile="AI_Guard.cs"
|
||||
CreateFunction="onCreate"
|
||||
DestroyFunction="onDestroy">
|
||||
<DeclaredAssets
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
Extension="asset.taml"
|
||||
Recurse="true" />
|
||||
</ModuleDefinition>
|
||||
53
Templates/Modules/AI_Guard/Datablocks/aiPlayerDatablocks.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
// aiPlayerDatablocks.cs
|
||||
// breaks out the datablocks for aiguard.cs to make them easier to edit.
|
||||
// also manages the trigger controller
|
||||
|
||||
//////////////////////////////////////
|
||||
//
|
||||
// TRIGGER CONTROLLER
|
||||
// This code handles the placing and behavior of aiSoldierTriggers
|
||||
/////////////////////////////////////////
|
||||
|
||||
datablock TriggerData(guardTrigger)
|
||||
{
|
||||
tickPeriodMS = 100;
|
||||
};
|
||||
|
||||
////////////////////////////////////////
|
||||
//This is the default datablock for the Guard.
|
||||
//I changed the stock datablock name from those used in AIPLAYER.CS
|
||||
//I did this to allow me to create different classes of bots with their own
|
||||
//thinking and reaction routines for each class.
|
||||
///////////////////////////////////
|
||||
//
|
||||
//You can specifiy as many datablocks as you have characters.
|
||||
//The first variable after PlayerData must be a unique name. The second variable (after the semicolon)
|
||||
//must be a valid body type.
|
||||
|
||||
datablock PlayerData(DemoPlayer : DefaultPlayerData)
|
||||
{
|
||||
maxDamage = 100;
|
||||
|
||||
maxForwardSpeed = 14;
|
||||
maxBackwardSpeed = 13;
|
||||
maxSideSpeed = 13;
|
||||
|
||||
//The art used by this datablock
|
||||
shapeFile = "data/Soldier/Shapes/soldier_Rigged.DAE";//"art/shapes/actors/Soldier/soldier_rigged.DAE";
|
||||
|
||||
//Set the bot's inventory so it can use different weapons
|
||||
maxInv[Rifle] = 1;
|
||||
maxInv[BulletAmmo] = 1000;
|
||||
maxInv[RocketLauncher] = 1;
|
||||
maxInv[RocketLauncherAmmo] = 1000;
|
||||
maxInv[GrenadeLauncher] = 1;
|
||||
maxInv[GrenadeLauncherAmmo] = 1000;
|
||||
|
||||
maxInvRifle = "1";
|
||||
maxInvBulletAmmo = "1000";
|
||||
maxInvGrenadeLauncher = "1";
|
||||
maxInvGrenadeLauncherAmmo = "1000";
|
||||
maxInvRocketLauncher = "1";
|
||||
maxInvRocketLauncherAmmo = "1000";
|
||||
};
|
||||
|
||||
16
Templates/Modules/AI_Guard/Datablocks/aiPlayerMarker.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
//The AIPlayer marker is placed in the map during edit mode. When the map is loaded the
|
||||
//marker is replaced by a guard player. (Assuming that the $AI_GUARD_ENABLED variable is set
|
||||
//to true.) The marker is hidden or not depending on the value set in $AI_GUARD_MARKER_HIDE.
|
||||
//The AIPlayer marker can use a dynamic variable - set during map creation - called 'respawn'
|
||||
//Creating and setting the 'respawn' variable will override the default value set in
|
||||
//$AI_GUARD_DEFAULTRESPAWN. This allows more freedom in determining which bots respawn and which do not.
|
||||
|
||||
datablock StaticShapeData(AIPlayerMarker)
|
||||
{
|
||||
// Mission editor category, this datablock will show up in the
|
||||
// specified category under the "shapes" root category.
|
||||
category = "AIMarker";
|
||||
|
||||
// Basic Item properties
|
||||
shapeFile = "data/Soldier/Shapes/soldier_Rigged.DAE";//"art/shapes/actors/Soldier/soldier_rigged.DAE";
|
||||
};
|
||||
1639
Templates/Modules/AI_Guard/Scripts/aiPlayer.cs
Normal file
34
Templates/Modules/AI_Guard/Scripts/guardTrigger.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
function guardTrigger::onEnterTrigger(%this, %trigger, %obj)
|
||||
{
|
||||
echo(%trigger @ " has been triggered!");
|
||||
// we've been triggered. Now check to see if the player triggered the trigger
|
||||
// we don't want other enemies to keep spawing more enemies!
|
||||
%tgtid = AIPlayer::GetClosestPlayer(%trigger);
|
||||
//echo("nearest human is " @ %tgtid);
|
||||
// check to see if the player triggered this.
|
||||
if (%tgtid == %obj)
|
||||
{
|
||||
// if triggerMany is set, then we shouldn't do anything. (or do something different.)
|
||||
// if you want a trigger to always spawn an enemy, set the trigger's triggerMany value to "true"
|
||||
// default behavior is to trigger once.
|
||||
if (!%trigger.triggerMany && !%trigger.doneOnce)
|
||||
{
|
||||
|
||||
// set the spawnGroup variable to pass on to the spawn function
|
||||
%spawnGroup = %trigger.spawnGroup;
|
||||
|
||||
// let the game know we've already been triggered once.
|
||||
%trigger.doneOnce = true;
|
||||
|
||||
// spawn the group
|
||||
AIPlayer::spawnByGroup(%spawnGroup);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// we've been triggered before. Don't do anything
|
||||
// If you wanted to do something different, this is where you would put it.
|
||||
}
|
||||
}
|
||||
}
|
||||
9
Templates/Modules/PostFXPack/PostFXPack.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
function PostFXPack::onCreate(%this)
|
||||
{
|
||||
exec("./Scripts/postFXPack.cs");
|
||||
}
|
||||
|
||||
function PostFXPack::onDestroy(%this)
|
||||
{
|
||||
}
|
||||
|
||||
15
Templates/Modules/PostFXPack/PostFXPack.module
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<ModuleDefinition
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
ModuleId="PostFXPack"
|
||||
VersionId="1"
|
||||
Group="Game"
|
||||
scriptFile="PostFXPack.cs"
|
||||
CreateFunction="onCreate"
|
||||
DestroyFunction="onDestroy">
|
||||
<DeclaredAssets
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
Extension="asset.taml"
|
||||
Recurse="true" />
|
||||
</ModuleDefinition>
|
||||
25
Templates/Modules/PostFXPack/Scripts/postFX.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//*****************************************************************************
|
||||
// Shaders ( For Custom Materials )
|
||||
//*****************************************************************************
|
||||
351
Templates/Modules/PostFXPack/Scripts/postFXPack.cs
Normal file
|
|
@ -0,0 +1,351 @@
|
|||
// PIXELATE
|
||||
$Pixelate::PixelWidth = 10.0;
|
||||
$Pixelate::PixelHeight = 10.0;
|
||||
singleton ShaderData( PixelateShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/pixelateP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( PixelatePostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = PixelateShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function PixelatePostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$pixel_w", $Pixelate::PixelWidth);
|
||||
%this.setShaderConst("$pixel_h", $Pixelate::PixelHeight);
|
||||
%this.setShaderConst("$sizeX",getWord($pref::Video::mode, 0));
|
||||
%this.setShaderConst("$sizeY",getWord($pref::Video::mode, 1));
|
||||
}
|
||||
|
||||
// BLURRED VISION
|
||||
$BlurredVisionIntensity = 1.0;
|
||||
singleton ShaderData( BlurredVisionShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/blurredVisionP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( BlurredVisionPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = BlurredVisionShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function BlurredVisionPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$BlurredVisionIntensity", $BlurredVisionIntensity);
|
||||
}
|
||||
|
||||
// DREAM VIEW
|
||||
$DreamViewIntensity = 1.0;
|
||||
singleton ShaderData( DreamViewShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/dreamviewP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( DreamViewPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = DreamViewShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function DreamViewPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$DreamViewIntensity", $DreamViewIntensity);
|
||||
}
|
||||
|
||||
// CROSS STITCH
|
||||
$CrossStichPostEffect::StitchingSize = 6.0;
|
||||
$CrossStichPostEffect::Invert = 0;
|
||||
singleton ShaderData( CrossStitchShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/crossStitchP.hlsl";
|
||||
pixVersion = 3.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( CrossStitchPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = CrossStitchShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function CrossStitchPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst( "$time", ($Sim::time - %this.timeStart) );
|
||||
%this.setShaderConst("$sizeX",getWord($pref::Video::mode, 0));
|
||||
%this.setShaderConst("$sizeY",getWord($pref::Video::mode, 1));
|
||||
%this.setShaderConst("$stitching_size", $CrossStichPostEffect::StitchingSize);
|
||||
%this.setShaderConst("$invert", $CrossStichPostEffect::Invert);
|
||||
}
|
||||
|
||||
// POSTERISATION
|
||||
$PosterisationPostEffect::Gamma = 0.6;
|
||||
$PosterisationPostEffect::NumColors = 4.0;
|
||||
singleton ShaderData( PosterisationShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/posterisationP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( PosterisationPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = PosterisationShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function PosterisationPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$gamma", $PosterisationPostEffect::Gamma);
|
||||
%this.setShaderConst("$numColors", $PosterisationPostEffect::NumColors);
|
||||
}
|
||||
|
||||
// NIGHT VISION 2
|
||||
$NightVisionPostEffect::LuminanceThreshold = 0.2;
|
||||
$NightVisionPostEffect::ColorAmplification = 4.0;
|
||||
|
||||
singleton ShaderData( NightVision2Shader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/nightVision2P.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( NightVision2Fx )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = NightVision2Shader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function NightVision2Fx::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$luminanceThreshold", $NightVisionPostEffect::LuminanceThreshold);
|
||||
%this.setShaderConst("$colorAmplification", $NightVisionPostEffect::ColorAmplification);
|
||||
}
|
||||
|
||||
// LENS CIRCLE
|
||||
$LensCirclePostEffect::RadiusX = 0.6;
|
||||
$LensCirclePostEffect::RadiusY = 0.2;
|
||||
|
||||
singleton ShaderData( LensCircleShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/lensCircleP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( LensCirclePostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = LensCircleShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function LensCirclePostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$radiusX", $LensCirclePostEffect::RadiusX);
|
||||
%this.setShaderConst("$radiusY", $LensCirclePostEffect::RadiusY);
|
||||
}
|
||||
|
||||
// CHROMATIC ABERRATION
|
||||
$ChromaticAberrationPostEffect::Intensity = 0.3;
|
||||
singleton ShaderData( ChromaticAberrationShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/chromaticAberrationP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( ChromaticAberrationPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = ChromaticAberrationShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function ChromaticAberrationPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$intensity", $ChromaticAberrationPostEffect::Intensity);
|
||||
}
|
||||
|
||||
// RGB
|
||||
$RGBPostEffect::RedLevel = 1.0;
|
||||
$RGBPostEffect::GreenLevel = 1.0;
|
||||
$RGBPostEffect::BlueLevel = 1.0;
|
||||
singleton ShaderData( RGBShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/rgbP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( RGBPostEffect )
|
||||
{
|
||||
isEnabled = false;
|
||||
allowReflectPass = false;
|
||||
renderTime = "PFXAfterBin";
|
||||
renderBin = "GlowBin";
|
||||
shader = RGBShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
renderPriority = 10;
|
||||
};
|
||||
|
||||
function RGBPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$redLevel", $RGBPostEffect::RedLevel);
|
||||
%this.setShaderConst("$greenLevel", $RGBPostEffect::GreenLevel);
|
||||
%this.setShaderConst("$blueLevel", $RGBPostEffect::BlueLevel);
|
||||
}
|
||||
|
||||
// ZOOM BLUR
|
||||
$ZoomBlur::Amount = 0.99;
|
||||
$ZoomBlur::Samples = 6;
|
||||
|
||||
singleton ShaderData( ZoomBlurShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/zoomBlurP.hlsl";
|
||||
samplerNames[0] = "$inputTex";
|
||||
pixVersion = 3.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( ZoomBlurPostEffect )
|
||||
{
|
||||
renderTime = "PFXAfterDiffuse";
|
||||
shader = ZoomBlurShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
};
|
||||
|
||||
function ZoomBlurPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$amount", $ZoomBlur::Amount);
|
||||
%this.setShaderConst("$samples", $ZoomBlur::Samples);
|
||||
}
|
||||
|
||||
// NEGATIVE
|
||||
singleton ShaderData( NegativeShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/negativeP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( NegativePostEffect )
|
||||
{
|
||||
renderTime = "PFXAfterDiffuse";
|
||||
shader = NegativeShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
};
|
||||
|
||||
// BLACK AND WHITE
|
||||
singleton ShaderData( BlackAndWhiteShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/blackAndWhiteP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( BlackAndWhitePostEffect )
|
||||
{
|
||||
renderTime = "PFXAfterDiffuse";
|
||||
shader = BlackAndWhiteShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
};
|
||||
|
||||
// MONOCHROME
|
||||
singleton ShaderData( MonochromeShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/monochromeP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( MonochromePostEffect )
|
||||
{
|
||||
renderTime = "PFXAfterDiffuse";
|
||||
shader = MonochromeShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
};
|
||||
|
||||
// EDGE DETECTION
|
||||
$EdgeDetection::Threshold = 0.01;
|
||||
|
||||
singleton ShaderData( EdgeDetectionShader )
|
||||
{
|
||||
DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
|
||||
DXPixelShaderFile = "shaders/common/postFx/Library/edgeDetectionP.hlsl";
|
||||
pixVersion = 2.0;
|
||||
};
|
||||
|
||||
singleton PostEffect( EdgeDetectionPostEffect )
|
||||
{
|
||||
renderTime = "PFXAfterDiffuse";
|
||||
shader = EdgeDetectionShader;
|
||||
stateBlock = PFX_DefaultStateBlock;
|
||||
texture[0] = "$backBuffer";
|
||||
};
|
||||
|
||||
function EdgeDetectionPostEffect::setShaderConsts(%this)
|
||||
{
|
||||
%this.setShaderConst("$threshold", $EdgeDetection::Threshold);
|
||||
}
|
||||
21
Templates/Modules/PostFXPack/Shaders/blackAndWhiteP.hlsl
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
base.a = 1.0f;
|
||||
|
||||
base.rgb = (base.r + base.g + base.b) / 3.0f;
|
||||
|
||||
if (base.r < 0.5)
|
||||
base.r = 0.0f;
|
||||
else
|
||||
base.r = 1.0f;
|
||||
|
||||
base.gb = base.r;
|
||||
|
||||
return base;
|
||||
}
|
||||
29
Templates/Modules/PostFXPack/Shaders/blurredVisionP.hlsl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float BlurredVisionIntensity;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.001 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.003 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.005 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.007 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.009 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.011 * BlurredVisionIntensity));
|
||||
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.001 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.003 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.005 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.007 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.009 * BlurredVisionIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.011 * BlurredVisionIntensity));
|
||||
|
||||
base = base / 15.0; // 9.5
|
||||
|
||||
return base;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
uniform float accumTime;
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float intensity;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float2 coords = IN.uv0;
|
||||
float2 uv = IN.uv0;
|
||||
|
||||
coords = (coords - 0.5) * 2.0;
|
||||
|
||||
float coordDot = dot(coords, coords);
|
||||
|
||||
float2 uvG = uv - TORQUE_TEX2D(backBuffer, IN.uv0).xy * intensity * coords * coordDot;
|
||||
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
|
||||
base.g = TORQUE_TEX2D(backBuffer, uvG).g;
|
||||
|
||||
return base;
|
||||
}
|
||||
39
Templates/Modules/PostFXPack/Shaders/crossStitchP.hlsl
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float time;
|
||||
uniform float sizeX; // rt_w
|
||||
uniform float sizeY; // rt_h
|
||||
uniform float stitching_size = 6.0;
|
||||
uniform int invert = 0;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = float4(0.0, 0.0, 0.0, 0.0);
|
||||
float size = stitching_size;
|
||||
float2 cPos = IN.uv0 * float2(sizeX, sizeY);
|
||||
float2 tlPos = floor(cPos / float2(size, size));
|
||||
tlPos *= size;
|
||||
int remX = int(cPos.x % size);
|
||||
int remY = int(cPos.y % size);
|
||||
if (remX == 0 && remY == 0)
|
||||
tlPos = cPos;
|
||||
float2 blPos = tlPos;
|
||||
blPos.y += (size - 1.0);
|
||||
if ((remX == remY) || (((int(cPos.x) - int(blPos.x)) == (int(blPos.y) - int(cPos.y)))))
|
||||
{
|
||||
if (invert == 1)
|
||||
base = float4(0.2, 0.15, 0.05, 1.0);
|
||||
else
|
||||
base = TORQUE_TEX2D(backBuffer, tlPos * float2(1.0/sizeX, 1.0/sizeY)) * 1.4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (invert == 1)
|
||||
base = TORQUE_TEX2D(backBuffer, tlPos * float2(1.0/sizeX, 1.0/sizeY)) * 1.4;
|
||||
else
|
||||
base = float4(0.0, 0.0, 0.0, 1.0);
|
||||
}
|
||||
return base;
|
||||
}
|
||||
30
Templates/Modules/PostFXPack/Shaders/dreamviewP.hlsl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float DreamViewIntensity;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.001 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.003 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.005 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.007 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.009 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0+(0.011 * DreamViewIntensity));
|
||||
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.001 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.003 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.005 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.007 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.009 * DreamViewIntensity));
|
||||
base += TORQUE_TEX2D(backBuffer, IN.uv0-(0.011 * DreamViewIntensity));
|
||||
|
||||
base.rgb = (base.r + base.g + base.b)/3.0;
|
||||
base = base / 9.5;
|
||||
|
||||
return base;
|
||||
}
|
||||
48
Templates/Modules/PostFXPack/Shaders/edgeDetectionP.hlsl
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float threshold;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
|
||||
const int NUM = 9;
|
||||
|
||||
const float2 c[NUM] =
|
||||
{
|
||||
float2(-0.0078125, 0.0078125),
|
||||
float2( 0.00 , 0.0078125),
|
||||
float2( 0.0078125, 0.0078125),
|
||||
float2(-0.0078125, 0.00 ),
|
||||
float2( 0.0, 0.0),
|
||||
float2( 0.0078125, 0.007 ),
|
||||
float2(-0.0078125,-0.0078125),
|
||||
float2( 0.00 , -0.0078125),
|
||||
float2( 0.0078125,-0.0078125),
|
||||
};
|
||||
|
||||
int i;
|
||||
float3 col[NUM];
|
||||
|
||||
for (i=0; i < NUM; i++)
|
||||
{
|
||||
col[i] = TORQUE_TEX2D(backBuffer, IN.uv0 + 0.2*c[i]);
|
||||
}
|
||||
|
||||
float3 rgb2lum = float3(0.30, 0.59, 0.11);
|
||||
float lum[NUM];
|
||||
for (i = 0; i < NUM; i++)
|
||||
{
|
||||
lum[i] = dot(col[i].xyz, rgb2lum);
|
||||
}
|
||||
|
||||
float x = lum[2]+ lum[8]+2*lum[5]-lum[0]-2*lum[3]-lum[6];
|
||||
float y = lum[6]+2*lum[7]+ lum[8]-lum[0]-2*lum[1]-lum[2];
|
||||
float edge =(x*x + y*y < threshold)? 1.0:0.0;
|
||||
|
||||
base.rgb *= edge;
|
||||
|
||||
return base;
|
||||
}
|
||||
14
Templates/Modules/PostFXPack/Shaders/lensCircleP.hlsl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float radiusX;
|
||||
uniform float radiusY;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
float dist = distance(IN.uv0, float2(0.5,0.5));
|
||||
base.rgb *= smoothstep(radiusX, radiusY, dist);
|
||||
return base;
|
||||
}
|
||||
13
Templates/Modules/PostFXPack/Shaders/monochromeP.hlsl
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
|
||||
base.rgb = (base.r + base.g + base.b) / 3.0f;
|
||||
|
||||
return base;
|
||||
}
|
||||
11
Templates/Modules/PostFXPack/Shaders/negativeP.hlsl
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
base.a = 0;
|
||||
return float4(1.0f, 1.0f, 1.0f, 1.0f) - base;
|
||||
}
|
||||
48
Templates/Modules/PostFXPack/Shaders/nightVision2P.hlsl
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
uniform float accumTime;
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float luminanceThreshold; // 0.2
|
||||
uniform float colorAmplification; // 4.0
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float speed = 100;
|
||||
float Yres = 1024;
|
||||
float brightness = 0.2;
|
||||
|
||||
float4 finalColor = float4(1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
float2 uv;
|
||||
uv.x = 0.4 * sin(accumTime * 50.0);
|
||||
uv.y = 0.4 * cos(accumTime * 50.0);
|
||||
//float m = TORQUE_TEX2D(maskTex, gl_TexCoord[0].st).r;
|
||||
//vec3 n = texture2D(noiseTex, (gl_TexCoord[0].st*3.5) + uv).rgb;
|
||||
float3 c = TORQUE_TEX2D(backBuffer, IN.uv0).rgb;
|
||||
|
||||
float lum = dot(float3(0.30, 0.59, 0.11), c);
|
||||
if (lum < luminanceThreshold)
|
||||
c *= colorAmplification;
|
||||
|
||||
float3 visionColor = float3(0.1, 0.95, 0.2);
|
||||
finalColor.rgb = c * visionColor;
|
||||
|
||||
// add noise
|
||||
float noise = IN.uv0.x * IN.uv0.y * accumTime * speed;
|
||||
noise = fmod(noise, 10) * fmod(noise, 100);
|
||||
noise = fmod(noise, 0.01);
|
||||
|
||||
float3 color = finalColor.rgb;
|
||||
color = color + color * saturate(noise.xxx * 200);
|
||||
|
||||
// add banding
|
||||
float sin,cos;
|
||||
sincos(IN.uv0.y * Yres, sin, cos);
|
||||
color += color * float3(sin, cos, sin) * brightness;
|
||||
|
||||
finalColor.rgb = color;
|
||||
|
||||
return finalColor;
|
||||
|
||||
}
|
||||
21
Templates/Modules/PostFXPack/Shaders/pixelateP.hlsl
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float pixel_w;
|
||||
uniform float pixel_h;
|
||||
uniform float sizeX;
|
||||
uniform float sizeY;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float2 uv = IN.uv0;
|
||||
|
||||
float3 base = float3(1.0, 0.0, 0.0);
|
||||
float dx = pixel_w * (1.0 / sizeX);
|
||||
float dy = pixel_h * (1.0 / sizeY);
|
||||
float2 coord = float2(dx*floor(uv.x/dx), dy*floor(uv.y/dy));
|
||||
base = TORQUE_TEX2D(backBuffer, coord).rgb;
|
||||
|
||||
return float4(base, 1.0);
|
||||
}
|
||||
17
Templates/Modules/PostFXPack/Shaders/posterisationP.hlsl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float gamma;
|
||||
uniform float numColors;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float3 base = TORQUE_TEX2D(backBuffer, IN.uv0).rgb;
|
||||
base = pow(base, float3(gamma, gamma, gamma));
|
||||
base = base * numColors;
|
||||
base = floor(base);
|
||||
base = base / numColors;
|
||||
base = pow(base, float3(1.0/gamma, 1.0/gamma, 1.0/gamma));
|
||||
return float4(base, 1.0);
|
||||
}
|
||||
16
Templates/Modules/PostFXPack/Shaders/rgbP.hlsl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "shadergen:/autogenConditioners.h"
|
||||
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
uniform float redLevel;
|
||||
uniform float greenLevel;
|
||||
uniform float blueLevel;
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
base.r *= redLevel;
|
||||
base.g *= greenLevel;
|
||||
base.b *= blueLevel;
|
||||
return base;
|
||||
}
|
||||
25
Templates/Modules/PostFXPack/Shaders/zoomBlurP.hlsl
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#include "shaders/common/postFx/postFx.hlsl"
|
||||
#include "../../torque.hlsl"
|
||||
|
||||
uniform float amount;
|
||||
uniform float samples;
|
||||
TORQUE_UNIFORM_SAMPLER2D(backBuffer, 0);
|
||||
|
||||
float4 main(PFXVertToPix IN) : TORQUE_TARGET0
|
||||
{
|
||||
float b = 0;
|
||||
|
||||
float4 base = TORQUE_TEX2D(backBuffer, IN.uv0);
|
||||
float2 uv = IN.uv0;
|
||||
|
||||
[loop] for (int i = 1; i <= samples; i++)
|
||||
{
|
||||
uv -= b;
|
||||
uv *= amount;
|
||||
b = (1-(1*pow(abs(amount), i))) / 2;
|
||||
uv += b;
|
||||
base += TORQUE_TEX2DLOD(backBuffer, float4(uv.x, uv.y, 0, 0));
|
||||
}
|
||||
|
||||
return base / (samples + 1);
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
$RPGDialogEditorPref::ActionPath = "art/dialogs/dla/";
|
||||
$RPGDialogEditorPref::QuestionPath = "art/dialogs/dlq/";
|
||||
$RPGDialogEditorPref::PortraitsPath = "art/dialogs/portraits/";
|
||||
$RPGDialogEditorPref::mainMod="art";
|
||||
$RPGDialogEditorPref::MaxOptions = 100;
|
||||
1378
Templates/Modules/RPGDialog/Scripts/RPGDialogEditor/editorMain.cs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
//
|
||||
// Copyright (c) 2001 GarageGames.Com
|
||||
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function initRPGDialogEditor()
|
||||
{
|
||||
exec("~/scripts/RPGDialogEditor/ui/MainEditorScreenGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditQuestionGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditAnswerGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/NewScriptPopup.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/SetPathsPopup.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditorOpeningGui.gui");
|
||||
|
||||
exec("~/scripts/RPGDialogEditor/defaults.cs");
|
||||
exec("~/scripts/RPGDialogEditor/prefs.cs");
|
||||
exec("~/scripts/RPGDialogEditor/editorMain.cs");
|
||||
|
||||
PopulateActionList();
|
||||
PopulateQuestionOptionsList();
|
||||
GlobalActionMap.bind(keyboard, "f5", toggleRPGDialogEditor);
|
||||
}
|
||||
|
||||
function openRPGDialogEditor()
|
||||
{
|
||||
$GuiBeforeRPGDialogEditor=Canvas.getContent();
|
||||
if(TextScript.getvalue()$="Current Q. Script:")
|
||||
Canvas.setContent(EditorOpeningGui);
|
||||
else
|
||||
Canvas.setContent(MainEditorScreenGui);
|
||||
Canvas.setCursor("DefaultCursor");
|
||||
}
|
||||
|
||||
function closeRPGDialogEditor()
|
||||
{
|
||||
Canvas.setContent($GuiBeforeRPGDialogEditor);
|
||||
Canvas.setCursor("DefaultCursor");
|
||||
}
|
||||
|
||||
|
||||
function toggleRPGDialogEditor(%val)
|
||||
{
|
||||
if (%val)
|
||||
{
|
||||
if (Canvas.getContent() == MainEditorScreenGui.getId() ||
|
||||
Canvas.getContent() == EditQuestionGui.getId() ||
|
||||
Canvas.getContent() == EditAnswerGui.getId() ||
|
||||
Canvas.getContent() == EditorOpeningGui.getId())
|
||||
closeRPGDialogEditor();
|
||||
else
|
||||
openRPGDialogEditor();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
68
Templates/Modules/RPGDialog/Scripts/RPGDialogEditor/main.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
//
|
||||
// Copyright (c) 2001 GarageGames.Com
|
||||
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function initEditor()
|
||||
{
|
||||
exec("~/scripts/RPGDialogEditor/ui/MainEditorScreenGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditQuestionGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditAnswerGui.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/NewScriptPopup.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/SetPathsPopup.gui");
|
||||
exec("~/scripts/RPGDialogEditor/ui/EditorOpeningGui.gui");
|
||||
|
||||
exec("~/scripts/RPGDialogEditor/defaults.cs");
|
||||
exec("~/scripts/RPGDialogEditor/prefs.cs");
|
||||
exec("~/scripts/RPGDialogEditor/editorMain.cs");
|
||||
}
|
||||
|
||||
function startEditor()
|
||||
{
|
||||
// The client mod has already set it's own content, but we'll
|
||||
// just load something new.
|
||||
Canvas.setContent(EditorOpeningGui);
|
||||
Canvas.setCursor("DefaultCursor");
|
||||
PopulateActionList();
|
||||
PopulateQuestionOptionsList();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Package overrides to initialize the mod.
|
||||
// This module currently loads on top of the client mod, but it probably
|
||||
// doesn't need to. Should look into having disabling the client and
|
||||
// doing our own canvas init.
|
||||
|
||||
package RPGDialogEditor {
|
||||
|
||||
function onStart()
|
||||
{
|
||||
Parent::onStart();
|
||||
echo("\n--------- Initializing MOD: RPGDialogEditor ---------");
|
||||
|
||||
if (!isObject(Canvas)) {
|
||||
// If the parent onStart didn't open a canvas, then we're
|
||||
// probably not running as a mod. We'll have to do the work
|
||||
// ourselves.
|
||||
initCanvas("RPGDialog Editor");
|
||||
}
|
||||
initEditor();
|
||||
startEditor();
|
||||
}
|
||||
|
||||
function onExit()
|
||||
{
|
||||
echo("Exporting RPGDialog editor prefs");
|
||||
export("$RPGDialogEditorPref::*", "~/prefs.cs", False);
|
||||
|
||||
if(isEventPending($RPGDialog::RefreshSchedule))
|
||||
cancel($RPGDialog::RefreshSchedule);
|
||||
|
||||
Parent::onExit();
|
||||
}
|
||||
|
||||
}; // package end.
|
||||
activatePackage(RPGDialogEditor);
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
$RPGDialogEditorPref::ActionPath = "art/dialogs/dla/";
|
||||
$RPGDialogEditorPref::mainMod = "art";
|
||||
$RPGDialogEditorPref::MaxOptions = 100;
|
||||
$RPGDialogEditorPref::PortraitsPath = "art/dialogs/portraits/";
|
||||
$RPGDialogEditorPref::QuestionPath = "art/dialogs/dlq/";
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
new GuiChunkedBitmapCtrl(EditAnswerGui) {
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
bitmap = "./background";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiScrollCtrl(AnswerEditScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "40 50";
|
||||
extent = "480 500";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "2 2";
|
||||
|
||||
new GuiMLTextEditCtrl(AnswerEdit) {
|
||||
profile = "GuiMLTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "0 2";
|
||||
extent = "450 500";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "1";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
|
||||
new GuiTextEditCtrl(ActionEdit) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "40 20";
|
||||
extent = "711 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
};
|
||||
|
||||
new GuiButtonCtrl(AnswerEditConfirmButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "523 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "OK";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "confirmAnswerEdit();";
|
||||
};
|
||||
new GuiButtonCtrl(AnswerEditCancelButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "598 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Cancel";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "Canvas.setContent(MainEditorScreenGui);";
|
||||
};
|
||||
new GuiButtonCtrl(AnswerEditDeleteButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "673 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Delete";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "MessageBoxYesNo( \"Delete Answer\", \"Do you really want to delete this answer?\", \"deleteAnswer(\"@$RPGDialog::EditAnswerNumber@\");\", \"\");";
|
||||
};
|
||||
new GuiScrollCtrl(ActionListScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "521 50";
|
||||
extent = "230 476";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "dynamic";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "2 2";
|
||||
|
||||
new GuiTextListCtrl(ActionList) {
|
||||
profile = "GuiTextListProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "0 0";
|
||||
extent = "196 401";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
enumerate = "0";
|
||||
resizeCell = "1";
|
||||
columns = "0";
|
||||
fitParentWidth = "0";
|
||||
clipColumnText = "0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
new GuiChunkedBitmapCtrl(EditQuestionGui) {
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
bitmap = "./background";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiScrollCtrl(QuestionEditScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "40 50";
|
||||
extent = "480 500";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "2 2";
|
||||
|
||||
new GuiMLTextEditCtrl(QuestionEdit) {
|
||||
profile = "GuiMLTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "0 2";
|
||||
extent = "450 500";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "1";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
new GuiButtonCtrl(QuestionEditConfirmButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "523 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "OK";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "confirmQuestionEdit();";
|
||||
};
|
||||
new GuiButtonCtrl(QuestionEditCancelButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "598 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Cancel";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "cancelQuestionEdit();";
|
||||
};
|
||||
new GuiButtonCtrl(QuestionEditClearButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "673 530";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Clear";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "QuestionEdit.settext(\"\");QuestionEditSound.setValue(\"\");";
|
||||
};
|
||||
new GuiScrollCtrl(QuestionOptionsScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "521 83";
|
||||
extent = "230 443";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "dynamic";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "2 2";
|
||||
|
||||
new GuiTextListCtrl(QuestionOptionsList) {
|
||||
profile = "GuiTextListProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "0 0";
|
||||
extent = "196 401";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
enumerate = "0";
|
||||
resizeCell = "1";
|
||||
columns = "0";
|
||||
fitParentWidth = "0";
|
||||
clipColumnText = "0";
|
||||
};
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "524 46";
|
||||
extent = "50 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Sound Profile:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(QuestionEditSound) {
|
||||
profile = "GuiPopUpMenuProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "521 62";
|
||||
extent = "135 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
maxPopupHeight = "500";
|
||||
};
|
||||
|
||||
new GuiButtonCtrl(QuestionEditRemoveSound) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "660 62";
|
||||
extent = "90 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Remove Sound";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "QuestionEditSound.setValue(\"\");";
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiChunkedBitmapCtrl(EditorOpeningGui) {
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
bitmap = "./background";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiBitmapCtrl() {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "bottom";
|
||||
position = "78 10";
|
||||
extent = "484 160";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
bitmap = "./title";
|
||||
wrap = "0";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiBitmapCtrl() {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "248 147";
|
||||
extent = "143 186";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
bitmap = "./box";
|
||||
wrap = "0";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiButtonCtrl(NewScriptButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "36 47";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "initNewScript();";
|
||||
text = "New Script";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl(LoadScriptButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "36 66";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "getLoadFilename(\"*.dlq\", LoadScript);";
|
||||
text = "Load Script...";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl(SetPathsButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "36 85";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "initSetPaths();";
|
||||
text = "Set Paths...";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl(QuitButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "36 117";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "MessageBoxYesNo( \"Quit Editor\", \"Do you really want to quit the editor?\", \"if($GuiBeforeRPGDialogEditor==0)quit();else closeRPGDialogEditor();\", \"\");";
|
||||
text = "Quit";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl(Version) {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "bottom";
|
||||
position = "58 18";
|
||||
extent = "26 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
text = "V.1.3";
|
||||
maxLength = "255";
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
|
@ -0,0 +1,265 @@
|
|||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiChunkedBitmapCtrl(MainEditorScreenGui) {
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
bitmap = "./background";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiTextCtrl(TextScript) {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "162 21";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Current Q. Script:";
|
||||
maxLength = "255";
|
||||
};
|
||||
|
||||
new GuiTextCtrl(TextScript2) {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "162 33";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Current A. Script:";
|
||||
maxLength = "255";
|
||||
};
|
||||
|
||||
new GuiTextCtrl(TextQuestionNumber) {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "162 208";
|
||||
extent = "46 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Question: 0/0";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiButtonCtrl(NewScriptButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "85 52";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "New Script";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "initNewScript();";
|
||||
};
|
||||
new GuiButtonCtrl(LoadScriptButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "85 71";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Load Script...";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "getLoadFilename(\"*.dlq\", LoadScript);";
|
||||
};
|
||||
new GuiButtonCtrl(NextQuestionButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "610 212";
|
||||
extent = "29 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Next";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "NextQuestion();";
|
||||
};
|
||||
new GuiButtonCtrl(PreviousQuestionButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "579 212";
|
||||
extent = "29 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Prev.";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "PreviousQuestion();";
|
||||
};
|
||||
|
||||
new GuiScrollCtrl(QuestionScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "160 50";
|
||||
extent = "480 160";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "4 2";
|
||||
|
||||
new GuiMLTextCtrl(QuestionText) {
|
||||
profile = "GuiMLTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "4 2";
|
||||
extent = "478 116";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "1";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
new GuiScrollCtrl(OptionsScroll) {
|
||||
profile = "GuiScrollProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "10 250";
|
||||
extent = "780 300";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "alwaysOn";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "2 2";
|
||||
|
||||
new GuiControl(OptionsControl) {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "4 2";
|
||||
extent = "770 290";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
};
|
||||
};
|
||||
new GuiButtonCtrl(editQuestionButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "642 123";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Edit Question";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "EditQuestion();";
|
||||
};
|
||||
new GuiButtonCtrl(newQuestionButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "642 51";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "New Question";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "newQuestion();";
|
||||
};
|
||||
new GuiButtonCtrl(newAnswerButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "715 230";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "New Answer";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "newAnswer();";
|
||||
};
|
||||
new GuiButtonCtrl(DeleteQuestionButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "642 76";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Del. Question";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "if($RPGDialog::Questions>0) MessageBoxYesNo( \"Delete Question\", \"Do you really want to delete this question?\", \"deleteQuestion();\", \"\");";
|
||||
};
|
||||
new GuiButtonCtrl(QuitButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "85 192";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Quit";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "MessageBoxYesNo( \"Quit Editor\", \"Do you really want to quit the editor?\", \"if($GuiBeforeRPGDialogEditor==0)quit();else closeRPGDialogEditor();\", \"\");";
|
||||
};
|
||||
new GuiButtonCtrl(SaveScriptButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "85 103";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Save Script";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "SaveScript();";
|
||||
};
|
||||
new GuiButtonCtrl(SaveScriptAsButton) {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "85 122";
|
||||
extent = "73 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Save As...";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
command = "InitSaveAsPhase1();";
|
||||
};
|
||||
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiControl(NewScriptPopup) {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiWindowCtrl() {
|
||||
profile = "GuiWindowProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "220 146";
|
||||
extent = "200 188";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "New Dialog Script";
|
||||
maxLength = "255";
|
||||
resizeWidth = "1";
|
||||
resizeHeight = "1";
|
||||
canMove = "0";
|
||||
canClose = "0";
|
||||
canMinimize = "0";
|
||||
canMaximize = "0";
|
||||
minSize = "50 50";
|
||||
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 28";
|
||||
extent = "50 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Question Script:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(NewScriptQuestion) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 44";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 68";
|
||||
extent = "30 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Action Script:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(NewScriptAction) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 84";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "56 156";
|
||||
extent = "40 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "NewScript();";
|
||||
helpTag = "0";
|
||||
text = "Create";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "104 156";
|
||||
extent = "40 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "Canvas.popDialog(NewScriptPopup);";
|
||||
helpTag = "0";
|
||||
text = "Cancel";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiControl(SetPathsPopup) {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiWindowCtrl() {
|
||||
profile = "GuiWindowProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "220 146";
|
||||
extent = "200 228";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Paths";
|
||||
maxLength = "255";
|
||||
resizeWidth = "1";
|
||||
resizeHeight = "1";
|
||||
canMove = "0";
|
||||
canClose = "0";
|
||||
canMinimize = "0";
|
||||
canMaximize = "0";
|
||||
minSize = "50 50";
|
||||
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 24";
|
||||
extent = "67 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Main Mod Folder:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(MainMod) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 40";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 64";
|
||||
extent = "101 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Question Script Path:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(QuestionScriptPath) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 80";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 104";
|
||||
extent = "89 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Action Script Path:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(ActionScriptPath) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 120";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
profile = "GuiTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 144";
|
||||
extent = "67 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Portraits Path:";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiTextEditCtrl(PortraitsPath) {
|
||||
profile = "GuiTextEditProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "20 160";
|
||||
extent = "160 18";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
maxLength = "255";
|
||||
historySize = "0";
|
||||
password = "0";
|
||||
tabComplete = "0";
|
||||
sinkAllKeyEvents = "0";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "56 192";
|
||||
extent = "40 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "SetPaths();";
|
||||
helpTag = "0";
|
||||
text = "Set";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "104 192";
|
||||
extent = "40 16";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
command = "Canvas.popDialog(SetPathsPopup);";
|
||||
helpTag = "0";
|
||||
text = "Cancel";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
After Width: | Height: | Size: 149 KiB |
BIN
Templates/Modules/RPGDialog/Scripts/RPGDialogEditor/ui/box.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
Templates/Modules/RPGDialog/Scripts/RPGDialogEditor/ui/title.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
205
Templates/Modules/RPGDialog/Scripts/client/RPGDialog.cs
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// RPGDialog - Presents the player with a question and several answers to select from
|
||||
// Created by Nelson A. K. Gonsalves
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
if($RPGDialogEditorPref::MaxOptions>0)
|
||||
$Pref::RPGDialog::MaxOptions=$RPGDialogEditorPref::MaxOptions;
|
||||
|
||||
function getQuestion(%questionFile,%questionNumber)
|
||||
{
|
||||
%file = new FileObject();
|
||||
if(isFile($Pref::RPGDialog::Client::QuestionPath@%questionFile@".dlq") && %file.openForRead($Pref::RPGDialog::Client::QuestionPath@%questionFile@".dlq"))
|
||||
{
|
||||
for(%i=1;%i<%questionNumber;%i++)
|
||||
{
|
||||
%file.readLine();
|
||||
if(%file.isEOF())
|
||||
return "<Invalid Question>";
|
||||
}
|
||||
%question=%file.readLine();
|
||||
}
|
||||
else if(isFile($RPGDialogEditorPref::QuestionPath@%questionFile@".dlq") && %file.openForRead($RPGDialogEditorPref::QuestionPath@%questionFile@".dlq"))
|
||||
{
|
||||
for(%i=1;%i<%questionNumber;%i++)
|
||||
{
|
||||
%file.readLine();
|
||||
if(%file.isEOF())
|
||||
return "<Invalid Question>";
|
||||
}
|
||||
%question=%file.readLine();
|
||||
}
|
||||
%file.close();
|
||||
%file.delete();
|
||||
return %question;
|
||||
}
|
||||
|
||||
function clientCmdCloseRPGDialog()
|
||||
{
|
||||
Canvas.popDialog(RPGDialog);
|
||||
RPGDialogQuestion.settext("");
|
||||
RPGDialogAnswer.settext("");
|
||||
}
|
||||
|
||||
function clientCmdRPGDialogMessage(%sender,%senderName,%portrait,%npcFile,%questionNumber,%playerName)
|
||||
{
|
||||
$RPGDialog::Sender=%sender;
|
||||
$RPGDialog::questionNumber=%questionNumber;
|
||||
onRPGDialogMessage(%npcFile,%questionNumber,%senderName,%portrait,%playerName);
|
||||
}
|
||||
|
||||
function onRPGDialogMessage(%npcFile,%questionNumber,%senderName,%portrait,%playerName)
|
||||
{
|
||||
if(%portrait!$="" && isFile($RPGDialogEditorPref::PortraitsPath@%portrait))
|
||||
{
|
||||
RPGDialogPortrait.setbitmap($RPGDialogEditorPref::PortraitsPath@%portrait);
|
||||
}
|
||||
else
|
||||
{
|
||||
RPGDialogPortrait.setbitmap($RPGDialogEditorPref::PortraitsPath@"unknown.png");
|
||||
}
|
||||
|
||||
if(%npcFile!$="")
|
||||
{
|
||||
%QuestionAnswer=GetQuestion(%npcfile,%questionNumber);
|
||||
|
||||
if(%QuestionAnswer!$="<InvalidQuestion>")
|
||||
{
|
||||
%AnswerStart=strPos(%QuestionAnswer,"<AnswerStart>");
|
||||
%question=getSubStr(%QuestionAnswer,0,%AnswerStart);
|
||||
%answer=getSubStr(%QuestionAnswer,%AnswerStart+13,strLen(%QuestionAnswer));
|
||||
}
|
||||
else
|
||||
{
|
||||
%question="ERROR::Invalid Question!!\nnpcFile = "@%npcFile@"\nquestionNumber = "@%questionNumber;
|
||||
}
|
||||
}
|
||||
|
||||
if (%question!$="")
|
||||
{
|
||||
%question=strreplace(%question,"<<Name>>",%senderName);
|
||||
%question=strreplace(%question,"<<PlayerName>>",%playerName);
|
||||
|
||||
|
||||
if ((%soundStart = playRPGDialogSound(%question)) != -1)
|
||||
%question = getSubStr(%question, 0, %soundStart);
|
||||
|
||||
RPGDialogQuestion.settext(%question);
|
||||
ChatHud.addLine($Pref::RPGDialog::ChatHudQuestionColor@%senderName@": "@StripMLControlChars(%question));
|
||||
}
|
||||
|
||||
if (%answer!$="")
|
||||
{
|
||||
%answer=strReplace(%answer,"<<Name>>",%senderName);
|
||||
%answer=strReplace(%answer,"<<PlayerName>>",%playerName);
|
||||
%answer=strReplace(%answer,"<BR>","\n");
|
||||
|
||||
%line=%answer;
|
||||
%i=1;
|
||||
while(%i<=$Pref::RPGDialog::MaxOptions) //lets number the options
|
||||
{
|
||||
%Start=strpos(%line,"<a:RPGDialog "@%i@">");
|
||||
|
||||
if(%Start<0)
|
||||
{
|
||||
%i=$Pref::RPGDialog::MaxOptions+1;
|
||||
}
|
||||
else
|
||||
{
|
||||
%line=getSubStr(%line,%Start,strlen(%line));
|
||||
%End=strpos(%line,"</a>")+4;
|
||||
%line=getSubStr(%line,%End,strlen(%line));
|
||||
%answer=strReplace(%answer,"<a:RPGDialog "@%i@">","<a:RPGDialog "@%i@"> "@%i@" - ");
|
||||
%i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RPGDialogAnswer.settext(%answer);
|
||||
}
|
||||
else
|
||||
{
|
||||
RPGDialogAnswer.settext("<a:RPGDialogNoAnswer>Continue...");
|
||||
}
|
||||
RPGDialogAnswer.Visible=true;
|
||||
|
||||
Canvas.pushDialog(RPGDialog);
|
||||
}
|
||||
|
||||
function RPGDialogAnswer::onURL(%this, %url)
|
||||
{
|
||||
//same as RPGDialogQuestion::onURL, so just forward the call
|
||||
RPGDialogQuestion::onURL(%this, %url);
|
||||
}
|
||||
|
||||
function RPGDialogQuestion::onURL(%this, %url)
|
||||
{
|
||||
if(firstword(%url)!$="RPGDialog" && firstword(%url)!$="RPGDialogLink" && firstword(%url)!$="RPGDialogNoAnswer")
|
||||
{
|
||||
gotoWebPage( %url );
|
||||
}
|
||||
else if(firstword(%url)$="RPGDialogLink")
|
||||
{
|
||||
%Answers=%this.gettext();
|
||||
%AnswerHeaderSize=strlen("<a:RPGDialogLink "@restwords(%url)@">");
|
||||
%AnswerStart=strpos(%Answers,"<a:RPGDialogLink "@restwords(%url)@">")+%AnswerHeaderSize;
|
||||
%Answers=getSubStr(%Answers,%AnswerStart,strLen(%Answers));
|
||||
%AnswerEnd=strPos(%Answers,"</a>")+4;
|
||||
|
||||
ChatHud.addLine($Pref::RPGDialog::ChatHudAnswerColor@"You: "@StripMLControlChars(getSubStr(%Answers,0,%AnswerEnd)));
|
||||
|
||||
CommandToServer('RPGDialogAnswer', $RPGDialog::Sender, $RPGDialog::questionNumber, "QL"@restwords(%url));
|
||||
|
||||
Canvas.popDialog(RPGDialog);
|
||||
RPGDialogQuestion.settext("");
|
||||
RPGDialogAnswer.settext("");
|
||||
}
|
||||
else if(firstword(%url)$="RPGDialogNoAnswer")
|
||||
{
|
||||
Canvas.popDialog(RPGDialog);
|
||||
RPGDialogQuestion.settext("");
|
||||
RPGDialogAnswer.settext("");
|
||||
}
|
||||
else
|
||||
{
|
||||
%Answers=%this.gettext();
|
||||
%Answers=strReplace(%Answers,restwords(%url)@" - ","");
|
||||
%AnswerHeaderSize=strlen("<a:RPGDialog "@restwords(%url)@">");
|
||||
%AnswerStart=strpos(%Answers,"<a:RPGDialog "@restwords(%url)@">")+%AnswerHeaderSize;
|
||||
%Answers=getSubStr(%Answers,%AnswerStart,strLen(%Answers));
|
||||
%AnswerEnd=strpos(%Answers,"</a>")+4;
|
||||
|
||||
ChatHud.addLine($Pref::RPGDialog::ChatHudAnswerColor@"You: "@StripMLControlChars(getSubStr(%Answers,0,%AnswerEnd)));
|
||||
|
||||
CommandToServer('RPGDialogAnswer', $RPGDialog::Sender, $RPGDialog::questionNumber, restwords(%url));
|
||||
|
||||
Canvas.popDialog(RPGDialog);
|
||||
RPGDialogQuestion.settext("");
|
||||
RPGDialogAnswer.settext("");
|
||||
}
|
||||
}
|
||||
|
||||
function playRPGDialogSound(%message)
|
||||
{
|
||||
// Search for wav tag marker.
|
||||
%soundStart = strstr(%message, "~Sound:");
|
||||
if (%soundStart == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(alxIsPlaying($RPGDialogSoundHandle))
|
||||
alxStop($RPGDialogSoundHandle);
|
||||
|
||||
%sound = getSubStr(%message, %soundStart + 7, strLen(%message));
|
||||
$RPGDialogSoundHandle = alxPlay(%sound);
|
||||
|
||||
return %soundStart;
|
||||
}
|
||||
|
||||
function SelectAnswer(%Number)
|
||||
{
|
||||
if(strPos(RPGDialogAnswer.getText(),"<a:RPGDialog "@%Number@">")>=0)
|
||||
RPGDialogAnswer.onURL("RPGDialog "@%Number);
|
||||
else
|
||||
OutOfRPGDialogFunction(%Number);
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
new SFXDescription(DialogSound)
|
||||
{
|
||||
volume = 1.2;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = $MessageAudioType;
|
||||
};
|
||||
|
||||
new SFXProfile(test)
|
||||
{
|
||||
filename = "art/dialogs/sounds/test.wav";
|
||||
description = "DialogSound";
|
||||
preload = false;
|
||||
};
|
||||
|
||||
new SFXProfile(test2)
|
||||
{
|
||||
filename = "art/dialogs/sounds/test2.wav";
|
||||
description = "DialogSound";
|
||||
preload = false;
|
||||
};
|
||||
341
Templates/Modules/RPGDialog/Scripts/server/RPGDialog.cs
Normal file
|
|
@ -0,0 +1,341 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// RPGDialog - Presents the player with a question and several answers to select from
|
||||
// Created by Nelson A. K. Gonsalves
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function getAction(%actionFile,%questionNumber)
|
||||
{
|
||||
%file = new FileObject();
|
||||
if(isFile($Pref::Server::RPGDialog::ActionPath@%actionFile@".dla") && %file.openForRead($Pref::Server::RPGDialog::ActionPath@%actionFile@".dla"))
|
||||
{
|
||||
for(%i=1;%i<%questionNumber;%i++)
|
||||
{
|
||||
%file.readLine();
|
||||
if(%file.isEOF())
|
||||
return "<Invalid Question>";
|
||||
}
|
||||
%action=%file.readLine();
|
||||
}
|
||||
else if(isFile($RPGDialogEditorPref::ActionPath@%actionFile@".dla") && %file.openForRead($RPGDialogEditorPref::ActionPath@%actionFile@".dla"))
|
||||
{
|
||||
for(%i=1;%i<%questionNumber;%i++)
|
||||
{
|
||||
%file.readLine();
|
||||
if(%file.isEOF())
|
||||
return "<Invalid Question>";
|
||||
}
|
||||
%action=%file.readLine();
|
||||
}
|
||||
|
||||
%file.close();
|
||||
%file.delete();
|
||||
return %action;
|
||||
}
|
||||
|
||||
function RPGDialogMessageClient(%client,%sender,%npcFile,%questionNumber)
|
||||
{
|
||||
%senderName=%sender.getshapename();
|
||||
%portrait=%sender.RPGDialogPortrait;
|
||||
%playerName=%client.player.getshapename();
|
||||
|
||||
%sender.RPGDialogBusy=true;
|
||||
%sender.RPGDialogTalkingTo=%client;
|
||||
%sender.setAimObject(%client.player);
|
||||
|
||||
commandToClient(%client,'RPGDialogMessage',%sender,%senderName,%portrait,%npcFile,%questionNumber,%playerName);
|
||||
|
||||
CheckRPGDialogStatus(%client,%sender);
|
||||
}
|
||||
|
||||
function serverCmdRPGDialogAnswer(%client,%sender,%questionNumber,%answerNumber)
|
||||
{
|
||||
if(%client==%sender.RPGDialogTalkingTo)
|
||||
{
|
||||
%npcFile=%sender.RPGDialogScript;
|
||||
|
||||
%Actions=GetAction(%npcFile,%questionNumber);
|
||||
|
||||
if(%Actions!$="<InvalidQuestion>")
|
||||
{
|
||||
%ActionHeaderSize=strlen("<"@%answerNumber@">");
|
||||
%ActionStart=strPos(%Actions,"<"@%answerNumber@">")+%ActionHeaderSize;
|
||||
%Actions=getSubStr(%Actions,%ActionStart,strlen(%Actions));
|
||||
%ActionEnd=strPos(%Actions,"<END>");
|
||||
|
||||
if(%ActionEnd==-1)
|
||||
return;
|
||||
|
||||
%Actions=getSubStr(%Actions,0,%ActionEnd);
|
||||
|
||||
while(%Actions!$="")
|
||||
{
|
||||
%ParamStart=strPos(%Actions,"(")+1;
|
||||
%ParamEnd=strPos(%Actions,")")-%ParamStart;
|
||||
%Param=getSubStr(%Actions,%ParamStart,%ParamEnd);
|
||||
|
||||
%Action=getSubStr(%Actions,0,%ParamStart-1);
|
||||
if(%Param!$="")
|
||||
{
|
||||
eval(%Action@"("@%Param@","@%client@","@%sender@",\""@%npcFile@"\");");
|
||||
}
|
||||
else
|
||||
{
|
||||
eval(%Action@"("@%client@","@%sender@",\""@%npcFile@"\");");
|
||||
}
|
||||
%Actions=getSubStr(%Actions,strlen(%Action)+%ParamEnd+2,strlen(%Actions));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("ERROR::Invalid Question/Answer!!\nnpcFile = "@%npcFile@"\nquestionNumber = "@%questionNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function serverCmdRPGDialogRay(%client)
|
||||
{
|
||||
%StartPos=%client.player.gettransform();
|
||||
%Eye = %client.player.getEyeVector();
|
||||
%EndPos = vectorScale(%Eye, -1);
|
||||
%EndPos = vectorsub(%StartPos,%EndPos);
|
||||
|
||||
InitContainerRadiusSearch(%EndPos, 2.5, $TypeMasks::PlayerObjectType);
|
||||
|
||||
%rayCast=ContainerSearchNext();
|
||||
while(%rayCast != 0 )
|
||||
{
|
||||
if(%rayCast.RPGDialogScript!$="")
|
||||
{
|
||||
if(!%rayCast.RPGDialogBusy)
|
||||
{
|
||||
RPGDialogMessageClient(%client, %rayCast, %rayCast.RPGDialogScript,%rayCast.RPGDialogStartQuestion); //start dialog.
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(IsRPGDialogBusy(%rayCast))
|
||||
{
|
||||
if(%client!=%raycast.RPGDialogTalkingTo)
|
||||
{
|
||||
messageClient(%client, '', %rayCast.RPGDialogBusyText, %raycast.RPGDialogTalkingTo.player.getShapeName());
|
||||
return;
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
RPGDialogMessageClient(%client, %rayCast, %rayCast.RPGDialogScript,%rayCast.RPGDialogStartQuestion); //start dialog.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
%rayCast=ContainerSearchNext();
|
||||
}
|
||||
}
|
||||
|
||||
function IsRPGDialogBusy(%AiPlayerID)
|
||||
{
|
||||
InitContainerRadiusSearch(%AiPlayerID.getTransform(), 5, $TypeMasks::PlayerObjectType);
|
||||
%rayCastBusyCheck=ContainerSearchNext();
|
||||
while(%rayCastBusyCheck != 0 )
|
||||
{
|
||||
if(%rayCastBusyCheck==(%AiPlayerID.RPGDialogTalkingTo).player)
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
%rayCastBusyCheck=ContainerSearchNext();
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
function CheckRPGDialogStatus(%Client,%Sender) //Checks if the player has moved since he started the dialog, moving too far from the sender will cancel the dialog
|
||||
{
|
||||
InitContainerRadiusSearch(%Sender.getTransform(), 5, $TypeMasks::PlayerObjectType);
|
||||
%rayCast=ContainerSearchNext();
|
||||
while(%rayCast != 0 )
|
||||
{
|
||||
if(%rayCast==%Client.player)
|
||||
{
|
||||
schedule(1000,0,"CheckRPGDialogStatus",%Client,%Sender);
|
||||
return;
|
||||
}
|
||||
%rayCast=ContainerSearchNext();
|
||||
}
|
||||
CommandToClient(%client,'CloseRPGDialog');
|
||||
%Sender.RPGDialogBusy=false;
|
||||
%Sender.RPGDialogTalkingTo=0;
|
||||
%Sender.clearAim();
|
||||
}
|
||||
|
||||
function SpawnTestNPC()
|
||||
{
|
||||
%player = AIPlayer::spawn("a test NPC","359.973 304.759 217.766");
|
||||
%player.RPGDialogScript = "Test";
|
||||
%player.RPGDialogPortrait = "Test.png";
|
||||
%player.RPGDialogStartQuestion = 1;
|
||||
%player.RPGDialogBusy = false;
|
||||
%player.RPGDialogBusyText = 'Sorry but I\'m busy talking to %1 right now.';
|
||||
%player.RPGDialogTalkingTo = 0;
|
||||
|
||||
return %player;
|
||||
}
|
||||
|
||||
function SpawnNPC(%Name,%Script,%Portrait,%startQuestion,%location)
|
||||
{
|
||||
%player = AIPlayer::spawn(%Name,%location);
|
||||
%player.RPGDialogScript = %Script;
|
||||
%player.RPGDialogPortrait = %Portrait;
|
||||
%player.RPGDialogStartQuestion = %startQuestion;
|
||||
%player.RPGDialogBusy = false;
|
||||
%player.RPGDialogBusyText = 'Sorry but I\'m busy talking to %1 right now.';
|
||||
%player.RPGDialogTalkingTo = 0;
|
||||
|
||||
return %player;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// RPGDialog Script Functions - functions bellow are made to be used by the
|
||||
// dialog scripts.
|
||||
// The commented out lines that start with <ActionList> are used when populating the action
|
||||
// list on the RPGDialog Editor.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//<ActionList>GotoQuestion(QuestionNumber)
|
||||
function GotoQuestion(%questionNumber,%client,%sender,%npcFile)
|
||||
{
|
||||
RPGDialogMessageClient(%client, %sender, %npcFile, %questionNumber);
|
||||
}
|
||||
|
||||
//<ActionList>CloseDialog()
|
||||
function CloseDialog(%client,%sender,%npcFile)
|
||||
{
|
||||
//sendind nothing to the client will close the dialog without anything else happening
|
||||
%sender.RPGDialogBusy=false;
|
||||
%sender.RPGDialogTalkingTo=0;
|
||||
}
|
||||
|
||||
//<ActionList>MoveTo(Position)
|
||||
function MoveTo(%position,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.setAimLocation(%position);
|
||||
%sender.setMoveDestination(%position);
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>KillPlayer()
|
||||
function KillPlayer(%client,%sender,%npcFile)
|
||||
{
|
||||
%client.player.kill("Sudden");
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>KillSender()
|
||||
function KillSender(%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.kill("Sudden");
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>DamagePlayer(Amount)
|
||||
function DamagePlayer(%DamageAmount,%client,%sender,%npcFile)
|
||||
{
|
||||
%client.player.damage(0, %sender.getposition(), %damageAmount, "Sudden");
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>DamageSender(Amount)
|
||||
function DamageSender(%DamageAmount,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.damage(0, %sender.getposition(), %damageAmount, "Sudden");
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>TeleportPlayer(Position)
|
||||
function TeleportPlayer(%Pos,%client,%sender,%npcFile)
|
||||
{
|
||||
%client.player.setTransform(%Pos);
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>TeleportSender(Position)
|
||||
function TeleportSender(%Pos,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.setTransform(%Pos);
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>RenamePlayer(NewName)
|
||||
function RenamePlayer(%NewName,%client,%sender,%npcFile)
|
||||
{
|
||||
messageAllExcept(%client, -1, 'MsgPlayerRenamed', '\c1%1 is now known as %2.',%client.player.getshapeName(),%NewName);
|
||||
messageClient(%client, 'MsgPlayerRenamed', '\c1You are now known as %1.',%NewName);
|
||||
%client.player.setshapeName(%NewName);
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>RenameSender(NewName)
|
||||
function RenameSender(%NewName,%client,%sender,%npcFile)
|
||||
{
|
||||
messageAll('MsgAIRenamed','\c1%1 is now known as %2.',%sender.getshapename(),%NewName);
|
||||
%sender.setshapeName(%NewName);
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>ChangeStartQuestion(QuestionNumber)
|
||||
function ChangeStartQuestion(%NewQuestion,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.RPGDialogStartQuestion=%NewQuestion;
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>ChangeStartQuestionAndOpen(QuestionNumber)
|
||||
function ChangeStartQuestionAndOpen(%NewQuestion,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.RPGDialogStartQuestion=%NewQuestion;
|
||||
RPGDialogMessageClient(%client, %sender, %sender.RPGDialogScript,%NewQuestion);
|
||||
}
|
||||
|
||||
//<ActionList>ChangeStartQuestionAndGoto(StartQuestion,GotoQuestion)
|
||||
function ChangeStartQuestionAndGoto(%NewStartQuestion,%GoTo,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.RPGDialogStartQuestion=%NewQuestion;
|
||||
RPGDialogMessageClient(%client, %sender, %sender.RPGDialogScript,%GoTo);
|
||||
}
|
||||
|
||||
//<ActionList>ChangeScript(ScriptName,QuestionNumber)
|
||||
function ChangeScript(%NewScript,%StartQuestion,%client,%sender,%npcFile)
|
||||
{
|
||||
if(%NewScript!$="" && isFile($RPGDialogEditorPref::ActionPath@%NewScript@".dla"))
|
||||
{
|
||||
%sender.RPGDialogScript=%NewScript;
|
||||
%sender.RPGDialogStartQuestion=%StartQuestion;
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
}
|
||||
|
||||
//<ActionList>ChangeScriptAndOpen(ScriptName,QuestionNumber)
|
||||
function ChangeScriptAndOpen(%NewScript,%StartQuestion,%client,%sender,%npcFile)
|
||||
{
|
||||
|
||||
if(%NewScript!$="" && isFile($RPGDialogEditorPref::ActionPath@%NewScript@".dla"))
|
||||
{
|
||||
%sender.RPGDialogScript=%NewScript;
|
||||
%sender.RPGDialogStartQuestion=%StartQuestion;
|
||||
RPGDialogMessageClient(%client, %sender, %NewScript,%StartQuestion);
|
||||
}
|
||||
}
|
||||
|
||||
//<ActionList>ChangePortrait(NewPortrait)
|
||||
function ChangePortrait(%NewPortrait,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.RPGDialogPortrait=%NewPortrait;
|
||||
CloseDialog(%client,%sender,%npcFile);
|
||||
}
|
||||
|
||||
//<ActionList>ChangePortraitAndGoto(NewPortrait,QuestionNumber)
|
||||
function ChangePortraitAndGoto(%NewPortrait,%QuestionNumber,%client,%sender,%npcFile)
|
||||
{
|
||||
%sender.RPGDialogPortrait=%NewPortrait;
|
||||
RPGDialogMessageClient(%client, %sender, %sender.RPGDialogScript,%QuestionNumber);
|
||||
}
|
||||
156
Templates/Modules/RPGDialog/gui/RPGDialog.gui
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
new GuiControlProfile ("RPGDialogQuestionProfile")
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 16;
|
||||
fontColor = "44 172 181";
|
||||
fontColorLink = "255 96 96";
|
||||
fontColorLinkHL = "0 0 255";
|
||||
autoSizeWidth = true;
|
||||
autoSizeHeight = true;
|
||||
};
|
||||
|
||||
new GuiControlProfile ("RPGDialogAnswerProfile")
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 16;
|
||||
fontColor = "44 172 181";
|
||||
fontColorLink = "255 96 96";
|
||||
fontColorLinkHL = "0 0 255";
|
||||
autoSizeWidth = true;
|
||||
autoSizeHeight = true;
|
||||
};
|
||||
|
||||
new GuiControlProfile ("RPGDialogScrollProfile")
|
||||
{
|
||||
opaque = false;
|
||||
border = false;
|
||||
borderColor = "0 255 0";
|
||||
bitmap = "./demoScroll";
|
||||
hasBitmapArray = true;
|
||||
};
|
||||
|
||||
new GuiControlProfile ("RPGDialogBorderProfile")
|
||||
{
|
||||
bitmap = "./chatHudBorderArray";
|
||||
hasBitmapArray = true;
|
||||
opaque = false;
|
||||
};
|
||||
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiControl(RPGDialog) {
|
||||
profile = "GuiModelessDialogProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiControl() {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "relative";
|
||||
position = "120 260";
|
||||
extent = "400 220";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiBitmapBorderCtrl(RPGDialogBorder) {
|
||||
profile = "ChatHudBorderProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "400 220";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiBitmapCtrl(RPGDialogBackground) {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "8 8";
|
||||
extent = "384 212";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
bitmap = "./hudfill.png";
|
||||
wrap = "0";
|
||||
};
|
||||
new GuiScrollCtrl(RPGDialogScrollQuestion) {
|
||||
profile = "RPGDialogScrollProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "bottom";
|
||||
position = "89 8";
|
||||
extent = "303 94";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "0 0";
|
||||
|
||||
new GuiMLTextCtrl(RPGDialogQuestion) {
|
||||
profile = "RPGDialogQuestionProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "1 1";
|
||||
extent = "283 16";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "0";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
new GuiScrollCtrl(RPGDialogScrollAnswer) {
|
||||
profile = "RPGDialogScrollProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "8 100";
|
||||
extent = "384 110";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
willFirstRespond = "1";
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
constantThumbHeight = "0";
|
||||
childMargin = "0 0";
|
||||
|
||||
new GuiMLTextCtrl(RPGDialogAnswer) {
|
||||
profile = "RPGDialogAnswerProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "1 1";
|
||||
extent = "364 14";
|
||||
minExtent = "8 8";
|
||||
visible = "0";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
new GuiBitmapCtrl(RPGDialogPortrait) {
|
||||
profile = "GuiDefaultProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "8 8";
|
||||
extent = "80 94";
|
||||
minExtent = "8 2";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
wrap = "0";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
3
Templates/Modules/RPGDialog/gui/dla/test.dla
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<QL1>GotoQuestion(2)<END><1>KillPlayer()<END><2>MoveTo("0 0 0")<END><3>TeleportPlayer("0 0 500")<END><4>TeleportPlayer("0 0 500")TeleportSender("0 0 600")<END><5>DamagePlayer(20)<END><6>GotoQuestion(3)<END><7>CloseDialog()<END>
|
||||
<1>RenameSender("Something Else")<END><2>GotoQuestion(1)<END><3>RenamePlayer("Something Else")<END>
|
||||
<1>ChangeStartQuestion(3)<END><2>ChangePortrait("unknown.png")<END><3>ChangePortraitAndGoto("unknown.png",3)<END><4>ChangeScript("test2",1)<END><5>ChangeScriptAndOpen("test2",1)<END><6>GotoQuestion(1)<END><7>ChangeStartQuestionAndOpen(1)<END>
|
||||
1
Templates/Modules/RPGDialog/gui/dla/test2.dla
Normal file
|
|
@ -0,0 +1 @@
|
|||
<1>ChangeScript("test",1)<END><2>ChangeScriptAndOpen("test",3)<END><3>CloseDialog()<END>
|
||||
3
Templates/Modules/RPGDialog/gui/dlq/test.dlq
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Hello <<PlayerName>>, I'm <a:RPGDialogLink 1><<Name>></a>, What do you want me to do? ~Sound:test<AnswerStart><a:RPGDialog 1>Kill me, please.</a><BR><a:RPGDialog 2>Run to the center of the world!</a><BR><a:RPGDialog 3>Teleport me!</a><BR><a:RPGDialog 4>Teleport us!</a><BR><a:RPGDialog 5>Damage me!</a><BR><a:RPGDialog 6>Something Else...</a><BR><a:RPGDialog 7>Nothing, see ya!</a><BR>
|
||||
Yes, I'm <<Name>>, do you want me to change my name to something else?<AnswerStart><a:RPGDialog 1>Yes, please.</a><BR><a:RPGDialog 2>Nope... </a><BR><a:RPGDialog 3>Change my name instead!</a><BR>
|
||||
...~Sound:test2<AnswerStart><a:RPGDialog 1>Change your start question to this question.</a><BR><a:RPGDialog 2>Change your portrait!</a><BR><a:RPGDialog 3>Change your portrait and come back to this question!</a><BR><a:RPGDialog 4>Change your script...</a><BR><a:RPGDialog 5>Change your script and open it</a><BR><a:RPGDialog 6>Go back to the first question.</a><BR><a:RPGDialog 7>Go back to the first question and set it as default.</a><BR>
|
||||
1
Templates/Modules/RPGDialog/gui/dlq/test2.dlq
Normal file
|
|
@ -0,0 +1 @@
|
|||
Hello <<PlayerName>>, I'm <<Name>>, and this is the test2 script. What do you want to do?<AnswerStart><a:RPGDialog ></a><BR><a:RPGDialog 1>Go back to the other script, please.</a><BR><a:RPGDialog 2>Change your script and open it on the 3rd question.</a><BR><a:RPGDialog 3>Nothing, see you later.</a><BR>
|
||||
BIN
Templates/Modules/RPGDialog/gui/portraits/test.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
Templates/Modules/RPGDialog/gui/portraits/unknown.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Templates/Modules/RPGDialog/sounds/test.wav
Normal file
BIN
Templates/Modules/RPGDialog/sounds/test2.wav
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack Exec File
|
||||
//
|
||||
// This file executes all the scripts associated with the pack.
|
||||
// Thanks for your support!
|
||||
//
|
||||
// Copyright Adam deGrandis 2012
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
exec ("./LifelikeEmitters.cs");
|
||||
exec ("./LifelikeExp_ComplexLarge.cs");
|
||||
exec ("./LifelikeExp_ComplexSmall.cs");
|
||||
exec ("./LifelikeExp_SimpleLarge.cs");
|
||||
exec ("./LifelikeExp_SimpleSmall.cs");
|
||||
exec ("./LifelikeExp_GroundHitLarge.cs");
|
||||
exec ("./LifelikeExp_GroundHitSmall.cs");
|
||||
exec ("./LifelikeExp_FirebombLarge.cs");
|
||||
exec ("./LifelikeExp_FirebombSmall.cs");
|
||||
exec ("./LifelikeExp_Flak.cs");
|
||||
exec ("./LifelikeExp_Flashbang.cs");
|
||||
|
||||
410
Templates/Modules/RealisticVFX/Datablocks/LifelikeEmitters.cs
Normal file
|
|
@ -0,0 +1,410 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Ambient Particle Emitters
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// This file houses all the ambient emitters in the Lifelike Effects Pack.
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeEmitters.cs");
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Smoke
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeSmokeLargeBlackParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
|
||||
gravityCoefficient = -0.2;
|
||||
inheritedVelFactor = 0.00;
|
||||
lifetimeMS = 4000;
|
||||
lifetimeVarianceMS = 250;
|
||||
spinRandomMin = -30;
|
||||
spinRandomMax = 30;
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 0.1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
windCoefficient = 1;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeSmokeLargeBlackEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 130;
|
||||
periodVarianceMS = 50;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.0;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = LifelikeSmokeLargeBlackParticle;
|
||||
blendStyle = "NORMAL";
|
||||
ejectionOffset = 0.5;
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeSmokeSmallBlackParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
|
||||
gravityCoefficient = -0.1;
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -30;
|
||||
spinRandomMax = 30;
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 2;
|
||||
sizes[2] = 3;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 0.1";
|
||||
colors[1] = "0.7 0.7 0.6 0.5";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
windCoefficient = 1;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeSmokeSmallBlackEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 150;
|
||||
periodVarianceMS = 50;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.0;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 50.0;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = LifelikeSmokeSmallBlackParticle;
|
||||
blendStyle = "NORMAL";
|
||||
ejectionOffset = 0.1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeSmokeLargeWhiteParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
|
||||
gravityCoefficient = -0.2;
|
||||
inheritedVelFactor = 0.00;
|
||||
lifetimeMS = 4000;
|
||||
lifetimeVarianceMS = 250;
|
||||
spinRandomMin = -30;
|
||||
spinRandomMax = 30;
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 0.1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
windCoefficient = 1;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeSmokeLargeWhiteEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 130;
|
||||
periodVarianceMS = 50;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.0;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = LifelikeSmokeLargeWhiteParticle;
|
||||
blendStyle = "NORMAL";
|
||||
ejectionOffset = 0.5;
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeSmokeSmallWhiteParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
|
||||
gravityCoefficient = -0.1;
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -30;
|
||||
spinRandomMax = 30;
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 2;
|
||||
sizes[2] = 3;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 0.1";
|
||||
colors[1] = "0.7 0.7 0.6 0.5";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
windCoefficient = 1;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeSmokeSmallWhiteEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 150;
|
||||
periodVarianceMS = 50;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.0;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 70.0;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = LifelikeSmokeSmallWhiteParticle;
|
||||
blendStyle = "NORMAL";
|
||||
ejectionOffset = 0.1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Fire
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFireSmallParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = "-0.2";
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 200;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -140.0;
|
||||
spinRandomMax = 140.0;
|
||||
|
||||
sizes[0] = "0.5";
|
||||
sizes[1] = "1";
|
||||
sizes[2] = "0.7";
|
||||
|
||||
colors[0] = "0.8 0.6 1 0.5";
|
||||
colors[1] = "0.8 0.4 0 1";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFireSmallEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 70;
|
||||
periodVarianceMS = 30;
|
||||
|
||||
ejectionVelocity = 0.3;
|
||||
velocityVariance = 0.2;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 70.0;
|
||||
|
||||
ejectionOffset = 0.15;
|
||||
|
||||
particles = "LifelikeFireSmallParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFireBigParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = "-0.2";
|
||||
lifetimeMS = 1400;
|
||||
lifetimeVarianceMS = 500;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -140.0;
|
||||
spinRandomMax = 140.0;
|
||||
|
||||
sizes[0] = "1";
|
||||
sizes[1] = "2";
|
||||
sizes[2] = "1.5";
|
||||
|
||||
colors[0] = "0.8 0.6 1 0.5";
|
||||
colors[1] = "0.8 0.4 0 0.9";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFireBigEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 70;
|
||||
periodVarianceMS = 30;
|
||||
|
||||
ejectionVelocity = 0.5;
|
||||
velocityVariance = 0.0;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 70.0;
|
||||
|
||||
ejectionOffset = 0.5;
|
||||
|
||||
particles = LifelikeFireBigParticle;
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Embers
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeEmbersSmallParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/ember1";
|
||||
gravityCoefficient = "-0.2";
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 200;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -140.0;
|
||||
spinRandomMax = 140.0;
|
||||
|
||||
sizes[0] = "0.5";
|
||||
sizes[1] = "1";
|
||||
sizes[2] = "0.7";
|
||||
|
||||
colors[0] = "1 0.9 0.8 0.5";
|
||||
colors[1] = "1 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeEmbersSmallEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 70;
|
||||
periodVarianceMS = 30;
|
||||
|
||||
ejectionVelocity = 0.3;
|
||||
velocityVariance = 0.2;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 70.0;
|
||||
|
||||
ejectionOffset = 0.15;
|
||||
|
||||
particles = LifelikeEmbersSmallParticle;
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeEmbersBigParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/ember1";
|
||||
gravityCoefficient = "-0.2";
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 500;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -140.0;
|
||||
spinRandomMax = 140.0;
|
||||
|
||||
sizes[0] = "1";
|
||||
sizes[1] = "2";
|
||||
sizes[2] = "1.5";
|
||||
|
||||
colors[0] = "1 0.9 0.8 0.5";
|
||||
colors[1] = "1 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeEmbersBigEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 70;
|
||||
periodVarianceMS = 30;
|
||||
|
||||
ejectionVelocity = 0.5;
|
||||
velocityVariance = 0.0;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 70.0;
|
||||
|
||||
ejectionOffset = 0.5;
|
||||
|
||||
particles = LifelikeEmbersBigParticle;
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Special
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeFlareSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
|
||||
gravityCoefficient = -0.2;
|
||||
inheritedVelFactor = 0.00;
|
||||
lifetimeMS = 4000;
|
||||
lifetimeVarianceMS = 250;
|
||||
spinRandomMin = -30;
|
||||
spinRandomMax = 30;
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "1 0.1 0.1 0.1";
|
||||
colors[1] = "1 0.3 0.3 1";
|
||||
colors[2] = "1 0.6 0.6 0.0";
|
||||
|
||||
windCoefficient = 1;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlareSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 130;
|
||||
periodVarianceMS = 50;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.0;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = LifelikeFlareSmokeParticle;
|
||||
blendStyle = "NORMAL";
|
||||
ejectionOffset = 0.5;
|
||||
};
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Large Complex Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_ComplexLarge.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeComplexLargeSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
gravityCoefficient = -0.05;
|
||||
lifetimeMS = 3300;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 4;
|
||||
sizes[1] = 8;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexLargeSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 2;
|
||||
particles = "LifelikeComplexLargeSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeComplexLargeFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireball";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 700;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 7;
|
||||
sizes[2] = 4;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexLargeFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 3;
|
||||
|
||||
particles = "LifelikeComplexLargeFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexLargeGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 7;
|
||||
sizes[1] = 11;
|
||||
sizes[2] = 5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexLargeGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeComplexLargeGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexLargeSparks2Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark2";
|
||||
dragCoefficient = 4;
|
||||
gravityCoefficient = 1;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -0.0;
|
||||
spinRandomMax = 0.0;
|
||||
|
||||
colors[0] = "1 1 1 0.0";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.9 0.8 0.7 0";
|
||||
|
||||
sizes[0] = 4.0;
|
||||
sizes[1] = 3.0;
|
||||
sizes[2] = 1.0;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexLargeSparks2Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 2;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 70.0;
|
||||
velocityVariance = 10.0;
|
||||
ejectionOffset = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeComplexLargeSparks2Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexLargeSparks1Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark3";
|
||||
lifetimeMS = 350;
|
||||
lifetimeVarianceMS = 20;
|
||||
useInvAlpha = false;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 7;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexLargeSparks1Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 35;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeComplexLargeSparks1Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeComplexLargeExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 200;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeComplexLargeGlowEmitter;
|
||||
particleDensity = 40;
|
||||
particleRadius = 2;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeComplexLargeSmokeEmitter;
|
||||
emitter[1] = LifelikeComplexLargeFireballEmitter;
|
||||
emitter[2] = LifelikeComplexLargeSparks1Emitter;
|
||||
emitter[3] = LifelikeComplexLargeSparks2Emitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 20.0;
|
||||
|
||||
lightStartRadius = 20.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Small Complex Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_ComplexSmall.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeComplexSmallSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
gravityCoefficient = -0.02;
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0 1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexSmallSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 15;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 1;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0.7;
|
||||
particles = "LifelikeComplexSmallSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeComplexSmallFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireball";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexSmallFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 1;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 1.3;
|
||||
|
||||
particles = "LifelikeComplexSmallFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexSmallGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 6;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexSmallGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeComplexSmallGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexSmallSparks2Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark2";
|
||||
dragCoefficient = 4;
|
||||
gravityCoefficient = 1;
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -0.0;
|
||||
spinRandomMax = 0.0;
|
||||
|
||||
colors[0] = "1 1 1 0.5";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.9 0.8 0.7 0";
|
||||
|
||||
sizes[0] = 2.0;
|
||||
sizes[1] = 1.5;
|
||||
sizes[2] = 0.5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexSmallSparks2Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 40.0;
|
||||
velocityVariance = 10.0;
|
||||
ejectionOffset = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeComplexSmallSparks2Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeComplexSmallSparks1Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark3";
|
||||
lifetimeMS = 300;
|
||||
lifetimeVarianceMS = 20;
|
||||
useInvAlpha = false;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 3.5;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeComplexSmallSparks1Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 17;
|
||||
velocityVariance = 5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeComplexSmallSparks1Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeComplexSmallExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 130;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeComplexSmallGlowEmitter;
|
||||
particleDensity = 20;
|
||||
particleRadius = 1.2;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeComplexSmallSmokeEmitter;
|
||||
emitter[1] = LifelikeComplexSmallFireballEmitter;
|
||||
emitter[2] = LifelikeComplexSmallSparks1Emitter;
|
||||
emitter[3] = LifelikeComplexSmallSparks2Emitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 5.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,319 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Large Firebomb Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_FirebombLarge.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
gravityCoefficient = -0.1;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0.1 1";
|
||||
colors[1] = "0.8 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0";
|
||||
|
||||
sizes[0] = 4;
|
||||
sizes[1] = 9;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 25;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 1;
|
||||
thetaMin = 0;
|
||||
thetaMax = 90;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 2;
|
||||
particles = "LifelikeFirebombLargeSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeFireBlastParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireblast";
|
||||
lifetimeMS = 250;
|
||||
lifetimeVarianceMS = 50;
|
||||
|
||||
colors[0] = "1 0.9 0.8 0";
|
||||
colors[1] = "0.8 0.4 0 1";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 15;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeFireBlastEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 50;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFirebombLargeFireBlastParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeSparks1Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark1";
|
||||
lifetimeMS = 300;
|
||||
lifetimeVarianceMS = 20;
|
||||
gravityCoefficient = 0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 0.4";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 6;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeSparks1Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 7;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 40;
|
||||
velocityVariance = 30;
|
||||
thetaMin = 0;
|
||||
thetaMax = 90;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFirebombLargeSparks1Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 7;
|
||||
sizes[1] = 11;
|
||||
sizes[2] = 5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "LifelikeFirebombLargeGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 700;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 7;
|
||||
sizes[2] = 4;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 7;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 3;
|
||||
|
||||
particles = "LifelikeFirebombLargeFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Debris
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeFirebombLargeDebrisTrailParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
|
||||
gravityCoefficient = -0.2;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 300;
|
||||
spinRandomMin = -300;
|
||||
spinRandomMax = 300;
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 3;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0 0.5";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombLargeDebrisTrailEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 10;
|
||||
ejectionVelocity = 5;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 10;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "LifelikeFirebombLargeDebrisTrailParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
ejectionOffset = "2";
|
||||
};
|
||||
|
||||
datablock DebrisData(LifelikeFirebombLargeDebris)
|
||||
{
|
||||
shapeFile = "art/shapes/particles/LifelikeEffectsPack/invisibledebris.dts";
|
||||
emitters[0] = LifelikeFirebombLargeDebrisTrailEmitter;
|
||||
elasticity = 0.4;
|
||||
friction = 0.25;
|
||||
numBounces = 1;
|
||||
bounceVariance = 0;
|
||||
explodeOnMaxBounce = false;
|
||||
staticOnMaxBounce = false;
|
||||
snapOnMaxBounce = false;
|
||||
minSpinSpeed = 100;
|
||||
maxSpinSpeed = 200;
|
||||
render2D = false;
|
||||
lifetime = 2;
|
||||
lifetimeVariance = 1;
|
||||
velocity = 30;
|
||||
velocityVariance = 10;
|
||||
fade = false;
|
||||
useRadiusMass = false;
|
||||
baseRadius = 0.3;
|
||||
gravModifier = 3.0;
|
||||
terminalVelocity = 50;
|
||||
ignoreWater = false;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeFirebombLargeExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 150;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeFirebombLargeGlowEmitter;
|
||||
particleDensity = 5;
|
||||
particleRadius = 3;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeFirebombLargeSmokeEmitter;
|
||||
emitter[1] = LifelikeFirebombLargeFireballEmitter;
|
||||
emitter[2] = LifelikeFirebombLargeFireBlastEmitter;
|
||||
emitter[3] = LifelikeFirebombLargeSparks1Emitter;
|
||||
|
||||
// Debris
|
||||
debris = LifelikeFirebombLargeDebris;
|
||||
debrisThetaMin = 10;
|
||||
debrisThetaMax = 60;
|
||||
debrisNum = 4;
|
||||
debrisNumVariance = 2;
|
||||
debrisVelocity = 25;
|
||||
debrisVelocityVariance = 5;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 20.0;
|
||||
|
||||
lightStartRadius = 20.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,319 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Small Firebomb Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_FirebombSmall.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
gravityCoefficient = -0.05;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0.1 1";
|
||||
colors[1] = "0.8 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4.5;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 30;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 1;
|
||||
thetaMin = 0;
|
||||
thetaMax = 90;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 1;
|
||||
particles = "LifelikeFirebombSmallSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallFireBlastParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireblast";
|
||||
lifetimeMS = 250;
|
||||
lifetimeVarianceMS = 50;
|
||||
|
||||
colors[0] = "1 0.9 0.8 0.5";
|
||||
colors[1] = "0.8 0.4 0 1";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 8;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallFireBlastEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 20;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFirebombSmallFireBlastParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallSparks1Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark1";
|
||||
lifetimeMS = 300;
|
||||
lifetimeVarianceMS = 20;
|
||||
gravityCoefficient = 0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 0.4";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 2;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallSparks1Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 12;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 20;
|
||||
velocityVariance = 15;
|
||||
thetaMin = 0;
|
||||
thetaMax = 90;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFirebombSmallSparks1Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 6;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "LifelikeFirebombSmallGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.15;
|
||||
lifetimeMS = 700;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 3;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 14;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 1.5;
|
||||
|
||||
particles = "LifelikeFirebombSmallFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Debris
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(LifelikeFirebombSmallDebrisTrailParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
|
||||
gravityCoefficient = -0.2;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 300;
|
||||
spinRandomMin = -300;
|
||||
spinRandomMax = 300;
|
||||
|
||||
sizes[0] = 0.5;
|
||||
sizes[1] = 1.5;
|
||||
sizes[2] = 0.5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0 0.5";
|
||||
colors[2] = "0.8 0.4 0 0";
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFirebombSmallDebrisTrailEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 10;
|
||||
ejectionVelocity = 5;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 10;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "LifelikeFirebombSmallDebrisTrailParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
ejectionOffset = "1";
|
||||
};
|
||||
|
||||
datablock DebrisData(LifelikeFirebombSmallDebris)
|
||||
{
|
||||
shapeFile = "art/shapes/particles/LifelikeEffectsPack/invisibledebris.dts";
|
||||
emitters[0] = LifelikeFirebombSmallDebrisTrailEmitter;
|
||||
elasticity = 0.4;
|
||||
friction = 0.25;
|
||||
numBounces = 1;
|
||||
bounceVariance = 0;
|
||||
explodeOnMaxBounce = false;
|
||||
staticOnMaxBounce = false;
|
||||
snapOnMaxBounce = false;
|
||||
minSpinSpeed = 100;
|
||||
maxSpinSpeed = 200;
|
||||
render2D = false;
|
||||
lifetime = 2;
|
||||
lifetimeVariance = 1;
|
||||
velocity = 10;
|
||||
velocityVariance = 4;
|
||||
fade = false;
|
||||
useRadiusMass = false;
|
||||
baseRadius = 0.3;
|
||||
gravModifier = 3.0;
|
||||
terminalVelocity = 50;
|
||||
ignoreWater = false;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeFirebombSmallExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 120;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeFirebombSmallGlowEmitter;
|
||||
particleDensity = 5;
|
||||
particleRadius = 1.5;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeFirebombSmallSmokeEmitter;
|
||||
emitter[1] = LifelikeFirebombSmallFireballEmitter;
|
||||
emitter[2] = LifelikeFirebombSmallFireBlastEmitter;
|
||||
emitter[3] = LifelikeFirebombSmallSparks1Emitter;
|
||||
|
||||
// Debris
|
||||
debris = LifelikeFirebombSmallDebris;
|
||||
debrisThetaMin = 10;
|
||||
debrisThetaMax = 60;
|
||||
debrisNum = 4;
|
||||
debrisNumVariance = 2;
|
||||
debrisVelocity = 15;
|
||||
debrisVelocityVariance = 5;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 5.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
196
Templates/Modules/RealisticVFX/Datablocks/LifelikeExp_Flak.cs
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Flak Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_Flak.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFlakPointBurstParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/PointBurst";
|
||||
lifetimeMS = 150;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1 0.6 0.2 1";
|
||||
colors[2] = "0.8 0.4 0.0 0.0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 8;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlakPointBurstEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 40;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 0.1;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeFlakPointBurstParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFlakSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
lifetimeMS = 3300;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.5 0.4 0.1 0";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 5;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.05;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlakSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 1;
|
||||
thetaMin = 0;
|
||||
thetaMax = 180;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 2;
|
||||
particles = "LifelikeFlakSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFlakSparksParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark1";
|
||||
lifetimeMS = 100;
|
||||
lifetimeVarianceMS = 50;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 3;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlakSparksEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 35;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 180;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFlakSparksParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFlakHazeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
lifetimeMS = 2500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.4 0.3 0.1 0";
|
||||
colors[1] = "0.1 0.1 0.1 0.7";
|
||||
colors[2] = "0.1 0.1 0.1 0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 3;
|
||||
sizes[2] = 4;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlakHazeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 0;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 180;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionOffset = 1;
|
||||
|
||||
particles = "LifelikeFlakHazeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeFlakExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 100;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeFlakHazeEmitter;
|
||||
particleDensity = 30;
|
||||
particleRadius = 1;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeFlakSmokeEmitter;
|
||||
emitter[1] = LifelikeFlakPointBurstEmitter;
|
||||
emitter[2] = LifelikeFlakSparksEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 10.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Flashbang Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_Flashbang.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFlashbangPointBurstParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/PointBurst";
|
||||
lifetimeMS = 350;
|
||||
lifetimeVarianceMS = 0;
|
||||
spinRandomMin = -20.0;
|
||||
spinRandomMax = 20.0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1.0 0.9 0.8 0.2";
|
||||
colors[2] = "1.0 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 5;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlashbangPointBurstEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 60;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 0;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
particles = "LifelikeFlashbangPointBurstParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFlashbangSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.02;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "0.5 0.5 0.5 0.5";
|
||||
colors[1] = "1 1 1 0.3";
|
||||
colors[2] = "1 1 1 0.0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 3;
|
||||
sizes[2] = 5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlashbangSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 1;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 1;
|
||||
particles = "LifelikeFlashbangSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeFlashbangGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.9 0.8 1 0.1";
|
||||
colors[2] = "0.9 0.8 1 0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 6;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlashbangGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 30;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeFlashbangGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFlashbangSparks2Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark2";
|
||||
dragCoefficient = 4;
|
||||
gravityCoefficient = 1;
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -0.0;
|
||||
spinRandomMax = 0.0;
|
||||
|
||||
colors[0] = "1 1 1 0.5";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.9 0.8 0.7 0";
|
||||
|
||||
sizes[0] = 2.0;
|
||||
sizes[1] = 1.5;
|
||||
sizes[2] = 0.5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlashbangSparks2Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 6;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 30.0;
|
||||
velocityVariance = 10.0;
|
||||
ejectionOffset = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeFlashbangSparks2Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(LifelikeFlashbangSparks1Particle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark3";
|
||||
lifetimeMS = 200;
|
||||
lifetimeVarianceMS = 20;
|
||||
useInvAlpha = false;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "1.0 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 3.5;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeFlashbangSparks1Emitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 17;
|
||||
velocityVariance = 5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeFlashbangSparks1Particle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeFlashbangExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 70;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeFlashbangGlowEmitter;
|
||||
particleDensity = 10;
|
||||
particleRadius = 2;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeFlashbangSmokeEmitter;
|
||||
emitter[1] = LifelikeFlashbangPointBurstEmitter;
|
||||
emitter[2] = LifelikeFlashbangSparks1Emitter;
|
||||
emitter[3] = LifelikeFlashbangSparks2Emitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 3.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "1 0.9 0.8";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,208 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Large Ground Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_GroundHitLarge.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitLargePointBurstParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/PointBurst";
|
||||
lifetimeMS = 350;
|
||||
lifetimeVarianceMS = 0;
|
||||
spinRandomMin = -20.0;
|
||||
spinRandomMax = 20.0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 0.2";
|
||||
colors[2] = "0.8 0.4 0.0 0.0";
|
||||
|
||||
sizes[0] = 8;
|
||||
sizes[1] = 25;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitLargePointBurstEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 40;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 0;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
particles = "LifelikeGroundHitLargePointBurstParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitLargeSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
gravityCoefficient = 0.5;
|
||||
lifetimeMS = 3000;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.3 0.2 0.1 0";
|
||||
colors[1] = "0.6 0.5 0.4 1";
|
||||
colors[2] = "0.6 0.5 0.4 0";
|
||||
|
||||
sizes[0] = 4;
|
||||
sizes[1] = 14;
|
||||
sizes[2] = 25;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitLargeSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 15;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 10;
|
||||
velocityVariance = 5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
particles = "LifelikeGroundHitLargeSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitLargeDirtDebrisParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/dirtDebris";
|
||||
//dragCoefficient = 4;
|
||||
gravityCoefficient = 3;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -40.0;
|
||||
spinRandomMax = 40.0;
|
||||
|
||||
colors[0] = "1 1 1 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.9 0.8 0.7 0";
|
||||
|
||||
sizes[0] = 5;
|
||||
sizes[1] = 10;
|
||||
sizes[2] = 14;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitLargeDirtDebrisEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 30.0;
|
||||
velocityVariance = 10.0;
|
||||
ejectionOffset = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 40;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeGroundHitLargeDirtDebrisParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitLargeDirtBlastParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/dirtBlast1";
|
||||
lifetimeMS = 850;
|
||||
lifetimeVarianceMS = 50;
|
||||
gravityCoefficient = 1;
|
||||
|
||||
colors[0] = "0.6 0.5 0.4 1";
|
||||
colors[1] = "0.6 0.5 0.4 1";
|
||||
colors[2] = "0.6 0.5 0.4 0";
|
||||
|
||||
sizes[0] = 5;
|
||||
sizes[1] = 30;
|
||||
sizes[2] = 30;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitLargeDirtBlastEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 20;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeGroundHitLargeDirtBlastParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeGroundHitLargeExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 200;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeGroundHitLargeSmokeEmitter;
|
||||
particleDensity = 5;
|
||||
particleRadius = 3;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeGroundHitLargeSmokeEmitter;
|
||||
emitter[1] = LifelikeGroundHitLargePointBurstEmitter;
|
||||
emitter[2] = LifelikeGroundHitLargeDirtBlastEmitter;
|
||||
emitter[3] = LifelikeGroundHitLargeDirtDebrisEmitter;
|
||||
|
||||
// Sub explosion objects
|
||||
//subExplosion[0] = LifelikeGroundHitLargeExplosion;
|
||||
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 20.0;
|
||||
|
||||
lightStartRadius = 20.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,204 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Small Ground Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_GroundHitSmall.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitSmallPointBurstParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/PointBurst";
|
||||
lifetimeMS = 350;
|
||||
lifetimeVarianceMS = 0;
|
||||
spinRandomMin = -20.0;
|
||||
spinRandomMax = 20.0;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 1";
|
||||
colors[1] = "0.8 0.4 0.0 0.2";
|
||||
colors[2] = "0.8 0.4 0.0 0.0";
|
||||
|
||||
sizes[0] = 4;
|
||||
sizes[1] = 13;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitSmallPointBurstEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 60;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 0;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
particles = "LifelikeGroundHitSmallPointBurstParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitSmallSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke2";
|
||||
gravityCoefficient = 0.5;
|
||||
lifetimeMS = 1500;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.3 0.2 0.1 0";
|
||||
colors[1] = "0.6 0.5 0.4 1";
|
||||
colors[2] = "0.6 0.5 0.4 0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 7;
|
||||
sizes[2] = 12.5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitSmallSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 40;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 6;
|
||||
velocityVariance = 3;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
particles = "LifelikeGroundHitSmallSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitSmallDirtDebrisParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/dirtDebris";
|
||||
//dragCoefficient = 4;
|
||||
gravityCoefficient = 3;
|
||||
lifetimeMS = 1200;
|
||||
lifetimeVarianceMS = 500;
|
||||
spinRandomMin = -40.0;
|
||||
spinRandomMax = 40.0;
|
||||
|
||||
colors[0] = "1 1 1 1";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.9 0.8 0.7 0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 5;
|
||||
sizes[2] = 7;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitSmallDirtDebrisEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 20.0;
|
||||
velocityVariance = 7.0;
|
||||
ejectionOffset = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 40;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
particles = "LifelikeGroundHitSmallDirtDebrisParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(LifelikeGroundHitSmallDirtBlastParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/dirtBlast1";
|
||||
lifetimeMS = 800;
|
||||
lifetimeVarianceMS = 50;
|
||||
gravityCoefficient = 1;
|
||||
|
||||
colors[0] = "0.6 0.5 0.4 1";
|
||||
colors[1] = "0.6 0.5 0.4 1";
|
||||
colors[2] = "0.6 0.5 0.4 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 10;
|
||||
sizes[2] = 13;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(LifelikeGroundHitSmallDirtBlastEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 30;
|
||||
periodVarianceMS = 2;
|
||||
ejectionVelocity = 13;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "LifelikeGroundHitSmallDirtBlastParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeGroundHitSmallExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 150;
|
||||
|
||||
// Volume
|
||||
particleEmitter = LifelikeGroundHitSmallSmokeEmitter;
|
||||
particleDensity = 10;
|
||||
particleRadius = 1.5;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = LifelikeGroundHitSmallSmokeEmitter;
|
||||
emitter[1] = LifelikeGroundHitSmallPointBurstEmitter;
|
||||
emitter[2] = LifelikeGroundHitSmallDirtBlastEmitter;
|
||||
emitter[3] = LifelikeGroundHitSmallDirtDebrisEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 10.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Large Simple Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_SimpleLarge.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ParticleData(SimpleLargeSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
dragCoeffiecient = 0.0;
|
||||
gravityCoefficient = -0.05;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 3300;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0.1 1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 4;
|
||||
sizes[1] = 8;
|
||||
sizes[2] = 12;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleLargeSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 2;
|
||||
particles = "SimpleLargeSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleLargeSparksParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark1";
|
||||
lifetimeMS = 250;
|
||||
lifetimeVarianceMS = 20;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 0.2";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 3;
|
||||
sizes[2] = 1;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleLargeSparksEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 25;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "SimpleLargeSparksParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleLargeFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireball";
|
||||
gravityCoefficient = -0.1;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.9 0.5 0.1 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 7;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleLargeFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 2.5;
|
||||
|
||||
particles = "SimpleLargeFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleLargeGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 7;
|
||||
sizes[1] = 11;
|
||||
sizes[2] = 5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleLargeGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 40;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "SimpleLargeGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeSimpleLargeExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 125;
|
||||
|
||||
// Volume
|
||||
particleEmitter = SimpleLargeGlowEmitter;
|
||||
particleDensity = 20;
|
||||
particleRadius = 2;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = SimpleLargeSmokeEmitter;
|
||||
emitter[1] = SimpleLargeFireballEmitter;
|
||||
emitter[2] = SimpleLargeSparksEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 20.0;
|
||||
|
||||
lightStartRadius = 20.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,203 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Lifelike Effects Pack - Small Simple Explosion
|
||||
// Copyright Adam deGrandis 2012
|
||||
//
|
||||
// Thanks for your support!
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//exec ("art/datablocks/LifelikeEffectsPack/LifelikeExp_SimpleSmall.cs");
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Emitters
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(SimpleSmallSmokeParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/smoke1";
|
||||
dragCoeffiecient = 0.0;
|
||||
gravityCoefficient = -0.02;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 3300;
|
||||
lifetimeVarianceMS = 200;
|
||||
spinRandomMin = -50.0;
|
||||
spinRandomMax = 50.0;
|
||||
|
||||
colors[0] = "0.1 0.1 0.1 1";
|
||||
colors[1] = "0.7 0.7 0.6 1";
|
||||
colors[2] = "1 0.9 0.8 0.0";
|
||||
|
||||
sizes[0] = 2;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 6;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.1;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleSmallSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 20;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 1;
|
||||
velocityVariance = 0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0.7;
|
||||
particles = "SimpleSmallSmokeParticle";
|
||||
blendStyle = "NORMAL";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleSmallSparksParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/spark1";
|
||||
lifetimeMS = 200;
|
||||
lifetimeVarianceMS = 20;
|
||||
|
||||
colors[0] = "1.0 0.9 0.8 0.2";
|
||||
colors[1] = "1.0 0.9 0.8 1";
|
||||
colors[2] = "0.8 0.4 0 0.0";
|
||||
|
||||
sizes[0] = 0.5;
|
||||
sizes[1] = 2;
|
||||
sizes[2] = 0.5;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleSmallSparksEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 20;
|
||||
velocityVariance = 10;
|
||||
thetaMin = 0;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 0;
|
||||
orientOnVelocity = true;
|
||||
orientParticles = true;
|
||||
particles = "SimpleSmallSparksParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleSmallFireballParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/fireball";
|
||||
gravityCoefficient = -0.1;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
colors[0] = "1 0.9 0.8 1";
|
||||
colors[1] = "0.9 0.5 0.1 1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 1;
|
||||
sizes[1] = 4;
|
||||
sizes[2] = 3;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleSmallFireballEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 3;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 1;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
ejectionoffset = 1;
|
||||
|
||||
particles = "SimpleSmallFireballParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
datablock ParticleData(SimpleSmallGlowParticle)
|
||||
{
|
||||
textureName = "art/shapes/particles/LifelikeEffectsPack/flame1";
|
||||
gravityCoefficient = -0.3;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
colors[0] = "0.9 0.8 1 0.4";
|
||||
colors[1] = "0.8 0.4 0.0 0.1";
|
||||
colors[2] = "0.8 0.4 0.0 0";
|
||||
|
||||
sizes[0] = 3;
|
||||
sizes[1] = 6;
|
||||
sizes[2] = 2;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(SimpleSmallGlowEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 40;
|
||||
periodVarianceMS = 5;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 2;
|
||||
thetaMin = 0;
|
||||
thetaMax = 120;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
|
||||
particles = "SimpleSmallGlowParticle";
|
||||
blendStyle = "ADDITIVE";
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
datablock ExplosionData(LifelikeSimpleSmallExplosion)
|
||||
{
|
||||
//soundProfile = YourSoundDatablock;
|
||||
lifeTimeMS = 125;
|
||||
|
||||
// Volume
|
||||
particleEmitter = SimpleSmallGlowEmitter;
|
||||
particleDensity = 20;
|
||||
particleRadius = 1;
|
||||
|
||||
// Point emission
|
||||
emitter[0] = SimpleSmallSmokeEmitter;
|
||||
emitter[1] = SimpleSmallFireballEmitter;
|
||||
emitter[2] = SimpleSmallSparksEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 11.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 1.5;
|
||||
camShakeRadius = 5.0;
|
||||
|
||||
lightStartRadius = 10.0;
|
||||
lightEndRadius = 0.0;
|
||||
lightStartColor = "1 0.9 0.8";
|
||||
lightEndColor = "0.8 0.4 0.0";
|
||||
lightStartBrightness = 2.0;
|
||||
lightEndBrightness = 0.0;
|
||||
|
||||
};
|
||||
BIN
Templates/Modules/RealisticVFX/Images/dirtBlast1.png
Normal file
|
After Width: | Height: | Size: 395 KiB |
BIN
Templates/Modules/RealisticVFX/Images/dirtDebris.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
Templates/Modules/RealisticVFX/Images/ember1.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
Templates/Modules/RealisticVFX/Images/fireball.png
Normal file
|
After Width: | Height: | Size: 402 KiB |
BIN
Templates/Modules/RealisticVFX/Images/fireblast.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
Templates/Modules/RealisticVFX/Images/flame1.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
Templates/Modules/RealisticVFX/Images/invisibledebris.dts
Normal file
BIN
Templates/Modules/RealisticVFX/Images/pointBurst.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
Templates/Modules/RealisticVFX/Images/smoke1.png
Normal file
|
After Width: | Height: | Size: 329 KiB |
BIN
Templates/Modules/RealisticVFX/Images/smoke2.png
Normal file
|
After Width: | Height: | Size: 360 KiB |
BIN
Templates/Modules/RealisticVFX/Images/spark1.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
Templates/Modules/RealisticVFX/Images/spark2.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Templates/Modules/RealisticVFX/Images/spark3.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
23
Templates/Modules/RealisticVFX/RealisticVFX.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
function RealisticVFX::onCreate(%this)
|
||||
{
|
||||
return;
|
||||
if(isObject(DatablockFilesList))
|
||||
{
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeEmitters.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_ComplexLarge.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_ComplexSmall.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_FirebombLarge.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_FirebombSmall.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_Flak.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_Flashbang.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_GroundHitLarge.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_GroundHitSmall.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_SimpleLarge.cs" );
|
||||
DatablockFilesList.add( "data/RalisticVFX/Datablocks/LifeLikeExp_SimpleSmall.cs" );
|
||||
}
|
||||
}
|
||||
|
||||
function RealisticVFX::onDestroy(%this)
|
||||
{
|
||||
}
|
||||
|
||||
15
Templates/Modules/RealisticVFX/RealisticVFX.module
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<ModuleDefinition
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
ModuleId="RealisticVFX"
|
||||
VersionId="1"
|
||||
Group="Game"
|
||||
scriptFile="RealisticVFX.cs"
|
||||
CreateFunction="onCreate"
|
||||
DestroyFunction="onDestroy">
|
||||
<DeclaredAssets
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
Extension="asset.taml"
|
||||
Recurse="true" />
|
||||
</ModuleDefinition>
|
||||
BIN
Templates/Modules/TestGrids/Images/512_forestgreen_lines.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="512_forestgreen_lines_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/512_forestgreen_lines.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/beatsme/Templates/Full/game/core/art/grids/512_forestgreen_lines.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_black.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_black_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_black.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_black.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_blue.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_blue_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_blue.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_blue.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_forestgreen.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_forestgreen_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_forestgreen.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_forestgreen.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_green.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_green_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_green.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_green.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_grey.png
Normal file
|
After Width: | Height: | Size: 4 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_grey_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_grey.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_grey.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_grey_base.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_grey_base_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_grey_base.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_grey_base.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_orange.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_orange_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_orange.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_orange.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_orange_lines.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_orange_lines_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_orange_lines.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_orange_lines.png"
|
||||
VersionId="1" />
|
||||
BIN
Templates/Modules/TestGrids/Images/Grid_512_red.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
<ImageAsset
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
AssetName="Grid_512_red_ALBEDO"
|
||||
imageFile="data/TestGrids/Images/Grid_512_red.png"
|
||||
useMips="true"
|
||||
isHDRImage="false"
|
||||
originalFilePath="E:/Gamedev/T3DMIT/PRs/ExpandedAssetStuffs/Templates/Full/game/core/art/grids/Grid_512_red.png"
|
||||
VersionId="1" />
|
||||
8
Templates/Modules/TestGrids/TestGrids.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
function TestGrids::onCreate(%this)
|
||||
{
|
||||
}
|
||||
|
||||
function TestGrids::onDestroy(%this)
|
||||
{
|
||||
}
|
||||
|
||||
15
Templates/Modules/TestGrids/TestGrids.module
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<ModuleDefinition
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
ModuleId="TestGrids"
|
||||
VersionId="1"
|
||||
Group="Game"
|
||||
scriptFile="TestGrids.cs"
|
||||
CreateFunction="onCreate"
|
||||
DestroyFunction="onDestroy">
|
||||
<DeclaredAssets
|
||||
canSave="true"
|
||||
canSaveDynamicFields="true"
|
||||
Extension="asset.taml"
|
||||
Recurse="true" />
|
||||
</ModuleDefinition>
|
||||
BIN
Templates/Modules/TestGrids/art/Grid_512_black.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |