mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 07:31:40 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
256
Code/Scripts/Toolkit_Explosions.cpp
Normal file
256
Code/Scripts/Toolkit_Explosions.cpp
Normal file
@@ -0,0 +1,256 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FILE
|
||||
* Toolkit_Explosions.cpp
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Designer Toolkit for Mission Construction - Explosions Subset
|
||||
*
|
||||
* PROGRAMMER
|
||||
* Design Team
|
||||
*
|
||||
* VERSION INFO
|
||||
* $Author: David_y $
|
||||
* $Revision: 5 $
|
||||
* $Modtime: 10/25/01 3:36p $
|
||||
* $Archive: /Commando/Code/Scripts/Toolkit_Explosions.cpp $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "toolkit.h"
|
||||
|
||||
/*
|
||||
Editor Script - M00_Explosion_Create_RMV
|
||||
|
||||
This creates an explosion at a location.
|
||||
|
||||
Parameters:
|
||||
|
||||
Explosion_Name = The name of the explosion type to make.
|
||||
Origin = The Vector3 location of the explosion.
|
||||
*/
|
||||
|
||||
DECLARE_SCRIPT(M00_Explosion_Create_RMV, "Start_Now=0:int, Create_At_Obj=0:int, Receive_Type:int, Receive_Param_On=1:int, Explosion_Name:string, Origin:vector3, Debug_Mode=0:int")
|
||||
{
|
||||
Vector3 explosion_origin;
|
||||
int custom_type;
|
||||
int parameter;
|
||||
bool debug_mode;
|
||||
|
||||
void Created(GameObject * obj)
|
||||
{
|
||||
debug_mode = (Get_Int_Parameter("Debug_Mode") == 1) ? true : false;
|
||||
if (Get_Int_Parameter("Create_At_Obj"))
|
||||
{
|
||||
explosion_origin = Commands->Get_Position(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
explosion_origin = Get_Vector3_Parameter("Origin");
|
||||
}
|
||||
custom_type = Get_Int_Parameter("Receive_Type");
|
||||
parameter = Get_Int_Parameter("Receive_Param_On");
|
||||
if (Get_Int_Parameter("Start_Now"))
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_RMV ACTIVATED.\n"));
|
||||
Commands->Create_Explosion(Get_Parameter("Explosion_Name"), explosion_origin, obj);
|
||||
}
|
||||
}
|
||||
|
||||
void Custom(GameObject * obj, int type, int param, GameObject * sender)
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_RMV received custom type %d, param %d.\n", type, param));
|
||||
if ((type == custom_type) && (param == parameter))
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_RMV ACTIVATED.\n"));
|
||||
Commands->Create_Explosion(Get_Parameter("Explosion_Name"), explosion_origin, obj);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Editor Script - M00_Explosion_Create_At_Bone_RMV
|
||||
|
||||
This creates an explosion on a specific bone of an object.
|
||||
|
||||
Parameters:
|
||||
|
||||
Explosion_Name = The name of the explosion to create.
|
||||
Object_ID = The ID of the object to create the explosion on.
|
||||
Bone_Name = The bone name to create the explosion on.
|
||||
*/
|
||||
|
||||
DECLARE_SCRIPT(M00_Explosion_Create_At_Bone_RMV, "Start_Now=0:int, Receive_Type:int, Receive_Param_On:int, Explosion_Name:string, Object_ID:int, Bone_Name:string, Debug_Mode=0:int")
|
||||
{
|
||||
int target_id;
|
||||
int custom_type;
|
||||
int parameter;
|
||||
bool debug_mode;
|
||||
|
||||
void Created(GameObject * obj)
|
||||
{
|
||||
debug_mode = (Get_Int_Parameter("Debug_Mode") == 1) ? true : false;
|
||||
custom_type = Get_Int_Parameter("Receive_Type");
|
||||
parameter = Get_Int_Parameter("Receive_Param_On");
|
||||
target_id = Get_Int_Parameter("Object_ID");
|
||||
if (Get_Int_Parameter("Start_Now"))
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_At_Bone_RMV ACTIVATED.\n"));
|
||||
if (Commands->Find_Object(target_id) != NULL)
|
||||
Commands->Create_Explosion_At_Bone(Get_Parameter("Explosion_Name"), Commands->Find_Object(target_id), Get_Parameter("Bone_Name"), obj);
|
||||
}
|
||||
}
|
||||
|
||||
void Custom(GameObject * obj, int type, int param, GameObject * sender)
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_At_Bone_RMV received custom type %d, param %d.\n", type, param));
|
||||
if ((type == custom_type) && (param == parameter))
|
||||
{
|
||||
SCRIPT_DEBUG_MESSAGE(("M00_Explosion_Create_At_Bone_RMV ACTIVATED.\n"));
|
||||
if (Commands->Find_Object(target_id) != NULL)
|
||||
Commands->Create_Explosion_At_Bone(Get_Parameter("Explosion_Name"), Commands->Find_Object(target_id), Get_Parameter("Bone_Name"), obj);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
DECLARE_SCRIPT(M00_Create_Random_Explosion_DLS, "Explosion_Name:string, Delay_Min=0.0f:float, Delay_Max=4.0f:float, Loc_ID0=0:int, Loc_ID1=0:int, Loc_ID2=0:int, Loc_ID3=0:int, Loc_ID4=0:int, Loc_ID5=0:int, Loc_ID6=0:int, Loc_ID7=0:int, Loc_ID8=0:int, Loc_ID9=0:int")
|
||||
{
|
||||
bool active;
|
||||
int random;
|
||||
int last;
|
||||
int loc_id[10];
|
||||
|
||||
|
||||
enum{EXPLODE};
|
||||
|
||||
// Register variables to be Auto-Saved
|
||||
// All variables must have a unique ID, less than 256, that never changes
|
||||
REGISTER_VARIABLES()
|
||||
{
|
||||
SAVE_VARIABLE( active, 1 );
|
||||
SAVE_VARIABLE( random, 2 );
|
||||
SAVE_VARIABLE( last, 3 );
|
||||
}
|
||||
|
||||
void Created(GameObject * obj)
|
||||
{
|
||||
loc_id[0] = Get_Int_Parameter("Loc_ID0");
|
||||
loc_id[1] = Get_Int_Parameter("Loc_ID1");
|
||||
loc_id[2] = Get_Int_Parameter("Loc_ID2");
|
||||
loc_id[3] = Get_Int_Parameter("Loc_ID3");
|
||||
loc_id[4] = Get_Int_Parameter("Loc_ID4");
|
||||
loc_id[5] = Get_Int_Parameter("Loc_ID5");
|
||||
loc_id[6] = Get_Int_Parameter("Loc_ID6");
|
||||
loc_id[7] = Get_Int_Parameter("Loc_ID7");
|
||||
loc_id[8] = Get_Int_Parameter("Loc_ID8");
|
||||
loc_id[9] = Get_Int_Parameter("Loc_ID9");
|
||||
|
||||
active = false;
|
||||
random = 0;
|
||||
last = 0;
|
||||
}
|
||||
|
||||
void Custom(GameObject * obj, int type, int param, GameObject * sender)
|
||||
{
|
||||
|
||||
if(type == M00_CREATE_RANDOM_EXPLOSION && param == 1)
|
||||
{
|
||||
active = true;
|
||||
float delay = Commands->Get_Random(Get_Float_Parameter("Delay_Min"), Get_Float_Parameter("Delay_Max"));
|
||||
Commands->Start_Timer (obj, this, delay, EXPLODE);
|
||||
}
|
||||
if(type == M00_CREATE_RANDOM_EXPLOSION && param == 0)
|
||||
{
|
||||
active = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Timer_Expired(GameObject* obj, int timer_id)
|
||||
{
|
||||
if(timer_id == EXPLODE && active)
|
||||
{
|
||||
while (random == last || loc_id[random] == 0)
|
||||
{
|
||||
random = Commands->Get_Random_Int(0, 9);
|
||||
}
|
||||
|
||||
Commands->Create_Explosion(Get_Parameter("Explosion_Name"), Commands->Get_Position(Commands->Find_Object(loc_id[random])), obj);
|
||||
last = random;
|
||||
|
||||
float delay = Commands->Get_Random(Get_Float_Parameter("Delay_Min"), Get_Float_Parameter("Delay_Max"));
|
||||
Commands->Start_Timer (obj, this, delay, EXPLODE);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
DECLARE_SCRIPT( M00_NukeStrike_Anim, "")
|
||||
{
|
||||
|
||||
void Created(GameObject * obj)
|
||||
{
|
||||
Commands->Send_Custom_Event( obj, obj, 0, 1, 206/30 );
|
||||
Commands->Send_Custom_Event( obj, obj, 0, 2, 250/30 );
|
||||
Commands->Send_Custom_Event( obj, obj, 0, 3, 350/30 );
|
||||
|
||||
GameObject *Nuke;
|
||||
Nuke = Commands->Create_Object( "Generic_Cinematic", Commands->Get_Position(obj) );
|
||||
if ( Nuke )
|
||||
{
|
||||
Commands->Set_Model( Nuke, "XG_AG_Nuke" );
|
||||
Commands->Attach_Script( Nuke, "M00_PlayAnimation_DestroyObject_DAY", "Nuke_Missle.Nuke_Missle");
|
||||
Commands->Create_3D_Sound_At_Bone( "SFX.Nuclear_Strike_Buildup", Nuke, "ROOTTRANSFORM" );
|
||||
}
|
||||
}
|
||||
|
||||
void Custom(GameObject * obj, int type, int param, GameObject * sender)
|
||||
{
|
||||
if ( type == 1 )
|
||||
{
|
||||
GameObject *NukeCloud;
|
||||
NukeCloud = Commands->Create_Object( "Generic_Cinematic", Commands->Get_Position(obj) );
|
||||
if ( NukeCloud )
|
||||
{
|
||||
Commands->Set_Model( NukeCloud, "XG_AG_Nukecloud" );
|
||||
Commands->Attach_Script( NukeCloud, "M00_PlayAnimation_DestroyObject_DAY", "Nuke_cloud.Nuke_cloud");
|
||||
}
|
||||
|
||||
Commands->Shake_Camera( Commands->Get_Position(obj), 2.0f, 0.5f, 2.0f );
|
||||
}
|
||||
else if ( type == 2 )
|
||||
{
|
||||
Commands->Shake_Camera( Commands->Get_Position(obj), 2.0f, 1.0f, 3.0f );
|
||||
}
|
||||
else if ( type == 3 )
|
||||
{
|
||||
GameObject *NukeCloudTwo;
|
||||
NukeCloudTwo = Commands->Create_Object( "Generic_Cinematic", Commands->Get_Position(obj) );
|
||||
if ( NukeCloudTwo )
|
||||
{
|
||||
Commands->Set_Model( NukeCloudTwo, "XG_AG_NukeCloud" );
|
||||
Commands->Attach_Script( NukeCloudTwo, "M00_PlayAnimation_DestroyObject_DAY", "XG_Nukecloud_02");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user