| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- /*
- ** 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
- *
- * DESCRIPTION
- *
- * VERSION INFO
- * $Author: David_y $
- * $Revision: 75 $
- * $Modtime: 1/14/02 12:40a $
- * $Archive: /Commando/Code/Scripts/Test_DAY.cpp $
- *
- ******************************************************************************/
- #include "toolkit.h"
- DECLARE_SCRIPT(M00_Screenshot_Poser_DAY, "Anim_Name:string" )
- {
-
- void Created( GameObject *obj )
- {
- Commands->Set_Loiters_Allowed( obj, false );
- Commands->Innate_Disable( obj );
- Commands->Innate_Soldier_Enable_Enemy_Seen( obj, false );
- Commands->Innate_Soldier_Enable_Gunshot_Heard( obj, false );
- Commands->Innate_Soldier_Enable_Footsteps_Heard( obj, false );
- Commands->Innate_Soldier_Enable_Bullet_Heard( obj, false );
- Commands->Innate_Soldier_Enable_Actions( obj, false );
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 0 );
- params.Set_Animation( Get_Parameter( "Anim_Name" ), true );
- Commands->Action_Play_Animation( obj, params );
- }
-
- void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
- {
- if ( action_id == 0 )
- {
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 0 );
- params.Set_Animation( Get_Parameter( "Anim_Name" ), true );
- Commands->Action_Play_Animation( obj, params );
- }
- }
- };
- DECLARE_SCRIPT (DAY_TestScriptOne, "")
- {
- int action;
- void Created ( GameObject * obj )
- {
- action = 1;
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 1 );
- params.Set_Movement( Commands->Get_Position( Commands->Find_Object(100077) ), 0.6f, 1.0f, false );
- params.Set_Attack( Commands->Find_Object(100079), 40.0f, 0.0f, true );
- params.AttackCrouched = true;
- params.MoveCrouched = true;
- Commands->Action_Attack( obj, params );
- Commands->Send_Custom_Event( obj, obj, 0, 0, 5.0f );
- }
- void Custom( GameObject *obj, int type, int param, GameObject *sender)
- {
- if ( action == 1 )
- {
- action = 2;
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 2 );
- params.Set_Movement( Commands->Get_Position( Commands->Find_Object(100078) ), 0.6f, 1.0f, false );
- params.Set_Attack( Commands->Find_Object(100079), 40.0f, 0.0f, true );
- params.AttackCrouched = true;
- params.MoveCrouched = true;
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
- Commands->Send_Custom_Event( obj, obj, 0, 0, 5.0f );
- }
- else
- {
- action = 1;
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 1 );
- params.Set_Movement( Commands->Get_Position( Commands->Find_Object(100077) ), 0.6f, 1.0f, false );
- params.Set_Attack( Commands->Find_Object(100079), 40.0f, 0.0f, true );
- params.AttackCrouched = true;
- params.MoveCrouched = true;
- Commands->Action_Attack( obj, params );
- Commands->Send_Custom_Event( obj, obj, 0, 0, 5.0f );
- }
- }
- };
- DECLARE_SCRIPT (DAY_TestScriptTwo, "")
- {
- void Created( GameObject *obj )
- {
- Commands->Innate_Disable(obj);
- }
- };
- DECLARE_SCRIPT (DAY_TestScriptThree, "")
- {
- void Created( GameObject *obj )
- {
- Commands->Create_Explosion( "Explosion_Rocket_Gunboat_M01", Commands->Get_Position(obj), obj);
- }
- };
- DECLARE_SCRIPT (DAY_VTOL_CircleAttack, "")
- {
- int damager_id;
- Vector3 Get_Circle_Position( GameObject *obj, GameObject *target , float radius , float reverseprob)
- {
- double theta_angle = 90;
- float reverse = Commands->Get_Random(0.0f,1.0f);
- if ( reverse < reverseprob)
- {
- theta_angle *= -1;
- }
- Vector3 position = Commands->Get_Position(obj);
- Vector3 targetlocation = Commands->Get_Position( target ) - position;
- targetlocation.Normalize();
- targetlocation *= radius;
- targetlocation.Rotate_Z(DEG_TO_RADF(theta_angle));
- targetlocation += position;
- targetlocation.Z += Commands->Get_Safe_Flight_Height( targetlocation.X, targetlocation.Y );
- return targetlocation;
- }
-
- void Created( GameObject *obj )
- {
- }
- void Damaged( GameObject *obj , GameObject *damager, float amount )
- {
- if ( damager )
- {
- damager_id = Commands->Get_ID(damager);
- }
- Commands->Send_Custom_Event( obj, obj, 1, 1, 0.0f );
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == 1 )
- {
- if ( param == 1 )
- {
- GameObject *target = Commands->Find_Object(damager_id);
- if (target)
- {
- ActionParamsStruct params;
- params.Set_Basic( this, 99, 1 );
- params.Set_Movement(Get_Circle_Position( obj, target, 5.0f, 0.1f ), 1.0f, 1.0f, false );
- params.Set_Attack(target, 40.0f, 0.0f, true );
- Commands->Action_Attack( obj, params );
- Commands->Send_Custom_Event( obj, obj, 1, 1, 5.0f );
- }
- }
- }
- }
- };
- DECLARE_SCRIPT (M00_GrantPowerup_Created, "WeaponDef:string")
- {
- void Created( GameObject *obj)
- {
- const char *Weapon = Get_Parameter( "WeaponDef" );
- Commands->Give_PowerUp( obj, Weapon, false );
- }
- };
- DECLARE_SCRIPT (M00_VisceroidInnate_DAY, "")
- {
- void Created( GameObject *obj )
- {
- Commands->Set_Loiters_Allowed( obj, false );
- Commands->Set_Animation( obj, "C_Visceroid.C_Visceroid", true );
- }
- void Killed( GameObject *obj, GameObject *killer )
- {
- Commands->Set_Animation( obj, "C_Visceroid.C_Visceroid_Die", false );
- }
- };
- // Generic script to replace destroyed models (Turrets, etc)
- DECLARE_SCRIPT (M00_DestroyedStateObject_DAY, "OriginalModelFacing:float,DestroyedModelPreset:string")
- {
- void Destroyed( GameObject *obj )
- {
- Vector3 object_pos = Commands->Get_Position(obj);
- GameObject *DestroyedModel;
- DestroyedModel = Commands->Create_Object( Get_Parameter("DestroyedModelPreset"), object_pos );
- Commands->Set_Facing( DestroyedModel, Get_Float_Parameter("OriginalModelFAcing") );
- }
- };
- // For playing ambient sounds on characters - DAY
- DECLARE_SCRIPT(M00_Play_Sound_Object_Bone_DAY, "Sound_Preset:string, Frequency_Min=-1.0:float, Frequency_Max:float")
- {
- void Created(GameObject * obj)
- {
- if (Get_Int_Parameter("Frequency_Min") == -1)
- {
- Timer_Expired(obj, 0);
- }
- else
- {
- float time = Commands->Get_Random(Get_Float_Parameter("Frequency_Min"), Get_Float_Parameter("Frequency_Max"));
- Commands->Start_Timer(obj, this, time, 0);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- const char * sound = Get_Parameter("Sound_Preset");
- Vector3 pos = Commands->Get_Position(obj);
- pos += Get_Vector3_Parameter("Offset");
- int id;
-
- Commands->Debug_Message("Playing 3D Sound\n");
- id = Commands->Create_3D_Sound_At_Bone( sound, obj, "ROOTTRANSFORM" );
- Commands->Monitor_Sound(obj, id);
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == CUSTOM_EVENT_SOUND_ENDED)
- {
- if (Get_Int_Parameter("Frequency_Min") < 0 )
- {
- float time = Commands->Get_Random(Get_Float_Parameter("Frequency_Min"), Get_Float_Parameter("Frequency_Max"));
- Commands->Start_Timer(obj, this, time, 0);
- }
- }
- }
- };
- DECLARE_SCRIPT (M00_PlayAnimation_DestroyObject_DAY, "AnimationName:string")
- {
- void Created( GameObject * obj )
- {
- const char * animname = Get_Parameter("AnimationName");
- Commands->Set_Animation( obj, animname, 0 );
- }
- void Animation_Complete( GameObject * obj, const char * animation_name )
- {
- Commands->Destroy_Object(obj);
- }
- };
- DECLARE_SCRIPT (M00_Disable_Loiter_DAY, "")
- {
- void Created( GameObject * obj )
- {
- Commands->Set_Loiters_Allowed( obj , false );
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M00_LOITER_ENABLE_TOGGLE )
- {
- Commands->Set_Loiters_Allowed( obj, true );
- }
- }
- };
- DECLARE_SCRIPT (M00_Cinematic_Kill_Object_DAY, "")
- {
- void Created( GameObject * obj )
- {
- Commands->Apply_Damage( obj, 10000.0f, "BlamoKiller", NULL );
- }
- };
- DECLARE_SCRIPT (M00_Set_Background_Music_DAY, "MusicFile:string")
- {
- void Created( GameObject * obj )
- {
- Commands->Set_Background_Music( Get_Parameter("MusicFile") );
- }
- };
|