Home » Renegade Discussions » Mod Forum » Code/Source Request Crates
Code/Source Request Crates [message #325515] |
Mon, 07 April 2008 14:41 |
|
wittebolx
Messages: 332 Registered: May 2007 Location: the netherlands
Karma:
|
Recruit |
|
|
Many thx to Reborn and Hex for there source release on several crates.
Crate code release on request from EA-DamageEverything.
gmmain.cpp
/////////////////////////
/////////////////////////
//Electromagnetic Pulse//
/////////////////////////
/////////////////////////
void reb_Electromagnetic_pulse::Created(GameObject *obj) {
Commands->Set_Rain(10.0f,3.5f,true);
Commands->Set_Wind(0.7f,2.0f,1.0f,3.5f);
char empstormmsg[128];
char empstormmsg2[128];
Commands->Create_2D_WAV_Sound("m00evag_dsgn0069i1evag_snd.wav");
sprintf(empstormmsg,"msg Warning!!!");
Console_Input(empstormmsg);
sprintf(empstormmsg2,"msg Electromagnetic Pulse approaching...");
Console_Input(empstormmsg2);
Commands->Start_Timer(obj,this,3.0f,1);
Commands->Start_Timer(obj,this,4.0f,2);
Commands->Start_Timer(obj,this,4.7f,3);
Commands->Start_Timer(obj,this,14.7f,4);
Commands->Start_Timer(obj,this,15.7f,5);
Commands->Start_Timer(obj,this,16.7f,6);
Commands->Start_Timer(obj,this,17.7f,7);
Commands->Start_Timer(obj,this,18.7f,8);
Commands->Start_Timer(obj,this,19.7f,9);
Commands->Start_Timer(obj,this,20.4f,10);
Commands->Start_Timer(obj,this,21.4f,11);
Commands->Start_Timer(obj,this,22.0f,12);
Commands->Start_Timer(obj,this,23.0f,13);
Commands->Start_Timer(obj,this,23.6f,14);
Commands->Start_Timer(obj,this,24.2f,15);
Commands->Start_Timer(obj,this,24.8f,16);
Commands->Start_Timer(obj,this,25.4f,17);
Commands->Start_Timer(obj,this,26.6f,18);
Commands->Start_Timer(obj,this,27.2f,19);
Commands->Start_Timer(obj,this,28.2f,20);
Commands->Start_Timer(obj,this,28.8f,21);
Commands->Start_Timer(obj,this,29.6f,22);
Commands->Start_Timer(obj,this,30.2f,23);
Commands->Start_Timer(obj,this,31.2f,24);
Commands->Start_Timer(obj,this,42.2f,25);
}
void reb_Electromagnetic_pulse::Timer_Expired(GameObject *obj, int number) {
char empstormmsg[128];
if(number == 1){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0097i1evag_snd.wav");
}
if(number == 2){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0076i1evag_snd.wav");
}
if(number == 3){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0098i1evag_snd.wav");
}
/////////////////////////////////////
// numer count down 5,4,3,2,1
/////////////////////////////////////
if(number == 4){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0082i1evag_snd.wav");
sprintf(empstormmsg,"msg 5");
Console_Input(empstormmsg);
}
if(number == 5){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0083i1evag_snd.wav");
sprintf(empstormmsg,"msg 4");
Console_Input(empstormmsg);
}
if(number == 6){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0084i1evag_snd.wav");
sprintf(empstormmsg,"msg 3");
Console_Input(empstormmsg);
}
if(number == 7){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0085i1evag_snd.wav");
sprintf(empstormmsg,"msg 2");
Console_Input(empstormmsg);
}
if(number == 8){
Commands->Create_2D_WAV_Sound("m00evag_dsgn0086i1evag_snd.wav");
sprintf(empstormmsg,"msg 1");
Console_Input(empstormmsg);
}
////////////////////////////////
// actual EMP starts here
////////////////////////////////
if(number == 9){
Vector3 position;
position = Commands->Get_Position(Find_War_Factory(2));
position.Y += 20.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 10){
Vector3 position;
position = Commands->Get_Position(Find_Refinery(2));
position.Y -= 20.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 11){
Vector3 position;
position = Commands->Get_Position(Find_Soldier_Factory(2));
position.X += 15.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 12){
Vector3 position;
position = Commands->Get_Position(Find_Refinery(2));
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
float refhealth = Commands->Get_Health(Find_Refinery(2));
Commands->Set_Health((Find_Refinery(2)),(refhealth/1.3f));
}
if(number == 13){
Vector3 position;
position = Commands->Get_Position(Find_War_Factory(2));
position.Y -= 20.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 14){
Vector3 position;
position = Commands->Get_Position(Find_Soldier_Factory(2));
position.Y -= 20.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 15){
Vector3 position;
position = Commands->Get_Position(Find_Base_Defense(2));
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
float agthealth = Commands->Get_Health(Find_Base_Defense(2));
Commands->Set_Health((Find_Base_Defense(2)),(agthealth/1.4f));
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 16){
Vector3 position;
position = Commands->Get_Position(Find_Base_Defense(2));
position.X += 10.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 17){
Vector3 position;
position = Commands->Get_Position(Find_Soldier_Factory(2));
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
float barhealth = Commands->Get_Health(Find_Soldier_Factory(2));
Commands->Set_Health((Find_Soldier_Factory(2)),(barhealth/1.35f));
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 18){
Vector3 position;
position = Commands->Get_Position(Find_Refinery(2));
position.Y -= 10.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 19){
Vector3 position;
position = Commands->Get_Position(Find_Refinery(2));
position.X += 5.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 20){
Vector3 position;
position = Commands->Get_Position(Find_War_Factory(2));
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
float wepshealth = Commands->Get_Health(Find_War_Factory(2));
Commands->Set_Health((Find_War_Factory(2)),(wepshealth/1.4f));
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 21){
Vector3 position;
position = Commands->Get_Position(Find_War_Factory(2));
position.X += 10.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 22){
Vector3 position;
position = Commands->Get_Position(Find_Base_Defense(2));
position.Y += 15.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 23){
Vector3 position;
position = Commands->Get_Position(Find_Base_Defense(2));
position.X += 5.0f;
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),position) < 1000) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
}
if(number == 24){
Vector3 position;
position = Commands->Get_Position(Find_Power_Plant(2));
Commands->Create_2D_WAV_Sound("cc_pwr_dwn_01.wav");
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",position);
float pphealth = Commands->Get_Health(Find_Power_Plant(2));
Commands->Set_Health((Find_Power_Plant(2)),(pphealth/1.3f));
//////////////////////////////////
/// turn the weather off
///////////////////////////////////
Commands->Set_Rain(0.0f,10.0f,true);
Commands->Set_Wind(0.0f,0.0f,0.0f,3.5f);
}
if(number == 25){
Commands->Set_Fog_Enable(0);
sprintf(empstormmsg,"msg The Electromagnetic Pulse has sub-sided.");
Console_Input(empstormmsg);
}
}
void EMP_Effect::Created(GameObject *obj) {
Force_Occupants_Exit(obj);
Commands->Enable_Vehicle_Transitions(obj,false);
Commands->Start_Timer(obj,this,30,1);
}
void EMP_Effect::Timer_Expired(GameObject *obj,int number) {
if (number == 1) {
Commands->Enable_Vehicle_Transitions(obj,true);
Destroy_Script();
}
}
void Power_Down::Created(GameObject *obj) {
Commands->Set_Building_Power(obj,false);
Commands->Start_Timer(obj,this,120,1);
}
void Power_Down::Timer_Expired(GameObject *obj,int number) {
if (number == 1) {
if (Is_Base_Powered(Get_Object_Type(obj))) {
Commands->Set_Building_Power(obj,true);
}
Destroy_Script();
}
}
void zbl_kamikaze_Suit_Crate::Created(GameObject *obj)
{
Attach_Script_Once(obj, "JFW_Blow_Up_On_Death", "Explosion_IonCannonBeacon");
float rand = Commands->Get_Random(29,301);
Team = Get_Object_Type(obj);
Commands->Start_Timer(obj, this, rand,0);
}
void zbl_kamikaze_Suit_Crate::Timer_Expired(GameObject *obj, int number)
{
if (number == 0)
{
float rand = Commands->Get_Random(0,100);
if (rand >= 50.0f)
{
// nothing happens
}
else {
Commands->Apply_Damage(obj, 9999.0f, "BlamoKiller", 0);
Console_Input(StrFormat("msg [WGC]: Oh no! I guess that experimental kamikaze suit didn't work too well. I hope that %ls guy didn't get hurt. :(", Get_Wide_Team_Name(PTTEAM(Team))).c_str());
}
}
}
gmmain.h
class reb_Electromagnetic_pulse : public ScriptImpClass {
void Created(GameObject *obj);
void Timer_Expired(GameObject *obj,int number);
};
class zbl_kamikaze_Suit_Crate : public ScriptImpClass {
int Team;
void Created(GameObject *obj);
void Timer_Expired(GameObject *obj, int number);
};
class EMP_Effect : public ScriptImpClass {
void Created(GameObject *obj);
void Timer_Expired(GameObject *obj,int number);
};
class Power_Down : public ScriptImpClass {
void Created(GameObject *obj);
void Timer_Expired(GameObject *obj,int number);
};
gmcrate.h
/* Renegade Scripts.dll
SSGM crate scripts
Copyright 2007 Vloktboky, WhiteDragon(MDB), Mac, Jonathan Wilson
This file is part of the Renegade scripts.dll
The Renegade scripts.dll 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 2, or (at your option) any later
version. See the file COPYING for more details.
In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
Only the source code to the module(s) containing the licenced code has to be released.
*/
#ifndef CRATE_H
#define CRATE_H
#include "gmsettingsclass.h"
//Crate specific settings
struct CrateSettings : public virtual SettingsLoader {
CrateSettings(const char *ININame) : SettingsLoader(ININame) {
EnableCrates = false;
EnableNewCrates = false;
VehCrate = false;
CrateVehSpawnPos[0] = Vector3(0,0,0);
CrateVehSpawnPos[1] = Vector3(0,0,0);
}
virtual void Load();
//Settings added in 1.3.4
bool EnableCrates;
//Settings added in 1.4
bool EnableNewCrates;
bool VehCrate;
//Settings added in 1.6
Vector3 CrateVehSpawnPos[2];
int CrateWeapon;
int CrateMoney;
int CratePoints;
int CrateVehicle;
int CrateDeath;
int CrateTiberium;
int CrateAmmo;
int CrateArmor;
int CrateHealth;
int CrateCharacter;
int CrateButterFingers;
int CrateRefill;
int CrateBeacon;
int CrateSpy;
int CrateStealth;
int CrateThief;
int Cratekamikaze;
int CrateEMP;
int CrateTeamMoney;
int CrateDisarmC4;
int CrateBlownFuse;
int CratePromote;
int CrateEMPStorm;
};
//Crate specific data
struct CrateData {
CrateData() {
CrateExists = false;
CrateLastPickup = -181;
CrateID = 0;
}
bool CrateExists;
int CrateLastPickup;
int CrateID;
};
void Crate_Level_Loaded();
//******************************************************************************
//*************************** CRATE RELATED SCRIPTS ****************************
//******************************************************************************
//Attached to all crates.
class MDB_SSGM_Crate : public ScriptImpClass {
void Created(GameObject *obj);
void Custom(GameObject *obj, int message, int param, GameObject *sender);
int vehBlocker;
bool PickedUp;
};
class KAK_Prevent_Destruction_Until_Entered : public ScriptImpClass {
void Created(GameObject *obj);
void Damaged(GameObject *obj, GameObject *damager, float damage);
void Custom(GameObject *obj, int message, int param, GameObject *sender);
void Timer_Expired(GameObject *obj, int number);
};
#endif
gmcrate.cpp
/* Renegade Scripts.dll
SSGM crate scripts
Copyright 2007 Vloktboky, WhiteDragon(MDB), Mac, Jonathan Wilson
This file is part of the Renegade scripts.dll
The Renegade scripts.dll 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 2, or (at your option) any later
version. See the file COPYING for more details.
In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
Only the source code to the module(s) containing the licenced code has to be released.
*/
#include <stdlib.h>
#include <time.h>
#include "scripts.h"
#include "engine.h"
#include "date.h"
#include "gmmain.h"
void CrateSettings::Load() {
LoadBool(EnableCrates,"EnableCrates");
LoadBool(EnableNewCrates,"EnableNewCrates");
if (EnableNewCrates) {
LoadBool(VehCrate,"AllowVehCrates",false);
LoadVector3(CrateVehSpawnPos[0],"NodRVC",Vector3(0.0f,0.0f,0.0f),false,true,false);
LoadVector3(CrateVehSpawnPos[1],"GDIRVC",Vector3(0.0f,0.0f,0.0f),false,true,false);
CrateWeapon = INI->Get_Int("Crates","Weapon",0);
CrateMoney = INI->Get_Int("Crates","Money",0);
CratePoints = INI->Get_Int("Crates","Points",0);
CrateVehicle = INI->Get_Int("Crates","Vehicle",0);
CrateDeath = INI->Get_Int("Crates","Death",0);
CrateTiberium = INI->Get_Int("Crates","Tiberium",0);
CrateAmmo = INI->Get_Int("Crates","Ammo",0);
CrateArmor = INI->Get_Int("Crates","Armor",0);
CrateHealth = INI->Get_Int("Crates","Health",0);
CrateCharacter = INI->Get_Int("Crates","Character",0);
CrateButterFingers = INI->Get_Int("Crates","ButterFingers",0);
CrateRefill = INI->Get_Int("Crates","Refill",0);
CrateBeacon = INI->Get_Int("Crates","Beacon",0);
CrateSpy = INI->Get_Int("Crates","Spy",0);
CrateStealth = INI->Get_Int("Crates","Stealth",0);
CrateThief = INI->Get_Int("Crates","Thief",0);
Cratekamikaze = INI->Get_Int("Crates","kamikaze",0);
CrateEMP = INI->Get_Int("Crates","EMP",0);
CrateTeamMoney = INI->Get_Int("Crates","TeamMoney",0);
CrateDisarmC4 = INI->Get_Int("Crates","DisarmC4",0);
CrateBlownFuse = INI->Get_Int("Crates","BlownFuse",0);
CratePromote = INI->Get_Int("Crates","Promote",0);
CrateEMPStorm = INI->Get_Int("Crates","EMPStorm",0);
}
}
char *RandomWeapon[24][3] = {
{ "Auto Rifle", "POW_AutoRifle_Player", "m00pwar_aqob0004i1evag_snd.wav" },
{ "Shotgun", "POW_Shotgun_Player", "m00pwps_aqob0004i1evag_snd.wav" },
{ "Flamethrower", "POW_Flamethrower_Player", "m00pwft_aqob0001i1evag_snd.wav" },
{ "Grenade Launcher", "POW_GrenadeLauncher_Player", "m00pwgl_aqob0004i1evag_snd.wav" },
{ "Repair Gun(Weak)", "POW_RepairGun_Player", "m00pwrp_aqob0001i1evag_snd.wav" },
{ "Remote C4", "CnC_POW_MineRemote_02", "m00pacp_aqob0004i1evag_snd.wav" },
{ "Chain Gun", "POW_Chaingun_Player", "m00pwcg_aqob0004i1evag_snd.wav" },
{ "Rocket Launcher(Weak)", "POW_RocketLauncher_Player", "m00pwrl_aqob0004i1evag_snd.wav" },
{ "Chemical Sprayer", "POW_ChemSprayer_Player", "m00pwcs_aqob0004i1evag_snd.wav" },
{ "Tiberium Auto Rifle", "POW_TiberiumAutoRifle_Player", "m00pwtr_aqob0004i1evag_snd.wav" },
{ "Sniper Rifle", "POW_SniperRifle_Player", "m00pwsr_aqob0004i1evag_snd.wav" },
{ "Laser Chaingun", "POW_LaserChaingun_Player", "m00pwlc_aqob0004i1evag_snd.wav" },
{ "Laser Rifle", "POW_LaserRifle_Player", "m00pwlr_aqob0004i1evag_snd.wav" },
{ "Rocket Launcher(Strong)", "CnC_POW_RocketLauncher_Player", "m00pwrl_aqob0004i1evag_snd.wav" },
{ "Tiberium Flechette Gun", "POW_TiberiumFlechetteGun_Player", "m00pwtf_aqob0004i1evag_snd.wav" },
{ "Personal Ion Cannon", "POW_PersonalIonCannon_Player", "m00pwpi_aqob0004i1evag_snd.wav" },
{ "Railgun", "POW_Railgun_Player", "m00pwrg_aqob0004i1evag_snd.wav" },
{ "Ramjet Rifle", "POW_RamjetRifle_Player", "m00pwrj_aqob0004i1evag_snd.wav" },
{ "Volt Auto Rifle", "POW_VoltAutoRifle_Player", "m00pwvr_aqob0004i1evag_snd.wav" },
{ "Volt Auto Rifle", "CnC_POW_VoltAutoRifle_Player_Nod", "m00pwvr_aqob0004i1evag_snd.wav" },
{ "Proxy Mines", "CnC_MineProximity_05", "m00pwrj_aqob0004i1evag_snd.wav" },
{ "Obelisk Gun", "POW_Double_Damage", "m00pwvr_aqob0004i1evag_snd.wav" },
{ "AGT Missile Gun", "POW_Mobius_Shield", "m00pwvr_aqob0004i1evag_snd.wav" }
};
char *RandomVehicle[12][3] = {
{ "GDI Humvee", "humvee", "CnC_GDI_Humm-vee" },
{ "Nod Buggy", "buggy", "CnC_Nod_Buggy" },
{ "GDI APC", "gdiapc", "CnC_GDI_APC" },
{ "Nod APC", "nodapc", "CnC_Nod_APC" },
{ "GDI MRLS", "mrls", "CnC_GDI_MRLS" },
{ "Nod Mobile Artillery", "arty", "CnC_Nod_Mobile_Artillery"},
{ "GDI Medium Tank", "med", "CnC_GDI_Medium_Tank" },
{ "Nod Light Tank", "lighttank", "CnC_Nod_Light_Tank" },
{ "Nod Flame Tank", "flamer", "CnC_Nod_Flame_Tank" },
{ "Nod Stealth Tank", "stank", "CnC_Nod_Stealth_Tank" },
{ "GDI Mammoth Tank", "mammy", "CnC_GDI_Mammoth_Tank" },
{ "Nod Recon Bike", "recon", "CnC_Nod_Recon_Bike"}
};
char *RandomGDIChar[20][2] = {
{ "Officer", "CnC_GDI_MiniGunner_1Off" },
{ "Rocket Soldier", "CnC_GDI_RocketSoldier_1Off" },
{ "Sydney", "CnC_Sydney" },
{ "Deadeye", "CnC_GDI_MiniGunner_2SF" },
{ "Gunner", "CnC_GDI_RocketSoldier_2SF" },
{ "Patch", "CnC_GDI_Grenadier_2SF" },
{ "Havoc", "CnC_GDI_MiniGunner_3Boss" },
{ "Prototype Sydney", "CnC_Sydney_PowerSuit" },
{ "Mobius", "CnC_Ignatio_Mobius" },
{ "Hotwire", "CnC_GDI_Engineer_2SF" },
{ "Mutated RaveShaw", "Mutant_3Boss_Raveshaw" },
{ "SBH", "CnC_Nod_FlameThrower_2SF" },
{ "Warden", "M08_Nod_Warden" },
{ "Logan", "CnC_GDI_MiniGunner_2SF_Logan" },
{ "Prisoner", "GDI_Prisoner_v2b" },
{ "Visceroid", "CnC_Visceroid" },
{ "Mutant", "CnC_GDI_Mutant_0_Mutant" },
{ "Templar", "CnC_GDI_Mutant_2SF_Templar" },
{ "Holo Kane", "Nod_Kane_HologramHead_small" },
{ "Petrova", "Mutant_3Boss_Petrova" }
};
char *RandomNodChar[20][2] = {
{ "Officer", "CnC_Nod_Minigunner_1Off" },
{ "Rocket Soldier", "CnC_Nod_RocketSoldier_1Off" },
{ "Chem Warrior", "CnC_Nod_FlameThrower_1Off" },
{ "Blackhand Sniper", "CnC_Nod_Minigunner_2SF" },
{ "Laser Chaingunner", "CnC_Nod_RocketSoldier_2SF" },
{ "Stealth Black Hand", "CnC_Nod_FlameThrower_2SF" },
{ "Sakura", "CnC_Nod_Minigunner_3Boss" },
{ "Raveshaw", "CnC_Nod_RocketSoldier_3Boss" },
{ "Mendoza", "CnC_Nod_FlameThrower_3Boss" },
{ "Technician", "CnC_Nod_Technician_0" },
{ "Mutated RaveShaw", "Mutant_3Boss_Raveshaw" },
{ "SBH", "CnC_Nod_FlameThrower_2SF" },
{ "Warden", "M08_Nod_Warden" },
{ "Logan", "CnC_GDI_MiniGunner_2SF_Logan" },
{ "Prisoner", "GDI_Prisoner_v2b" },
{ "Visceroid", "CnC_Visceroid" },
{ "Mutant", "CnC_GDI_Mutant_0_Mutant" },
{ "Templar", "CnC_GDI_Mutant_2SF_Templar" },
{ "Holo Kane", "Nod_Kane_HologramHead_small" },
{ "Petrova", "Mutant_3Boss_Petrova" }
};
void Crate_Defaults() {
Settings->CrateWeapon = 13;
Settings->CrateMoney = 4;
Settings->CratePoints = 8;
Settings->CrateVehicle = 4;
Settings->CrateDeath = 2;
Settings->CrateTiberium = 4;
Settings->CrateAmmo = 4;
Settings->CrateArmor = 2;
Settings->CrateHealth = 4;
Settings->CrateCharacter = 8;
Settings->CrateButterFingers = 3;
Settings->CrateSpy = 3;
Settings->CrateStealth = 3;
Settings->CrateRefill = 3;
Settings->CrateBeacon = 3;
Settings->CrateThief = 2;
Settings->Cratekamikaze = 9;
Settings->CrateEMP = 3;
Settings->CrateTeamMoney = 2;
Settings->CrateDisarmC4 = 4;
Settings->CrateBlownFuse = 5;
Settings->CratePromote = 4;
Settings->CrateEMPStorm = 3;
}
void Crate_Level_Loaded() {
int Total = Total = Settings->CrateDeath + Settings->CrateVehicle + Settings->CrateWeapon + Settings->CrateCharacter + Settings->CrateMoney + Settings->CratePoints + Settings->CrateTiberium + Settings->CrateAmmo + Settings->CrateHealth + Settings->CrateArmor + Settings->CrateRefill + Settings->CrateButterFingers + Settings->CrateSpy + Settings->CrateThief + Settings->CrateBeacon + Settings->CrateStealth + Settings->Cratekamikaze + Settings->CrateEMP + Settings->CrateTeamMoney + Settings->CrateDisarmC4 + Settings->CrateBlownFuse + Settings->CratePromote + Settings->CrateEMPStorm;
if (Total != 100) {
Crate_Defaults();
FDSMessage(StrFormat("WGC: Total crate percentages equal %d instead of 100. Using default percentages.",Total),"_ERROR");
}
Data->CrateLastPickup = -181;
Data->CrateExists = false;
Data->CrateID = 0;
}
//******************************************************************************
//*************************** CRATE RELATED SCRIPTS ****************************
//******************************************************************************
//Attached to all crates.
void MDB_SSGM_Crate::Created(GameObject *obj) {
if (!Settings->EnableCrates || Settings->GameMode == 3 || Settings->GameMode == 4) {
Commands->Destroy_Object(obj);
}
else if (Settings->EnableNewCrates) {
if (Data->CrateExists || (The_Game()->GameDuration_Seconds - Data->CrateLastPickup) < 180) {
Commands->Destroy_Object(obj);
}
else {
PickedUp = false;
Data->CrateExists = true;
Commands->Set_Model(obj,"vehcol2m");
Set_Is_Powerup_Persistant(obj,true);
Set_Powerup_Always_Allow_Grant(obj,true);
Set_Powerup_Grant_Sound(obj,0);
}
}
else {
Destroy_Script();
}
}
void MDB_SSGM_Crate::Custom(GameObject *obj, int message, int param, GameObject *sender) {
if (message == 1000000025 && !PickedUp) {
if (Settings->VehCrate || !Get_Vehicle(sender)) {
int Team = Get_Object_Type(sender);
if (Team > 1 || Team < 0) {
return;
}
PickedUp = true;
Data->CrateLastPickup = The_Game()->GameDuration_Seconds;
Data->CrateExists = false;
std::string message1; //Console_Input
std::string message2; //FDSMessage
std::string message3; //WriteGamelog
CrateStart:
int RandomIntCrate = Commands->Get_Random_Int(1,101);
int percent = 0;
if ((RandomIntCrate <= (percent+=Settings->CrateWeapon)) && (Settings->CrateWeapon > 0)) {
Reselect:
int Rnd = Commands->Get_Random_Int(1,101);
int Index = 0;
if (Rnd <= 10) Index = 0;
else if (Rnd<=20) Index = 1;
else if (Rnd<=30) Index = 2;
else if (Rnd<=40) Index = 3;
else if (Rnd<=50) Index = 4;
else if (Rnd<=60) Index = 5;
else if (Rnd<=65) Index = 6;
else if (Rnd<=70) Index = 7;
else if (Rnd<=75) Index = 8;
else if (Rnd<=80) Index = 9;
else if (Rnd<=82) Index = 10;
else if (Rnd<=84) Index = 11;
else if (Rnd<=86) Index = 12;
else if (Rnd<=88) Index = 13;
else if (Rnd<=90) Index = 14;
else if (Rnd<=92) Index = 15;
else if (Rnd<=94) Index = 16;
else if (Rnd<=96) Index = 17;
else if (Rnd<=98) Index = 18;
else Index = 19;
if (Settings->Is_Disabled(RandomWeapon[Index][1])) goto Reselect;
Commands->Give_Powerup(sender,RandomWeapon[Index][1],true);
if (RandomWeapon[Index][2][0] != '\0') {
Create_2D_WAV_Sound_Player(sender,RandomWeapon[Index][2]);
}
StrFormat2(message1,"ppage %d [WGC] You just got a %s from the Random Weapon Crate.",Get_Player_ID(sender),RandomWeapon[Index][0]);
StrFormat2(message2,"[WGC] %ls picked up a Random Weapon Crate.",Get_Wide_Player_Name(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;WEAPON;%s;%d;%s;%f;%f;%f;%f;%f;%f;%d",RandomWeapon[Index][0],Commands->Get_ID(sender),Commands->Get_Preset_Name(sender),pos.Y,pos.X,pos.Z,Commands->Get_Facing(sender),Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateMoney)) && (Settings->CrateMoney > 0)) {
int Amount = Commands->Get_Random_Int(1,1000);
int RndGood = Commands->Get_Random_Int(1,2);
if (RndGood == 1) {
Commands->Give_Money(sender,(float)Amount,false);
Create_2D_WAV_Sound_Player(sender,"m00pc$$_aqob0002i1evag_snd.wav");
}
else {
Commands->Give_Money(sender,(float)(Amount*-1),false);
if (Commands->Get_Money(sender) < 0) Commands->Give_Money(sender,(Commands->Get_Money(sender) * -1),false);
}
if (RndGood == 1) {
StrFormat2(message1,"ppage %d [WGC] You just got the Money Crate, you have gained %d credits.",Get_Player_ID(sender),(int)Amount);
StrFormat2(message2,"[WGC] %ls picked up a Money Crate.",Get_Wide_Player_Name(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(obj);
StrFormat2(message3,"CRATE;MONEY;%d;%d;%s;%f;%f;%f;%f;%f;%f;%d", int(Amount), Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
StrFormat2(message1,"ppage %d [WGC] You just got the Demoney Crate, you have lost %d credits, i know it sucks...",Get_Player_ID(sender),(int)Amount);
StrFormat2(message2,"[WGC] %ls picked up a WGC Demoney Crate.",Get_Wide_Player_Name(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(obj);
StrFormat2(message3,"CRATE;MONEY;%d;%d;%s;%f;%f;%f;%f;%f;%f;%d", int(Amount) * -1, Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CratePoints)) && (Settings->CratePoints > 0)) {
int Amount = Commands->Get_Random_Int(1,500);
int RndGood = Commands->Get_Random_Int(1,2);
if (RndGood == 1) {
Commands->Give_Points(sender,(float)Amount,false);
}
else {
Commands->Give_Points(sender,(float)(Amount*-1),false);
}
if (RndGood == 1) {
StrFormat2(message2,"[WGC] %ls picked up a Points Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Points Crate, you have gained %d points. you are One step closer to MVP",Get_Player_ID(sender),(int)Amount);
Console_Input(StrFormat("msg [WGC]: Enjoy those %d points from the Crate God, %ls.",(int)Amount,Get_Wide_Team_Name(Team)).c_str());
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;POINTS;%d;%d;%s;%f;%f;%f;%f;%f;%f;%d",int(Amount), Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
StrFormat2(message2,"[WGC] %ls picked up a Depoints Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Depoints Crate, you lost %d points, i know it sucks...",Get_Player_ID(sender),(int)Amount);
Console_Input(StrFormat("msg [WGC]: Hope you won't miss those %d points, %ls.",(int)Amount,Get_Wide_Team_Name(Team)).c_str());
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;POINTS;%d;%d;%s;%f;%f;%f;%f;%f;%f;%d",int(Amount) * -1, Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateVehicle)) && (Settings->CrateVehicle > 0)) {
if (Get_Vehicle(sender) || Settings->GameMode != 1 || Settings->CrateVehSpawnPos[0].X == 0.0f || Settings->CrateVehSpawnPos[0].Y == 0.0f || Settings->CrateVehSpawnPos[0].Z == 0.0f || Settings->CrateVehSpawnPos[1].X == 0.0f || Settings->CrateVehSpawnPos[1].Y == 0.0f || Settings->CrateVehSpawnPos[1].Z == 0.0f) {
goto CrateStart;
}
Vector3 Pos = Settings->CrateVehSpawnPos[Get_Object_Type(sender)];
Damage_All_Vehicles_Area(999999.0f,"Laser_NoBuilding",Pos,2.0f,obj,0);
Commands->Set_Position(sender,Pos);
GameObject *Temp = Commands->Create_Object("Invisible_Object",Pos);
Reselect2:
int Rnd = Commands->Get_Random_Int(1,201);
int Index = 0;
if (Rnd <= 25) Index = 0;
else if (Rnd <= 50) Index = 1;
else if (Rnd <= 70) Index = 2;
else if (Rnd <= 90) Index = 3;
else if (Rnd <= 110) Index = 4;
else if (Rnd <= 130) Index = 5;
else if (Rnd <= 145) Index = 6;
else if (Rnd <= 160) Index = 7;
else if (Rnd <= 170) Index = 8;
else if (Rnd <= 180) Index = 9;
else if (Rnd <= 190) Index = 10;
else Index = 11;
if (Settings->Is_Disabled(RandomVehicle[Index][2])) goto Reselect2;
StrFormat2(message2,"[WGC] %ls picked up a Random Vehicle Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You got a %s from the Random Vehicle Crate.",Get_Player_ID(sender), RandomVehicle[Index][0]);
Commands->Attach_Script(Temp,"Test_Cinematic",StrFormat("%sRVC_%s.txt",Commands->Get_Player_Type(sender) == 0?"Nod":"GDI",RandomVehicle[Index][1]).c_str());
Console_Input(StrFormat("msg [WGC]: Looks like %ls just got a random vehicle! Go them!",Get_Wide_Team_Name(Team)).c_str());
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;VEHICLE;%s;%d;%s;%f;%f;%f;%f;%f;%f;%d", RandomVehicle[Index][0], Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateDeath)) && (Settings->CrateDeath > 0)) {
StrFormat2(message2,"[WGC] %ls picked up a Death Crate.",Get_Wide_Player_Name(sender));
Commands->Apply_Damage(Get_Vehicle(sender),99999,"Shrapnel",0);
Commands->Apply_Damage(sender,99999,"Shrapnel",0);
Commands->Create_Explosion("Explosion_Mine_Proximity_01",Commands->Get_Position(obj),0);
StrFormat2(message1,"ppage %d [WGC] You just got a WittebolX Crate, you have been killed. Sorry :(",Get_Player_ID(sender));
Console_Input(StrFormat("msg [WGC]: Some poor %ls guy got pwned by the WittebolX Crate!!",Get_Wide_Team_Name(Team)).c_str());
if (Settings->Gamelog) {
Vector3 pos;
pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;DEATH;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateTiberium)) && (Settings->CrateTiberium > 0)) {
StrFormat2(message2,"[WGC] %ls picked up a Tiberium Death Crate.",Get_Wide_Player_Name(sender));
Commands->Apply_Damage(Get_Vehicle(sender),99999,"Shrapnel",0);
Commands->Apply_Damage(sender,99999,"TiberiumRaw",false);
Commands->Create_Object("CnC_Visceroid",Commands->Get_Position(sender));
StrFormat2(message1,"ppage %d [Crate] You have been killed by the tiberium death crate and your remains mutated into a visceroid.",Get_Player_ID(sender));
Commands->Create_2D_WAV_Sound("m00evag_dsgn0027i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;TIBERIUMDEATH;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateAmmo)) && (Settings->CrateAmmo > 0)) {
Commands->Give_Powerup(sender,"CnC_POW_Ammo_ClipMax",false);
Commands->Give_Powerup(sender,"CnC_POW_Ammo_ClipMax",false);
Commands->Give_Powerup(sender,"CnC_POW_Ammo_ClipMax",false);
Commands->Give_Powerup(sender,"CnC_POW_Ammo_ClipMax",false);
StrFormat2(message2,"[WGC] %ls picked up a WittebolX Ammo Refill.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Ammo Refill Crate, your ammo has been refilled.",Get_Player_ID(sender));
Create_2D_WAV_Sound_Player(sender,"m00puar_aqob0002i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;FULLAMMO;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateArmor)) && (Settings->CrateArmor > 0)) {
int RndGood = Commands->Get_Random_Int(1,3);
if (Commands->Get_Shield_Strength(sender) < 2) RndGood = 1;
if (RndGood == 1) {
Commands->Give_Powerup(sender,"POW_Medal_Armor",true);
StrFormat2(message2,"[WGC] %ls picked up a Armor Upgrade.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Armor Upgrade, your max armor has been increased!",Get_Player_ID(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;ARMORINCREASE;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
Commands->Set_Shield_Strength(sender,1);
StrFormat2(message2,"[WGC] %ls picked up a Dearmor Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Dearmor Crate, your armor has been set to 1.",Get_Player_ID(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;ARMORLOST;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateHealth)) && (Settings->CrateHealth > 0)) {
int RndGood = Commands->Get_Random_Int(1,3);
if (Commands->Get_Health(sender) == 1) RndGood = 1;
if (RndGood == 1) {
Commands->Give_Powerup(sender,"POW_Medal_Health",true);
StrFormat2(message2,"[WGC] %ls picked up a Health Upgrade.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Health Upgrade Crate, your max health has been increased!",Get_Player_ID(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;HEALTHUPGRADE;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
Commands->Set_Health(sender,1);
StrFormat2(message2,"[WGC] %ls picked up a Dehealth Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Dehealth Crate, your health has been set to 1.",Get_Player_ID(sender));
Create_2D_WAV_Sound_Player(sender,"m00evag_dsgn0026i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;HEALTHREDUCE;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateCharacter)) && (Settings->CrateCharacter > 0)) {
if (Get_Vehicle(sender) || Settings->GameMode == 3 || Settings->GameMode == 4) {
goto CrateStart;
}
Reselect3:
int Rnd = Commands->Get_Random_Int(1,101);
int Index = 0;
if (Rnd <= 20) Index = 0;
else if (Rnd <= 40) Index = 1;
else if (Rnd <= 50) Index = 2;
else if (Rnd <= 60) Index = 3;
else if (Rnd <= 70) Index = 4;
else if (Rnd <= 80) Index = 5;
else if (Rnd <= 85) Index = 6;
else if (Rnd <= 90) Index = 7;
else if (Rnd <= 95) Index = 8;
else Index = 9;
if (Team == 1 && Settings->Is_Disabled(RandomGDIChar[Index][1])) {
goto Reselect3;
}
else if (Team == 0 && Settings->Is_Disabled(RandomNodChar[Index][1])) {
goto Reselect3;
}
StrFormat2(message2,"[WGC] %ls picked up a Random WittebolX Character Crate.",Get_Wide_Player_Name(sender));
if (Commands->Get_Player_Type(sender) == 1) {
Change_Character(sender,RandomGDIChar[Index][1]);
StrFormat2(message1,"ppage %d [WGC] You have been transformed into a %s by the Random WittebolX Character Crate.",Get_Player_ID(sender),RandomGDIChar[Index][0]);
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;CHARACTER;%s;%d;%s;%f;%f;%f;%f;%f;%f;%d", RandomGDIChar[Index][0], Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
Change_Character(sender,RandomNodChar[Index][1]);
StrFormat2(message1,"ppage %d [WGC] You have been transformed into a %s by the Random WittebolX Character Crate.",Get_Player_ID(sender),RandomNodChar[Index][0]);
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;CHARACTER;%s;%d;%s;%f;%f;%f;%f;%f;%f;%d", RandomNodChar[Index][0], Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateButterFingers)) && (Settings->CrateButterFingers > 0)) {
Commands->Clear_Weapons(sender);
int Rnd = Commands->Get_Random_Int(1,3);
if (Rnd == 1) {
Commands->Give_Powerup(sender,"POW_Pistol_Player",false);
Commands->Select_Weapon(sender,"Weapon_Pistol_Player");
}
else {
Commands->Give_Powerup(sender,"CnC_POW_MineTimed_Player_01",false);
Commands->Select_Weapon(sender,"CnC_Weapon_MineTimed_Player");
}
StrFormat2(message2,"[WGC] %ls picked up the Butter Fingers Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You picked up the Butter Fingers Crate, you have dropped most of your weapons.",Get_Player_ID(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;BUTTERFINGER;;%d;%s;%f;%f;%f;%f;%f;%f;%d",Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateRefill)) && (Settings->CrateRefill > 0)) {
Grant_Refill(sender);
StrFormat2(message2,"[WGC] %ls picked up the Refill All Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got the Refill Crate, your health, armor, and ammo have all been refilled.",Get_Player_ID(sender));
Create_2D_WAV_Sound_Player(sender,"m00puar_aqob0002i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;REFILL;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateBeacon)) && (Settings->CrateBeacon > 0)) {
if (Settings->DisableBeacons || Settings->GameMode == 2 || Settings->GameMode == 3 || Settings->GameMode == 4) {
goto CrateStart;
}
int RndGood = Commands->Get_Random_Int(1,3);
if (RndGood == 1) {
StrFormat2(message2,"[WGC] %ls picked up a Beacon Crate.",Get_Wide_Player_Name(sender));
if (Commands->Get_Player_Type(sender) == 1) {
TeamPurchaseSettingsDefClass *PT = TeamPurchaseSettingsDefClass::Get_Definition(0);
Commands->Give_Powerup(sender,Get_Definition_Name(PT->beaconpresetid),true);
StrFormat2(message1,"ppage %d [WGC] You just got the Beacon Crate, you have been given an Ion Cannon Beacon.",Get_Player_ID(sender));
Create_2D_Sound_Player(sender,"m00evag_dsgn0070i1evag_snd.wav");
}
else if (Commands->Get_Player_Type(sender) == 0) {
TeamPurchaseSettingsDefClass *PT = TeamPurchaseSettingsDefClass::Get_Definition(1);
Commands->Give_Powerup(sender,Get_Definition_Name(PT->beaconpresetid),true);
StrFormat2(message1,"ppage %d [WGC] You just got the Beacon Crate, you have been given a Nuclear Strike Beacon.",Get_Player_ID(sender));
Create_2D_Sound_Player(sender,"m00evan_dsgn0074i1evan_snd.wav");
}
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;BEACON;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
Commands->Create_Object("Beacon_Nuke_Strike_Anim_Post",Commands->Get_Position(obj));
Commands->Create_Explosion("Explosion_NukeBeacon",Commands->Get_Position(obj),0);
Damage_All_Objects_Area(2500.0f,"None",Commands->Get_Position(obj),15.0f,obj,0);
StrFormat2(message2,"[WGC] %ls picked up a WittebolX Bomb Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just got a WittebolX Bomb Crate, you have been killed. Sorry :(",Get_Player_ID(sender));
Console_Input(StrFormat("msg [WGC]: Looks like a %ls player just got blown to bits by a WittebolX Bomb.",Get_Wide_Team_Name(Team)).c_str());
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;BEACONDEATH;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateSpy)) && (Settings->CrateSpy > 0)) {
if (Settings->GameMode != 1) goto CrateStart;
Change_Character(sender,"CnC_Nod_FlameThrower_2SF");
Commands->Set_Is_Visible(sender,false);
StrFormat2(message2,"[WGC] A %ls player picked up a Spy Crate.",Get_Wide_Team_Name(Team));
StrFormat2(message1,"ppage %d [WGC] You got the Spy Crate, base defenses will ignore you until you die, buy a new character or destroy a building.",Get_Player_ID(sender));
Console_Input(StrFormat("msg Crate: Oh no! A %ls player just got a Spy Crate, better watch your base %ls!",Get_Wide_Team_Name(Team),Get_Wide_Team_Name(PTTEAM(Team))).c_str());
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;SPY;;0;0;%f;%f;%f;%f;%f;%f;%d",pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateStealth)) && (Settings->CrateStealth > 0)) {
Commands->Enable_Stealth(sender,true);
StrFormat2(message2,"[WGC] %ls picked up a Stealth Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You got the stealth crate! You have been given a stealth suit.",Get_Player_ID(sender));
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;STEALTH;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateThief)) && (Settings->CrateThief > 0)) {
Commands->Give_Money(sender,(Commands->Get_Money(sender) * -1),false);
StrFormat2(message2,"[WGC] %ls picked up a Thief Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You got the Thief Crate, you have lost all of your credits. Hahaha.",Get_Player_ID(sender));
Create_2D_Sound_Player(sender,"m00evag_dsgn0028i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;THIEF;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->Cratekamikaze)) && (Settings->Cratekamikaze > 0)) {
Change_Character(sender,"CnC_Nod_Flamethrower_0_Secret");
Commands->Attach_Script(sender, "zbl_kamikaze_Suit_Crate", "");
Commands->Set_Health(sender,150);
StrFormat2(message2,"[WGC] %ls picked up the kamikaze suit crate",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You just picked up the kamikaze suit crate. You will explode when you die killing anything around you whether it be friendly or foe.",Get_Player_ID(sender));
Console_Input(StrFormat("msg [WGC]: Some crazy ass %ls guy just got an Kamikaze Suit, watch yourself %ls!",Get_Wide_Team_Name(Team),Get_Wide_Team_Name(PTTEAM(Team))).c_str()); //Commands->Create_2D_WAV_Sound("m00evag_dsgn0027i1evag_snd.wav");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;kamikazeSUIT;;0;0;%f;%f;%f;%f;%f;%f;%d",pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateEMP)) && (Settings->CrateEMP > 0)) {
StrFormat2(message2,"[WGC] %ls picked up the EMP Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"msg [WGC] %ls got the EMP Crate, all vehicles around %ls are disabled for 30 seconds.",Get_Wide_Player_Name(sender),Get_Wide_Player_Name(sender));
Vector3 pos = Commands->Get_Position(sender);
Commands->Create_Object("Beacon_Ion_Cannon_Anim_Post",pos);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x) {
GameObject *o = (GameObject *)x->NodeData;
if (o && Is_Vehicle(o)) {
if (Commands->Get_Distance(Commands->Get_Position(o),pos) < 100) {
Attach_Script_Once(o,"EMP_Effect","");
}
}
x = x->NodeNext;
}
if (Settings->Gamelog) {
StrFormat2(message3,"CRATE;EMP;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateTeamMoney)) && (Settings->CrateTeamMoney > 0)) {
int Amount = Commands->Get_Random_Int(1,500);
int Team = Get_Team(Get_Player_ID(sender));
StrFormat2(message2,"[WGC] %ls picked up the Team Money Crate (%d).",Get_Wide_Player_Name(sender),Amount);
StrFormat2(message1,"msg [WGC] %ls got the Team Money crate, everyone on %s gets %d credits!",Get_Wide_Player_Name(sender),Get_Team_Name(Team),Amount);
for (GenericSLNode* PlayerIter = PlayerList->HeadNode; (PlayerIter != NULL); PlayerIter = PlayerIter->NodeNext) {
cPlayer *p = (cPlayer *)PlayerIter->NodeData;
if (!p->IsActive) {
continue;
}
if (Commands->Get_Player_Type((GameObject *)p->Owner.Reference->obj) == Team) {
p->Increment_Money((float)Amount);
}
}
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;TeamMoney;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateDisarmC4)) && (Settings->CrateDisarmC4 > 0)) {
int Type = Commands->Get_Random_Int(1,3);
int Team = Get_Team(Get_Player_ID(sender));
StrFormat2(message2,"[WGC] %ls picked up the Disarm Crate.",Get_Wide_Player_Name(sender));
if (Type == 1) {
for (GenericSLNode* PlayerIter = PlayerList->HeadNode; (PlayerIter != NULL); PlayerIter = PlayerIter->NodeNext) {
cPlayer *p = (cPlayer *)PlayerIter->NodeData;
if (!p->IsActive) {
continue;
}
if (Commands->Get_Player_Type((GameObject *)p->Owner.Reference->obj) == Team) {
Disarm_All_C4(p->PlayerId);
}
}
StrFormat2(message1,"msg [WGC] %ls got the Disarm crate, all mines and C4 for %s have been disarmed!",Get_Wide_Player_Name(sender),Get_Team_Name(Team));
}
else {
StrFormat2(message1,"ppage %d [WGC] You got the Disarm Crate, all of your mines and C4 have been disarmed!",Get_Player_ID(sender));
Disarm_All_C4(Get_Player_ID(sender));
}
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;Disarm;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateBlownFuse)) && (Settings->CrateBlownFuse > 0)) {
StrFormat2(message2,"[WGC] %ls picked up the Blown Fuse Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"msg [WGC] %ls got the Blown Fuse Crate, base defences lose power for 2 minutes!",Get_Wide_Player_Name(sender));
Attach_Script_Once(Find_Base_Defense(0),"Power_Down","");
Attach_Script_Once(Find_Base_Defense(1),"Power_Down","");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;BlownFuse;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CratePromote)) && (Settings->CratePromote > 0)) {
StrFormat2(message2,"[WGC] %ls picked up the Promotion Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"ppage %d [WGC] You got the Promotion Crate!",Get_Player_ID(sender));
Commands->Send_Custom_Event(sender,sender,20354,0,0);
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;Promotion;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else if ((RandomIntCrate <= (percent+=Settings->CrateEMPStorm)) && (Settings->CrateEMPStorm > 0)) {
StrFormat2(message2,"[WGC] %ls picked up the EMP Storm Crate.",Get_Wide_Player_Name(sender));
StrFormat2(message1,"msg [WGC] %ls got the EMP Storm Crate, All Purchased Vehicles are now Disabled for 2 minutes!",Get_Wide_Player_Name(sender));
Commands->Attach_Script(sender,"reb_Electromagnetic_pulse","");
if (Settings->Gamelog) {
Vector3 pos = Commands->Get_Position(sender);
StrFormat2(message3,"CRATE;EMPStorm;;%d;%s;%f;%f;%f;%f;%f;%f;%d", Commands->Get_ID(sender), Commands->Get_Preset_Name(sender), pos.Y,pos.X,pos.Z, Commands->Get_Facing(sender), Commands->Get_Max_Health(sender),Commands->Get_Max_Shield_Strength(sender),Get_Object_Type(sender));
}
}
else {
goto CrateStart;
}
Console_Input(message1.c_str());
FDSMessage(message2,"_CRATE");
if (Settings->Gamelog) {
WriteGamelog(message3);
}
Commands->Destroy_Object(obj);
}
}
}
void KAK_Prevent_Destruction_Until_Entered::Created(GameObject *obj) {
Commands->Set_Player_Type(obj,-2);
Commands->Start_Timer(obj,this,30,1);
}
void KAK_Prevent_Destruction_Until_Entered::Damaged(GameObject *obj, GameObject *damager, float damage) {
Commands->Set_Health(obj,Commands->Get_Max_Health(obj));
Commands->Set_Shield_Strength(obj,Commands->Get_Max_Shield_Strength(obj));
}
void KAK_Prevent_Destruction_Until_Entered::Custom(GameObject *obj, int message, int param, GameObject *sender) {
if (message == CUSTOM_EVENT_VEHICLE_ENTER) {
Destroy_Script();
}
}
void KAK_Prevent_Destruction_Until_Entered::Timer_Expired(GameObject *obj, int number) {
if (number == 1) {
Destroy_Script();
}
}
ScriptRegistrant<MDB_SSGM_Crate> MDB_SSGM_Crate_Registrant("MDB_SSGM_Crate","");
ScriptRegistrant<KAK_Prevent_Destruction_Until_Entered> KAK_Prevent_Destruction_Until_Entered_Registrant("KAK_Prevent_Destruction_Until_Entered","");
have fun
http://www.wittebolx.com
|
|
|
Goto Forum:
Current Time: Sun Nov 03 02:18:09 MST 2024
Total time taken to generate the page: 0.00803 seconds
|