1 /* KJL 11:10:15 28/01/98 -
2 
3 	This file contains game-specific console variables
4 
5  */
6 #include "3dc.h"
7 #include "inline.h"
8 #include "module.h"
9 #include "stratdef.h"
10 #include "gamedef.h"
11 #include "davehook.h"
12 #include "r2base.h"
13 #include "gadget.h"
14 #include "daemon.h"
15 #include "rentrntq.h"
16 
17 #include "bh_types.h"
18 #include "consvar.hpp"
19 #include "conscmnd.hpp"
20 #include "equipmnt.h"
21 #include "weapons.h"
22 #include "bh_queen.h"
23 #include "bh_gener.h"
24 #include "dxlog.h"
25 #include "avp_menus.h"
26 #include "pheromon.h"
27 #include "showcmds.h"
28 #include "pfarlocs.h"
29 
30 #define UseLocalAssert Yes
31 #include "ourasert.h"
32 
33 #include "game_statistics.h"
34 #include "avp_envinfo.h"
35 #include "avp_userprofile.h"
36 
37 extern "C"
38 {
39 
40 extern int Simplify_HModel_Rendering;
41 
42 extern int TrickleCharge;
43 extern int CloakDrain;
44 extern int CloakThreshold;
45 extern int CloakPowerOnDrain;
46 extern int GlobalGoreRate;
47 extern int PredPistol_ShotCost;
48 extern int PredPistolBoltSpeed;
49 extern int PredPistolBoltGravity;
50 extern int Caster_Jumpstart;
51 extern int Caster_Chargetime;
52 extern int Caster_TrickleRate;
53 extern int Caster_TrickleLevel;
54 extern int Caster_ChargeRatio;
55 extern int Caster_NPCKill;
56 extern int Caster_PCKill;
57 extern int Caster_BlastRadius;
58 extern int Caster_MinCharge;
59 extern int RecallDisc_Charge;
60 extern void Recall_Disc(void);
61 
62 extern int Marine_Skill;
63 extern int Marine_Terminal_Velocity;
64 
65 extern int ShowPredoStats;
66 extern int ShowSquadState;
67 extern int ShowNearSquad;
68 extern int ShowHiveState;
69 extern int ShowXenoStats;
70 extern int ShowSlack;
71 extern void ActivateHive(void);
72 extern void DeActivateHive(void);
73 extern void ForceAGenerator_Shell(void);
74 extern void StrikeTime(int time);
75 extern void AlienStrikeTime(int time);
76 extern void CastSentrygun(void);
77 extern void CastDummy(void);
78 extern void StartPlayerTaunt(void);
79 extern void Console_ZoneAlert(int input);
80 extern void ZapSlack(void);
81 /* Queen commands */
82 extern int Queen_Charge_Rate;
83 extern int Queen_Step_Time;
84 extern int Queen_Step_Speed;
85 extern int Queen_Step_Mode;
86 extern int Queen_Turn_Rate;
87 extern void QComm_Stop(void);
88 extern void QComm_StepForward(void);
89 extern void QComm_StepBack(void);
90 extern void QComm_TurnLeft(void);
91 extern void QComm_TurnRight(void);
92 extern void QComm_Heel(void);
93 extern void QComm_Taunt(void);
94 extern void QComm_Hiss(void);
95 extern void QComm_LeftSwipe(void);
96 extern void QComm_RightSwipe(void);
97 extern void QComm_Route(void);
98 extern void QComm_Charge(void);
99 /* Tail calibration */
100 extern int tail_xcal;
101 extern int tail_ycal;
102 /* Molotov Callibration! */
103 extern int mx,my,mz;
104 
105 extern int RATweak;
106 
107 extern TEMPLATE_WEAPON_DATA	TemplateWeapon[MAX_NO_OF_WEAPON_TEMPLATES];
108 extern void NewOnScreenMessage(unsigned char *messagePtr);
109 
110 extern int GlobalAmbience;
111 int Old_GlobalAmbience=ONE_FIXED;
112 
113 int ShowAdj=0;
114 
115 char ccv_tempstring[128];
116 
Toggle_Ambience(void)117 void Toggle_Ambience(void) {
118 
119 	int buffer;
120 
121 	buffer=GlobalAmbience;
122 	GlobalAmbience=Old_GlobalAmbience;
123 	Old_GlobalAmbience=buffer;
124 
125 }
126 
ActivateAllGenerators(void)127 void ActivateAllGenerators(void) {
128 	int a;
129 	STRATEGYBLOCK *candidate;
130 
131 	for (a=0; a<NumActiveStBlocks; a++) {
132 		candidate=ActiveStBlockList[a];
133 		if (candidate->I_SBtype==I_BehaviourGenerator) {
134 			GENERATOR_BLOCK *genBlock;
135 
136 			genBlock=(GENERATOR_BLOCK *)candidate->SBdataptr;
137 			genBlock->Active=1;
138 		}
139 	}
140 }
141 
KillAllInanimates(void)142 void KillAllInanimates(void) {
143 	int a;
144 	STRATEGYBLOCK *candidate;
145 
146 	for (a=0; a<NumActiveStBlocks; a++) {
147 		candidate=ActiveStBlockList[a];
148 		if (candidate->I_SBtype==I_BehaviourInanimateObject) {
149 			candidate->SBflags.please_destroy_me=1;
150 		}
151 	}
152 }
153 
KillAllMarines(void)154 void KillAllMarines(void) {
155 	int a;
156 	STRATEGYBLOCK *candidate;
157 
158 	for (a=0; a<NumActiveStBlocks; a++) {
159 		candidate=ActiveStBlockList[a];
160 		if ((candidate->I_SBtype==I_BehaviourMarine)
161 		 ||(candidate->I_SBtype==I_BehaviourSeal)) {
162 			CauseDamageToObject(candidate,&console_nuke,ONE_FIXED,NULL);
163 		}
164 	}
165 }
166 
KillAllAliens(void)167 void KillAllAliens(void) {
168 	int a;
169 	STRATEGYBLOCK *candidate;
170 
171 	for (a=0; a<NumActiveStBlocks; a++) {
172 		candidate=ActiveStBlockList[a];
173 		if (candidate->I_SBtype==I_BehaviourAlien) {
174 			CauseDamageToObject(candidate,&console_nuke,ONE_FIXED,NULL);
175 		}
176 	}
177 }
178 
KillAllPreds(void)179 void KillAllPreds(void) {
180 	int a;
181 	STRATEGYBLOCK *candidate;
182 
183 	for (a=0; a<NumActiveStBlocks; a++) {
184 		candidate=ActiveStBlockList[a];
185 		if (candidate->I_SBtype==I_BehaviourPredator) {
186 			CauseDamageToObject(candidate,&console_nuke,ONE_FIXED,NULL);
187 		}
188 	}
189 }
190 
KillAllDummies(void)191 void KillAllDummies(void) {
192 	int a;
193 	STRATEGYBLOCK *candidate;
194 
195 	for (a=0; a<NumActiveStBlocks; a++) {
196 		candidate=ActiveStBlockList[a];
197 		if (candidate->I_SBtype==I_BehaviourDummy) {
198 			DestroyAnyStrategyBlock(candidate);
199 		}
200 	}
201 }
202 
ToggleShapeRender(void)203 void ToggleShapeRender(void) {
204 	Simplify_HModel_Rendering=(~Simplify_HModel_Rendering);
205 }
206 
Show_PredOStats(void)207 void Show_PredOStats(void) {
208 	ShowPredoStats=(~ShowPredoStats);
209 }
210 
Show_XenoStats(void)211 void Show_XenoStats(void) {
212 	ShowXenoStats=(~ShowXenoStats);
213 }
214 
Show_SquadState(void)215 void Show_SquadState(void) {
216 	ShowSquadState=(~ShowSquadState);
217 }
218 
Show_NearSquad(void)219 void Show_NearSquad(void) {
220 	ShowNearSquad=(~ShowNearSquad);
221 }
222 
Show_HiveState(void)223 void Show_HiveState(void) {
224 	ShowHiveState=(~ShowHiveState);
225 }
226 
Show_Slack(void)227 void Show_Slack(void) {
228 	ShowSlack=(~ShowSlack);
229 }
230 
Show_Adj(void)231 void Show_Adj(void) {
232 	ShowAdj=(~ShowAdj);
233 }
234 
Toggle_Observer(void)235 void Toggle_Observer(void) {
236 	Observer=(~Observer);
237 }
238 
ShowRecoilMaxXTilt(void)239 void ShowRecoilMaxXTilt(void) {
240 
241 	PLAYER_WEAPON_DATA *weaponPtr;
242 	TEMPLATE_WEAPON_DATA *twPtr;
243 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
244     GLOBALASSERT(playerStatusPtr);
245     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
246     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
247 
248 	sprintf(ccv_tempstring,"RECOILMAXXTILT = %d\n",twPtr->RecoilMaxXTilt);
249 
250 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
251 }
252 
ShowRecoilMaxYTilt(void)253 void ShowRecoilMaxYTilt(void) {
254 
255 	PLAYER_WEAPON_DATA *weaponPtr;
256 	TEMPLATE_WEAPON_DATA *twPtr;
257 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
258     GLOBALASSERT(playerStatusPtr);
259     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
260     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
261 
262 	sprintf(ccv_tempstring,"RECOILMAXYTILT = %d\n",twPtr->RecoilMaxYTilt);
263 
264 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
265 }
266 
ShowRecoilMaxZ(void)267 void ShowRecoilMaxZ(void) {
268 
269 	PLAYER_WEAPON_DATA *weaponPtr;
270 	TEMPLATE_WEAPON_DATA *twPtr;
271 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
272     GLOBALASSERT(playerStatusPtr);
273     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
274     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
275 
276 	sprintf(ccv_tempstring,"RECOILMAXZ = %d\n",twPtr->RecoilMaxZ);
277 
278 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
279 }
280 
ShowRecoilMaxRandomZ(void)281 void ShowRecoilMaxRandomZ(void) {
282 
283 	PLAYER_WEAPON_DATA *weaponPtr;
284 	TEMPLATE_WEAPON_DATA *twPtr;
285 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
286     GLOBALASSERT(playerStatusPtr);
287     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
288     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
289 
290 	sprintf(ccv_tempstring,"RECOILMAXRANDOMZ = %d\n",twPtr->RecoilMaxRandomZ);
291 
292 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
293 }
294 
SetRecoilMaxXTilt(int value)295 void SetRecoilMaxXTilt(int value) {
296 
297 	PLAYER_WEAPON_DATA *weaponPtr;
298 	TEMPLATE_WEAPON_DATA *twPtr;
299 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
300     GLOBALASSERT(playerStatusPtr);
301     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
302     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
303 
304 	twPtr->RecoilMaxXTilt=value;
305 
306 	sprintf(ccv_tempstring,"RECOILMAXXTILT = %d\n",twPtr->RecoilMaxXTilt);
307 
308 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
309 }
310 
SetRecoilMaxYTilt(int value)311 void SetRecoilMaxYTilt(int value) {
312 
313 	PLAYER_WEAPON_DATA *weaponPtr;
314 	TEMPLATE_WEAPON_DATA *twPtr;
315 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
316     GLOBALASSERT(playerStatusPtr);
317     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
318     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
319 
320 	twPtr->RecoilMaxYTilt=value;
321 
322 	sprintf(ccv_tempstring,"RECOILMAXYTILT = %d\n",twPtr->RecoilMaxYTilt);
323 
324 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
325 }
326 
SetRecoilMaxZ(int value)327 void SetRecoilMaxZ(int value) {
328 
329 	PLAYER_WEAPON_DATA *weaponPtr;
330 	TEMPLATE_WEAPON_DATA *twPtr;
331 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
332     GLOBALASSERT(playerStatusPtr);
333     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
334     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
335 
336 	twPtr->RecoilMaxZ=value;
337 
338 	sprintf(ccv_tempstring,"RECOILMAXZ = %d\n",twPtr->RecoilMaxZ);
339 
340 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
341 }
342 
SetRecoilMaxRandomZ(int value)343 void SetRecoilMaxRandomZ(int value) {
344 
345 	PLAYER_WEAPON_DATA *weaponPtr;
346 	TEMPLATE_WEAPON_DATA *twPtr;
347 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
348     GLOBALASSERT(playerStatusPtr);
349     weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]);
350     twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber];
351 
352 	twPtr->RecoilMaxRandomZ=value;
353 
354 	sprintf(ccv_tempstring,"RECOILMAXRANDOMZ = %d\n",twPtr->RecoilMaxRandomZ);
355 
356 	NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
357 }
358 
SetPredPistolRecoilTime(int value)359 void SetPredPistolRecoilTime(int value) {
360 
361 	TEMPLATE_WEAPON_DATA *twPtr;
362 	int timeOutRate;
363 
364     twPtr = &TemplateWeapon[WEAPON_PRED_PISTOL];
365 
366 	if (value==0) {
367 		int time;
368 
369 		GLOBALASSERT(twPtr->TimeOutRateForState[WEAPONSTATE_RECOIL_PRIMARY]);
370 		time=DIV_FIXED(ONE_FIXED,twPtr->TimeOutRateForState[WEAPONSTATE_RECOIL_PRIMARY]);
371 		sprintf(ccv_tempstring,"PREDPISTOL_RECOILTIME = %d\n",time);
372 
373 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
374 		return;
375 	}
376 
377 	timeOutRate=DIV_FIXED(ONE_FIXED,value);
378 
379    	twPtr->TimeOutRateForState[WEAPONSTATE_RECOIL_PRIMARY]=timeOutRate;
380 
381 }
382 
SetPredPistolMaxDamage(int value)383 void SetPredPistolMaxDamage(int value) {
384 
385 	if (value<0) {
386 		sprintf(ccv_tempstring,"PREDPISTOL_BLASTDAMAGE = %d\n",TemplateAmmo[AMMO_PRED_PISTOL].MaxDamage[AvP.Difficulty].Electrical);
387 
388 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
389 		return;
390 	}
391 
392 	if (value>1000) return;
393 
394 	TemplateAmmo[AMMO_PRED_PISTOL].MaxDamage[AvP.Difficulty].Electrical=value;
395 
396 }
397 
SetPredPistolBlastRange(int value)398 void SetPredPistolBlastRange(int value) {
399 
400 	if (value<0) {
401 		sprintf(ccv_tempstring,"PREDPISTOL_BLASTRANGE = %d\n",TemplateAmmo[AMMO_PRED_PISTOL].MaxRange);
402 
403 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
404 		return;
405 	}
406 
407 	if (value>65536) return;
408 
409 	TemplateAmmo[AMMO_PRED_PISTOL].MaxRange=value;
410 
411 }
412 
SetPredPistolStrikeDamage(int value)413 void SetPredPistolStrikeDamage(int value) {
414 
415 	if (value<0) {
416 		sprintf(ccv_tempstring,"PREDPISTOL_STRIKEDAMAGE = %d\n",TemplateAmmo[AMMO_PREDPISTOL_STRIKE].MaxDamage[AvP.Difficulty].Electrical);
417 
418 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
419 		return;
420 	}
421 
422 	if (value>1000) return;
423 
424 	TemplateAmmo[AMMO_PREDPISTOL_STRIKE].MaxDamage[AvP.Difficulty].Electrical=value;
425 
426 }
427 
PredPistol_FullAuto(void)428 void PredPistol_FullAuto(void) {
429 
430 	TEMPLATE_WEAPON_DATA *twPtr;
431 
432     twPtr = &TemplateWeapon[WEAPON_PRED_PISTOL];
433 
434    	twPtr->PrimaryIsAutomatic=1;
435 
436 }
437 
PredPistol_SemiAuto(void)438 void PredPistol_SemiAuto(void) {
439 
440 	TEMPLATE_WEAPON_DATA *twPtr;
441 
442     twPtr = &TemplateWeapon[WEAPON_PRED_PISTOL];
443 
444    	twPtr->PrimaryIsAutomatic=0;
445 
446 }
447 
SetPlayerStartingHealth(int value)448 void SetPlayerStartingHealth(int value) {
449 
450 	NPC_DATA *NpcData = NULL;
451 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
452 
453 	switch (AvP.PlayerType)
454 	{
455 		case I_Marine:
456 			switch (AvP.Difficulty) {
457 				case I_Easy:
458 					NpcData=GetThisNpcData(I_PC_Marine_Easy);
459 					break;
460 				default:
461 				case I_Medium:
462 					NpcData=GetThisNpcData(I_PC_Marine_Medium);
463 					break;
464 				case I_Hard:
465 					NpcData=GetThisNpcData(I_PC_Marine_Hard);
466 					break;
467 				case I_Impossible:
468 					NpcData=GetThisNpcData(I_PC_Marine_Impossible);
469 					break;
470 			}
471 			break;
472 		case I_Alien:
473 			switch (AvP.Difficulty) {
474 				case I_Easy:
475 					NpcData=GetThisNpcData(I_PC_Alien_Easy);
476 					break;
477 				default:
478 				case I_Medium:
479 					NpcData=GetThisNpcData(I_PC_Alien_Medium);
480 					break;
481 				case I_Hard:
482 					NpcData=GetThisNpcData(I_PC_Alien_Hard);
483 					break;
484 				case I_Impossible:
485 					NpcData=GetThisNpcData(I_PC_Alien_Impossible);
486 					break;
487 			}
488 			break;
489 		default:
490 			LOCALASSERT(0);
491 	}
492 	GLOBALASSERT(NpcData);
493 
494 	if (value<=0) {
495 		sprintf(ccv_tempstring,"PLAYER STARTING HEALTH = %d\n",NpcData->StartingStats.Health);
496 
497 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
498 		return;
499 	}
500 
501 	if (value>1000) return;
502 
503 	NpcData->StartingStats.Health=value;
504 
505 	Player->ObStrategyBlock->SBDamageBlock.Health=NpcData->StartingStats.Health<<ONE_FIXED_SHIFT;
506 	playerStatusPtr->Health=Player->ObStrategyBlock->SBDamageBlock.Health;
507 
508 }
509 
SetPlayerStartingArmour(int value)510 void SetPlayerStartingArmour(int value) {
511 
512 	NPC_DATA *NpcData = NULL;
513 	PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr);
514 
515 	switch (AvP.PlayerType)
516 	{
517 		case I_Marine:
518 			switch (AvP.Difficulty) {
519 				case I_Easy:
520 					NpcData=GetThisNpcData(I_PC_Marine_Easy);
521 					break;
522 				default:
523 				case I_Medium:
524 					NpcData=GetThisNpcData(I_PC_Marine_Medium);
525 					break;
526 				case I_Hard:
527 					NpcData=GetThisNpcData(I_PC_Marine_Hard);
528 					break;
529 				case I_Impossible:
530 					NpcData=GetThisNpcData(I_PC_Marine_Impossible);
531 					break;
532 			}
533 			break;
534 		case I_Alien:
535 			switch (AvP.Difficulty) {
536 				case I_Easy:
537 					NpcData=GetThisNpcData(I_PC_Alien_Easy);
538 					break;
539 				default:
540 				case I_Medium:
541 					NpcData=GetThisNpcData(I_PC_Alien_Medium);
542 					break;
543 				case I_Hard:
544 					NpcData=GetThisNpcData(I_PC_Alien_Hard);
545 					break;
546 				case I_Impossible:
547 					NpcData=GetThisNpcData(I_PC_Alien_Impossible);
548 					break;
549 			}
550 			break;
551 		default:
552 			LOCALASSERT(0);
553 	}
554 	GLOBALASSERT(NpcData);
555 
556 	if (value<=0) {
557 		sprintf(ccv_tempstring,"PLAYER STARTING ARMOUR = %d\n",NpcData->StartingStats.Armour);
558 
559 		NewOnScreenMessage((unsigned char *)&ccv_tempstring[0]);
560 		return;
561 	}
562 
563 	if (value>1000) return;
564 
565 	NpcData->StartingStats.Armour=value;
566 
567 	Player->ObStrategyBlock->SBDamageBlock.Armour=NpcData->StartingStats.Armour<<ONE_FIXED_SHIFT;
568 	playerStatusPtr->Armour=Player->ObStrategyBlock->SBDamageBlock.Armour;
569 
570 }
571 
ResetPersonalBests(void)572 void ResetPersonalBests(void) {
573 
574 	{
575 		int a,b;
576 
577 		for (a=0; a<I_MaxDifficulties; a++) {
578 			for (b=0; b<AVP_ENVIRONMENT_END_OF_LIST; b++) {
579 				UserProfilePtr->PersonalBests[a][b]=DefaultLevelGameStats;
580 			}
581 		}
582 	}
583 
584 }
585 
CreateMoreGameSpecificConsoleVariables(void)586 void CreateMoreGameSpecificConsoleVariables(void)
587 {
588 	#if CONSOLE_DEBUGGING_COMMANDS_ACTIVATED
589 	/* Calibrate Tail Hack */
590 
591 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
592 	(
593 		tail_xcal, // int& Value_ToUse,
594 		"TAIL-XCAL", // ProjChar* pProjCh_ToUse,
595 		"CLASSIFIED", // ProjChar* pProjCh_Description_ToUse
596 		0, // int MinVal_New,
597 		1000  // int MaxVal_New
598 	);
599 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
600 	(
601 		tail_ycal, // int& Value_ToUse,
602 		"TAIL-YCAL", // ProjChar* pProjCh_ToUse,
603 		"CLASSIFIED", // ProjChar* pProjCh_Description_ToUse
604 		0, // int MinVal_New,
605 		1000  // int MaxVal_New
606 	);
607 
608 	#if 0
609 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
610 	(
611 		RATweak, // int& Value_ToUse,
612 		"RATWEAK", // ProjChar* pProjCh_ToUse,
613 		"CLASSIFIED", // ProjChar* pProjCh_Description_ToUse
614 		-512, // int MinVal_New,
615 		512  // int MaxVal_New
616 	);
617 	#endif
618 
619 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
620 	(
621 		GlobalGoreRate, // int& Value_ToUse,
622 		"GLOBALGORERATE", // ProjChar* pProjCh_ToUse,
623 		"(TAKES VALUES 0 -> 65536, LESS IS MORE: 0 = DISABLED)", // ProjChar* pProjCh_Description_ToUse
624 		0, // int MinVal_New,
625 		65536  // int MaxVal_New
626 	);
627 
628 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
629 	(
630 		Marine_Skill, // int& Value_ToUse,
631 		"MARINE-SKILL", // ProjChar* pProjCh_ToUse,
632 		"(NPC SKILL, 65536 WILL RARELY MISS)", // ProjChar* pProjCh_Description_ToUse
633 		0, // int MinVal_New,
634 		131072  // int MaxVal_New
635 	);
636 
637 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
638 	(
639 		Marine_Terminal_Velocity, // int& Value_ToUse,
640 		"MARINE-TERMINAL-VELOCITY", // ProjChar* pProjCh_ToUse,
641 		"(SPEED WHICH KILLS A FALLING MARINE)", // ProjChar* pProjCh_Description_ToUse
642 		0, // int MinVal_New,
643 		131072  // int MaxVal_New
644 	);
645 
646 	/* Cloaking */
647 
648 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
649 	(
650 		TrickleCharge, // int& Value_ToUse,
651 		"TRICKLECHARGE", // ProjChar* pProjCh_ToUse,
652 		"(PRED TRICKLE CHARGE RATE)", // ProjChar* pProjCh_Description_ToUse
653 		-131072, // int MinVal_New,
654 		131072  // int MaxVal_New
655 	);
656 
657 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
658 	(
659 		CloakDrain, // int& Value_ToUse,
660 		"CLOAKDRAIN", // ProjChar* pProjCh_ToUse,
661 		"(PRED CLOAK DRAIN RATE)", // ProjChar* pProjCh_Description_ToUse
662 		-131072, // int MinVal_New,
663 		131072  // int MaxVal_New
664 	);
665 
666 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
667 	(
668 		CloakThreshold, // int& Value_ToUse,
669 		"CLOAKTHRESHOLD", // ProjChar* pProjCh_ToUse,
670 		"(CANNOT CLOAK WITHOUT THIS MUCH ENERGY)", // ProjChar* pProjCh_Description_ToUse
671 		0, // int MinVal_New,
672 		PLAYERCLOAK_MAXENERGY  // int MaxVal_New
673 	);
674 
675 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
676 	(
677 		CloakPowerOnDrain, // int& Value_ToUse,
678 		"CLOAKPOWERONDRAIN", // ProjChar* pProjCh_ToUse,
679 		"(CLOAKING USES THIS MUCH POWER)", // ProjChar* pProjCh_Description_ToUse
680 		0, // int MinVal_New,
681 		PLAYERCLOAK_MAXENERGY  // int MaxVal_New
682 	);
683 
684 	/* Pred Pistol */
685 
686 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
687 	(
688 		PredPistol_ShotCost, // int& Value_ToUse,
689 		"PREDPISTOL_SHOTCOST", // ProjChar* pProjCh_ToUse,
690 		"(ONE SHOT USES THIS MUCH POWER)", // ProjChar* pProjCh_Description_ToUse
691 		0, // int MinVal_New,
692 		PLAYERCLOAK_MAXENERGY  // int MaxVal_New
693 	);
694 
695 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
696 	(
697 		PredPistolBoltSpeed, // int& Value_ToUse,
698 		"PREDPISTOL_BOLTSPEED", // ProjChar* pProjCh_ToUse,
699 		"(SPEED OF BOLT)", // ProjChar* pProjCh_Description_ToUse
700 		0, // int MinVal_New,
701 		262144  // int MaxVal_New
702 	);
703 
704 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
705 	(
706 		PredPistolBoltGravity, // int& Value_ToUse,
707 		"PREDPISTOL_BOLTGRAVITY", // ProjChar* pProjCh_ToUse,
708 		"(GGRAVITY APPLIED TO BOLT)", // ProjChar* pProjCh_Description_ToUse
709 		-131072, // int MinVal_New,
710 		131072  // int MaxVal_New
711 	);
712 
713 	ConsoleCommand :: Make
714 	(
715 		"RESET_PERSONAL_BESTS",
716 		"RESETS PERSONAL BESTS STRUCTURES",
717 		ResetPersonalBests
718 	);
719 
720 	ConsoleCommand :: Make
721 	(
722 		"PREDPISTOL_BLASTRANGE",
723 		"ALTERS PRED PISTOL EXPLOSIVE RANGE",
724 		SetPredPistolBlastRange
725 	);
726 
727 	ConsoleCommand :: Make
728 	(
729 		"PREDPISTOL_BLASTDAMAGE",
730 		"ALTERS PRED PISTOL EXPLOSIVE DAMAGE",
731 		SetPredPistolMaxDamage
732 	);
733 
734 	ConsoleCommand :: Make
735 	(
736 		"PREDPISTOL_STRIKEDAMAGE",
737 		"ALTERS PRED PISTOL DIRECT DAMAGE",
738 		SetPredPistolStrikeDamage
739 	);
740 
741 	ConsoleCommand :: Make
742 	(
743 		"PREDPISTOL_RECOILTIME",
744 		"ALTERS PRED PISTOL RECOIL TIME",
745 		SetPredPistolRecoilTime
746 	);
747 
748 	ConsoleCommand :: Make
749 	(
750 		"PREDPISTOL_FULLAUTO",
751 		"MAKES PRED PISTOL FULLY AUTOMATIC",
752 		PredPistol_FullAuto
753 	);
754 
755 	ConsoleCommand :: Make
756 	(
757 		"PREDPISTOL_SEMIAUTO",
758 		"MAKES PRED PISTOL SEMI AUTOMATIC",
759 		PredPistol_SemiAuto
760 	);
761 
762 	/* Plasmacaster */
763 
764 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
765 	(
766 		Caster_Jumpstart, // int& Value_ToUse,
767 		"CASTER_JUMPSTART", // ProjChar* pProjCh_ToUse,
768 		"(INSTANT CHARGE WHEN FIRED)", // ProjChar* pProjCh_Description_ToUse
769 		0, // int MinVal_New,
770 		65536  // int MaxVal_New
771 	);
772 
773 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
774 	(
775 		Caster_Chargetime, // int& Value_ToUse,
776 		"CASTER_CHARGETIME", // ProjChar* pProjCh_ToUse,
777 		"(TIME TO CHARGE UP WITH FIRE)", // ProjChar* pProjCh_Description_ToUse
778 		0, // int MinVal_New,
779 		(65536*60)  // int MaxVal_New
780 	);
781 
782 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
783 	(
784 		Caster_TrickleRate, // int& Value_ToUse,
785 		"CASTER_TRICKLERATE", // ProjChar* pProjCh_ToUse,
786 		"(ONE FIXED PER SECOND)", // ProjChar* pProjCh_Description_ToUse
787 		0, // int MinVal_New,
788 		65536  // int MaxVal_New
789 	);
790 
791 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
792 	(
793 		Caster_TrickleLevel, // int& Value_ToUse,
794 		"CASTER_TRICKLELEVEL", // ProjChar* pProjCh_ToUse,
795 		"(TRICKLES TO THIS LEVEL)", // ProjChar* pProjCh_Description_ToUse
796 		0, // int MinVal_New,
797 		65536  // int MaxVal_New
798 	);
799 
800 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
801 	(
802 		Caster_ChargeRatio, // int& Value_ToUse,
803 		"CASTER_CHARGERATIO", // ProjChar* pProjCh_ToUse,
804 		"(FIELD CHARGE FOR A FULL SHOT)", // ProjChar* pProjCh_Description_ToUse
805 		0, // int MinVal_New,
806 		(65536*30)  // int MaxVal_New
807 	);
808 
809 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
810 	(
811 		Caster_NPCKill, // int& Value_ToUse,
812 		"CASTER_NPCKILL", // ProjChar* pProjCh_ToUse,
813 		"(CASTER CHARGE TO KILL AN NPC)", // ProjChar* pProjCh_Description_ToUse
814 		0, // int MinVal_New,
815 		65536  // int MaxVal_New
816 	);
817 
818 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
819 	(
820 		Caster_PCKill, // int& Value_ToUse,
821 		"CASTER_PCKILL", // ProjChar* pProjCh_ToUse,
822 		"(CASTER CHARGE TO KILL A PC)", // ProjChar* pProjCh_Description_ToUse
823 		0, // int MinVal_New,
824 		65536  // int MaxVal_New
825 	);
826 
827 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
828 	(
829 		Caster_BlastRadius, // int& Value_ToUse,
830 		"CASTER_BLASTRADIUS", // ProjChar* pProjCh_ToUse,
831 		"(BLAST RADIUS OF A FULL BOLT)", // ProjChar* pProjCh_Description_ToUse
832 		0, // int MinVal_New,
833 		65536  // int MaxVal_New
834 	);
835 
836 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
837 	(
838 		Caster_MinCharge, // int& Value_ToUse,
839 		"CASTER_MINCHARGE", // ProjChar* pProjCh_ToUse,
840 		"(MINIMUM CASTER CHARGE TO FIRE)", // ProjChar* pProjCh_Description_ToUse
841 		0, // int MinVal_New,
842 		65536  // int MaxVal_New
843 	);
844 
845 	/* Disc */
846 
847 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
848 	(
849 		RecallDisc_Charge, // int& Value_ToUse,
850 		"RECALL_DISC_CHARGE", // ProjChar* pProjCh_ToUse,
851 		"(COST TO RECALL A DISC)", // ProjChar* pProjCh_Description_ToUse
852 		0, // int MinVal_New,
853 		PLAYERCLOAK_MAXENERGY  // int MaxVal_New
854 	);
855 
856 	ConsoleCommand :: Make
857 	(
858 		"RECALL_DISC",
859 		"RECALLS A STUCK DISC",
860 		Recall_Disc
861 	);
862 
863 	/* Player Stats */
864 
865 	ConsoleCommand :: Make
866 	(
867 		"PLAYER_STARTING_HEALTH",
868 		"CHANGES CURRENT PLAYER STARTING HEALTH",
869 		SetPlayerStartingHealth
870 	);
871 
872 	ConsoleCommand :: Make
873 	(
874 		"PLAYER_STARTING_ARMOUR",
875 		"CHANGES CURRENT PLAYER STARTING ARMOUR",
876 		SetPlayerStartingArmour
877 	);
878 
879 	/* Debugging */
880 	#if 1
881 	ConsoleCommand :: Make
882 	(
883 		"TOGGLE_SHAPERENDER",
884 		"SWITCHES ALL HIERARCHY SECTIONS FOR SHELLS",
885 		ToggleShapeRender
886 	);
887 	#endif
888 	/* TEMPORARY */
889 	ConsoleCommand :: Make
890 	(
891 		"STRIKETIME",
892 		"ALTERS WRISTBLADE STRIKE TIME",
893 		StrikeTime
894 	);
895 
896 	ConsoleCommand :: Make
897 	(
898 		"ALIEN-STRIKETIME",
899 		"ALTERS ALIEN CLAW STRIKE TIME",
900 		AlienStrikeTime
901 	);
902 
903 	ConsoleCommand :: Make
904 	(
905 		"SHOWPREDOSTATS",
906 		"TOGGLES PREDATOR ENERGY PRINT",
907 		Show_PredOStats
908 	);
909 
910 	ConsoleCommand :: Make
911 	(
912 		"SHOWXENOSTATS",
913 		"TOGGLES XENOBORG BEHAVIOUR PRINT",
914 		Show_XenoStats
915 	);
916 
917 
918 	ConsoleCommand :: Make
919 	(
920 		"SHOWSQUADSTATE",
921 		"TOGGLES MARINE SQUAD STATUS PRINT",
922 		Show_SquadState
923 	);
924 
925 	ConsoleCommand :: Make
926 	(
927 		"SHOWNEARSQUAD",
928 		"TOGGLES NEAR MARINE STATUS PRINT",
929 		Show_NearSquad
930 	);
931 
932 	ConsoleCommand :: Make
933 	(
934 		"SHOWHIVESTATE",
935 		"TOGGLES HIVE STATUS PRINT",
936 		Show_HiveState
937 	);
938 	#if 0
939 	ConsoleCommand :: Make
940 	(
941 		"TOGGLEAMBIENCE",
942 		"TOGGLES THE AMBIENT LIGHT",
943 		Toggle_Ambience
944 	);
945 	#endif
946 	ConsoleCommand :: Make
947 	(
948 		"SHOWSLACK",
949 		"TOGGLES SLACK STATUS PRINT",
950 		Show_Slack
951 	);
952 
953 	ConsoleCommand :: Make
954 	(
955 		"SHOWADJACENCIES",
956 		"TOGGLES ADJACENCY STATUS PRINT",
957 		Show_Adj
958 	);
959 
960 	ConsoleCommand :: Make
961 	(
962 		"ZAPSLACK",
963 		"ZEROES SLACK COUNTERS",
964 		ZapSlack
965 	);
966 
967 	ConsoleCommand :: Make
968 	(
969 		"ZONEALERT",
970 		"TRIGGERS A MARINE ALERT",
971 		Console_ZoneAlert
972 	);
973 	/* TEMPORARY */
974 
975 	ConsoleCommand :: Make
976 	(
977 		"TAUNT",
978 		"STARTS TAUNT SEQUENCE",
979 		StartPlayerTaunt
980 	);
981 
982 	ConsoleCommand :: Make
983 	(
984 		"ACTIVATE-HIVE",
985 		"ACTIVATES ALIEN/NPC HIVE",
986 		ActivateHive
987 	);
988 
989 	ConsoleCommand :: Make
990 	(
991 		"DEACTIVATE-HIVE",
992 		"DEACTIVATES ALIEN/NPC HIVE",
993 		DeActivateHive
994 	);
995 
996 	ConsoleCommand :: Make
997 	(
998 		"FORCEGEN",
999 		"FORCES GENERATION OF AN NPC - SOMEWHERE",
1000 		ForceAGenerator_Shell
1001 	);
1002 
1003 	ConsoleCommand :: Make
1004 	(
1005 		"DUMMY",
1006 		"CREATES PLAYER DUMMY.",
1007 		CastDummy
1008 	);
1009 
1010 	#if 0
1011 	ConsoleCommand :: Make
1012 	(
1013 		"SENTRYGUN",
1014 		"DROPS A SENTRY GUN",
1015 		CastSentrygun
1016 	);
1017 	#endif
1018 	ConsoleCommand :: Make
1019 	(
1020 		"ACTIVATE_GENERATORS",
1021 		"ACTIVATES ALL GENERATORS.",
1022 		ActivateAllGenerators
1023 	);
1024 
1025 	ConsoleCommand :: Make
1026 	(
1027 		"NUKEINANIMATES",
1028 		"DESTROYS ALL INANIMATE OBJECTS.",
1029 		KillAllInanimates
1030 	);
1031 
1032 	ConsoleCommand :: Make
1033 	(
1034 		"NUKEMARINES",
1035 		"KILLS ALL MARINES.",
1036 		KillAllMarines
1037 	);
1038 
1039 	ConsoleCommand :: Make
1040 	(
1041 		"NUKEALIENS",
1042 		"KILLS ALL ALIENS.",
1043 		KillAllAliens
1044 	);
1045 
1046 	ConsoleCommand :: Make
1047 	(
1048 		"NUKEPREDS",
1049 		"KILLS ALL PREDATORS.",
1050 		KillAllPreds
1051 	);
1052 
1053 	ConsoleCommand :: Make
1054 	(
1055 		"NUKEDUMMIES",
1056 		"KILLS ALL PLAYER DUMMIES.",
1057 		KillAllDummies
1058 	);
1059 
1060 	ConsoleCommand :: Make
1061 	(
1062 		"OBSERVER",
1063 		"TOGGLES OBSERVER MODE.",
1064 		Toggle_Observer
1065 	);
1066 
1067 	ConsoleCommand :: Make
1068 	(
1069 		"SHOWRECOILMAXXTILT",
1070 		"SHOWS THAT VALUE.",
1071 		ShowRecoilMaxXTilt
1072 	);
1073 
1074 	ConsoleCommand :: Make
1075 	(
1076 		"SHOWRECOILMAXYTILT",
1077 		"SHOWS THAT VALUE.",
1078 		ShowRecoilMaxYTilt
1079 	);
1080 
1081 	ConsoleCommand :: Make
1082 	(
1083 		"SHOWRECOILMAXZ",
1084 		"SHOWS THAT VALUE.",
1085 		ShowRecoilMaxZ
1086 	);
1087 
1088 	ConsoleCommand :: Make
1089 	(
1090 		"SHOWRECOILMAXRANDOMZ",
1091 		"SHOWS THAT VALUE.",
1092 		ShowRecoilMaxRandomZ
1093 	);
1094 
1095 	ConsoleCommand :: Make
1096 	(
1097 		"SETRECOILMAXXTILT",
1098 		"SETS THAT VALUE.",
1099 		SetRecoilMaxXTilt
1100 	);
1101 
1102 	ConsoleCommand :: Make
1103 	(
1104 		"SETRECOILMAXYTILT",
1105 		"SETS THAT VALUE.",
1106 		SetRecoilMaxYTilt
1107 	);
1108 
1109 	ConsoleCommand :: Make
1110 	(
1111 		"SETRECOILMAXZ",
1112 		"SETS THAT VALUE.",
1113 		SetRecoilMaxZ
1114 	);
1115 
1116 	ConsoleCommand :: Make
1117 	(
1118 		"SETRECOILMAXRANDOMZ",
1119 		"SETS THAT VALUE.",
1120 		SetRecoilMaxRandomZ
1121 	);
1122 
1123 	#if 0
1124 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1125 	(
1126 		mx,
1127 		"MX",
1128 		"MOLOTOV X IMPULSE",
1129 		-ONE_FIXED,
1130 		ONE_FIXED
1131 	);
1132 
1133 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1134 	(
1135 		my,
1136 		"MY",
1137 		"MOLOTOV Y IMPULSE",
1138 		-ONE_FIXED,
1139 		ONE_FIXED
1140 	);
1141 
1142 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1143 	(
1144 		mz,
1145 		"MZ",
1146 		"MOLOTOV Z IMPULSE",
1147 		-ONE_FIXED,
1148 		ONE_FIXED
1149 	);
1150 	#endif
1151 
1152 	#if 0
1153 	/* Queen commands */
1154 
1155 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1156 	(
1157 		Queen_Step_Time,
1158 		"QSTEP-TIME",
1159 		"QUEEN STEP FORWARD TIME",
1160 		0,
1161 		(ONE_FIXED<<8)
1162 	);
1163 
1164 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1165 	(
1166 		Queen_Charge_Rate,
1167 		"QCHARGE_RATE",
1168 		"QUEEN CHARGE PACE",
1169 		0,
1170 		(ONE_FIXED<<8)
1171 	);
1172 
1173 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1174 	(
1175 		Queen_Step_Speed,
1176 		"QSTEP-SPEED",
1177 		"QUEEN STEP FORWARD SPEED",
1178 		0,
1179 		(ONE_FIXED)
1180 	);
1181 
1182 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1183 	(
1184 		Queen_Step_Mode,
1185 		"QSTEP-MODE",
1186 		"QUEEN STEP FORWARD MODE",
1187 		0,
1188 		1
1189 	);
1190 
1191 	ConsoleVariable :: MakeSimpleConsoleVariable_Int
1192 	(
1193 		Queen_Turn_Rate,
1194 		"QTURN-RATE",
1195 		"QUEEN TURN RATE",
1196 		0,
1197 		65536
1198 	);
1199 
1200 	ConsoleCommand :: Make
1201 	(
1202 		"QCOMM-STOP",
1203 		"STOPS SLAVE QUEEN.",
1204 		QComm_Stop
1205 	);
1206 
1207 	ConsoleCommand :: Make
1208 	(
1209 		"QCOMM-SF",
1210 		"ORDERS SLAVE QUEEN ONE STEP FORWARD.",
1211 		QComm_StepForward
1212 	);
1213 
1214 	ConsoleCommand :: Make
1215 	(
1216 		"QCOMM-SB",
1217 		"ORDERS SLAVE QUEEN ONE STEP Back.",
1218 		QComm_StepBack
1219 	);
1220 
1221 	ConsoleCommand :: Make
1222 	(
1223 		"QCOMM-TL",
1224 		"ORDERS SLAVE QUEEN TO TURN LEFT.",
1225 		QComm_TurnLeft
1226 	);
1227 
1228 	ConsoleCommand :: Make
1229 	(
1230 		"QCOMM-TR",
1231 		"ORDERS SLAVE QUEEN TO TURN RIGHT.",
1232 		QComm_TurnRight
1233 	);
1234 
1235 	ConsoleCommand :: Make
1236 	(
1237 		"QCOMM-HEEL",
1238 		"ORDERS SLAVE QUEEN TO COME TO PLAYER.",
1239 		QComm_Heel
1240 	);
1241 
1242 	ConsoleCommand :: Make
1243 	(
1244 		"QCOMM-TAUNT",
1245 		"ORDERS SLAVE QUEEN TO TAUNT.",
1246 		QComm_Taunt
1247 	);
1248 
1249 	ConsoleCommand :: Make
1250 	(
1251 		"QCOMM-HISS",
1252 		"ORDERS SLAVE QUEEN TO HISS.",
1253 		QComm_Hiss
1254 	);
1255 
1256 	ConsoleCommand :: Make
1257 	(
1258 		"QCOMM-LS",
1259 		"ORDERS SLAVE QUEEN TO SWIPE (LEFT).",
1260 		QComm_LeftSwipe
1261 	);
1262 
1263 	ConsoleCommand :: Make
1264 	(
1265 		"QCOMM-RS",
1266 		"ORDERS SLAVE QUEEN TO SWIPE (Right).",
1267 		QComm_RightSwipe
1268 	);
1269 
1270 	ConsoleCommand :: Make
1271 	(
1272 		"QCOMM-ROUTE",
1273 		"ORDERS SLAVE QUEEN TO FOLLOW THE PROGRAMMED ROUTE.",
1274 		QComm_Route
1275 	);
1276 
1277 	ConsoleCommand :: Make
1278 	(
1279 		"QCOMM-CHARGE",
1280 		"ORDERS SLAVE QUEEN TO CHARGE.",
1281 		QComm_Charge
1282 	);
1283 	#endif
1284 
1285 	#endif
1286 }
1287 
1288 }; // extern "C"
1289 
1290