6 #include "common__tools.h"
8 /******************************************************11
9 ******** OB files struct datas
10 ******************************************************/
11 // arr_glob_constraint MEANING : for an entire line of an ob_file
12 // [0] => nb param min
13 // [1] => nb param max
14 // [2] => arr_constraint on param 1
15 // [3] => arr_constraint on param 2
19 // arr_constraint MEANING
26 // 6 => must be a string
27 // 8 => must be in the set, where set members that finish by # match a trailing number
28 // [1+] Element of the set, if [0]==8
31 // Some constraints needs to be reversed cause they are tailed typed, so put them in this array
32 wxArrayString arr_Constraints_To_Reverse
;
34 ob_validator::~ob_validator()
37 ob_validator::ob_validator()
39 arr_glob_constraint
= NULL
;
42 ob_validator::ob_validator( _V
* _arr_glob_constraint
)
44 arr_glob_constraint
= _arr_glob_constraint
;
47 void ob_validator::Validate( const ob_object
* it
, wxString
* _tokens
, const size_t tokens_size
)
49 if( arr_glob_constraint
== NULL
)
52 // Have To reverse some rules sometimes
53 wxString
* tokens
= _tokens
;
54 if( arr_Constraints_To_Reverse
.Index( it
->name
) != wxNOT_FOUND
)
55 tokens
= Reverse_Null_StrArray( tokens
, tokens_size
);
58 // If number of tokens < number min
59 int bound_size
= *(arr_glob_constraint
[0]);
60 if( (int) tokens_size
< bound_size
)
61 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
62 wxT("To less parameters for ") + it
->name
);
64 // If number of tokens > number max
65 bound_size
= *(arr_glob_constraint
[1]);
66 if( (int) tokens_size
> bound_size
)
67 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
68 wxT("To much parameters for ") + it
->name
);
70 // Check each parameter of the tag
72 while( (int*) arr_glob_constraint
[i
] != NULL
)
74 // Constraint on this parameter
75 _V arr_constraint
= arr_glob_constraint
[i
];
77 // No more tokens => Everything fine :)
78 if( (int) tokens_size
< i
-1 )
81 // Constraints for this parameter are empty !!
82 if( (_V
) arr_constraint
[0] == NULL
)
84 ObjectsLog( MYLOG_ERROR
, it
->num_line
+ it
->nb_line
,
85 wxT("Constraint ") + IntToStr( i
- 1 ) + wxT(" for <") + it
->name
+ wxT("> is empty !!") );
90 // Check type constraint
91 int type_cstrts
= (int) arr_constraint
[0];
94 if( type_cstrts
== 5 )
96 if( tokens
[i
-2] == wxString() )
97 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
98 wxT("For <") + it
->name
+ wxT("> Parameter ") + IntToStr(i
-1) + wxT(" must be path but it's empty") );
101 wxFileName temp
= GetObFile( tokens
[i
-2] );
102 if( ! temp
.FileExists() )
103 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
104 wxT("For <") + it
->name
+ wxT("> , Parameter ") + IntToStr(i
-1) + wxT(" must be valid path, but can't find ")
105 + temp
.GetFullPath() + wxT(" in filesystem ") );
109 if( type_cstrts
== 1 && ! StrIsObBool( tokens
[i
-2] ))
110 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
111 wxT("For <") + it
->name
+
112 wxT("> , Parameter ") + IntToStr(i
-1) + wxT(" must be a boolean (0,1)"));
114 else if( type_cstrts
== 2 && ! StrIsInt( tokens
[i
-2] ))
115 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
116 wxT("For <") + it
->name
+
117 wxT("> , Parameter ") + IntToStr(i
-1) + wxT(" must be an integer"));
119 else if( type_cstrts
== 3 && ! StrIsUInt( tokens
[i
-2] ))
120 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
121 wxT("For <") + it
->name
+
122 wxT("> , Parameter ") + IntToStr(i
-1) + wxT(" must be a positive integer" ));
124 else if( type_cstrts
== 4 && ! StrIsFloat( tokens
[i
-2] ))
125 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
126 wxT("For <") + it
->name
127 + wxT("> , Parameter ") + IntToStr(i
-1) + wxT(" must be a real number") );
129 // Check Set + number constraint
130 else if( type_cstrts
== 8 )
134 while( (_V
) arr_constraint
[j
+1] != NULL
)
136 wxString t
= *((wxString
*) arr_constraint
[j
+1]);
138 if( t
.Right(1) == wxT("#") )
140 t
= t
.Left( t
.Len() -1);
141 if( tokens
[i
-2].Len() < t
.Len() )
148 tokens
[i
-2].Left(t
.Len()).Upper() == t
// prefix of token Match
151 StrIsInt( tokens
[i
-2].Right( tokens
[i
-2].Len() - t
.Len()) ) // suffix is a number
153 (tokens
[i
-2].Len() - t
.Len() ) == 0 // no suffix
161 else if( tokens
[i
-2].Upper() == t
)
172 while( (_V
) arr_constraint
[j
+1] != NULL
)
174 setStr
+= *(wxString
*)arr_constraint
[j
+1] + wxT(" | ");
177 ObjectsLog( MYLOG_WARNING
, it
->num_line
+ it
->nb_line
,
178 wxT("For <") + it
->name
+
179 wxT("> Parameter ") + IntToStr(i
-1) + wxT(" is <") + tokens
[i
-2] + wxT("> AND must be in ") + setStr
);
187 * Creation of known constraints
191 _V
* _VSet( size_t setSize
, ...)
194 va_start(vals
, setSize
);
196 _V
* res
= new _V
[setSize
+2];
199 while ( i
< setSize
)
201 wxString t
= wxString::FromAscii(va_arg( vals
, char* ));
202 res
[i
+1] = (int*) new wxString(t
);
210 _V
* _VSet2( size_t setSize
, wxString
* tab
)
212 _V
* res
= new _V
[setSize
+2];
215 while ( i
< setSize
)
217 res
[i
+1] = (int*) new wxString(tab
[i
]);
224 ob_validator
* _Vcsrt( int min_args
, int max_args
, int nb_csrt
, ... )
227 va_start(vals
, nb_csrt
);
229 _V
* res
= new _V
[3+nb_csrt
];
230 res
[0] = new int(min_args
);
231 res
[1] = new int(max_args
);
233 while ( i
< nb_csrt
)
235 res
[i
+2] = (_V
) va_arg( vals
, _V
* );
240 return new ob_validator( res
);
247 * The DATAs for the constraints
249 hash_constraints __ViD
;
250 hash_constraints entity_constraints
;
251 hash_constraints models_constraints
;
252 hash_constraints levels_constraints
;
254 wxString _t__off_def
[] = {wxT("all"), wxT("shock"), wxT("burn"), wxT("steal"), wxT("blast"), wxT("freeze"), wxT("normal"), wxT("normal1"), wxT("normal2"), wxT("normal3"), wxT("normal4"), wxT("normal5"), wxT("normal6"), wxT("normal7"), wxT("normal8"), wxT("normal9"), wxT("normal10")};
256 wxString _t__entity_type
[] = {wxT("player"), wxT("enemy"), wxT("npc"), wxT("item"), wxT("none"), wxT("steamer"), wxT("obstacle"), wxT("text"), wxT("trap"), wxT("endlevel"), wxT("pshot"), wxT("panel") };
258 wxString _t__entity_subtype
[] = {wxT("arrow"), wxT("noskip"), wxT("weapon"), wxT("biker"), wxT("notgrab"), wxT("touch"), wxT("flydie"), wxT("both"), wxT("project"), wxT("chase"), wxT("follow") };
260 wxString _t__entity_aimove
[] = {wxT("Chase"), wxT("Chasex"), wxT("Chasez"), wxT("Avoid"), wxT("Avoidx"), wxT("Avoidz"), wxT("Wander"), wxT("Ignoreholes")};
262 wxString _t__entity_animation
[] = {
274 wxT("RUNJUMPATTACK"),
297 wxT("ATTACKFORWARD"),
298 wxT("ATTACKBACKWARD"),
322 wxT("GRABBEDBACKWALK"),
323 wxT("GRABBEDWALKUP"),
324 wxT("GRABBEDWALKDOWN"),
345 wxString _t__smartBomb
[] = {wxT("0"), wxT("knockdown1"), wxT("1"), wxT("knockdown2"), wxT("2"), wxT("knockdown3"), wxT("3"), wxT("knockdown4"), wxT("4"), wxT("blast"), wxT("5"), wxT("burn"), wxT("6"), wxT("freeze"), wxT("7"), wxT("shock"), wxT("8"), wxT("steal") };
347 wxString _t__targetType
[] = {wxT("enemy"), wxT("player"), wxT("npc"), wxT("obstacle"), wxT("shot"), wxT("ground") };
349 wxString _t__directions
[] = { wxT("U"), wxT("D"), wxT("F"), wxT("B") };
351 * Implement the constraints to each tokens in the *.txt
362 void constraints_init()
364 __bool_
= new int(1);
366 __Uint_
= new int(3);
367 __float_
= new int(4);
368 __path_
= new int(5);
371 /****************************
372 // General validators
373 ****************************/
374 __ViD
[wxT("EMPTY")] = _Vcsrt(0,0, 0 );
375 __ViD
[wxT("noCstt")] = _Vcsrt(0,50, 0 );
377 __ViD
[wxT("boolR")] = _Vcsrt(1,1, 1, __bool_
);
378 __ViD
[wxT("bool")] = _Vcsrt(0,1, 1, __bool_
);
379 __ViD
[wxT("intR")] = _Vcsrt(1,1, 1, __int_
);
380 __ViD
[wxT("int")] = _Vcsrt(0,1, 1, __int_
);
381 __ViD
[wxT("UintR")] = _Vcsrt(1,1, 1, __Uint_
);
382 __ViD
[wxT("Uint")] = _Vcsrt(0,1, 1, __Uint_
);
383 __ViD
[wxT("float")] = _Vcsrt(0,1, 1, __float_
);
384 __ViD
[wxT("floatR")] = _Vcsrt(1,1, 1, __float_
);
385 __ViD
[wxT("path")] = _Vcsrt(0,1, 1, __path_
);
386 __ViD
[wxT("pathR")] = _Vcsrt(1,1, 1, __path_
);
387 __ViD
[wxT("strR")] = _Vcsrt(1,1, 1, __str_
);
389 __ViD
[wxT("2_int")] = _Vcsrt(1,2, 2, __int_
, __int_
);
390 __ViD
[wxT("2_Uint")] = _Vcsrt(1,2, 2, __Uint_
, __Uint_
);
391 __ViD
[wxT("2_path")] = _Vcsrt(2,2, 2, __path_
, __path_
);
392 __ViD
[wxT("2_bool")] = _Vcsrt(1,2, 2, __bool_
, __bool_
);
393 __ViD
[wxT("str_pathR")] = _Vcsrt(2,2, 2, __str_
, __path_
);
394 __ViD
[wxT("Uint_bool")] = _Vcsrt(1,2, 2, __Uint_
, __bool_
);
396 __ViD
[wxT("3_Uint")] = _Vcsrt(1,3, 3, __Uint_
, __Uint_
, __Uint_
);
397 __ViD
[wxT("3_int")] = _Vcsrt(1,3, 3, __int_
, __int_
, __int_
);
398 __ViD
[wxT("path_x_yR")] = _Vcsrt(3,3, 3, __path_
, __int_
, __int_
);
400 __ViD
[wxT("4_bool")] = _Vcsrt(1,4, 4, __bool_
, __bool_
, __bool_
,__bool_
);
401 __ViD
[wxT("4_int")] = _Vcsrt(1,4, 4, __int_
, __int_
, __int_
, __int_
);
402 __ViD
[wxT("4_Uint")] = _Vcsrt(1,4, 4, __Uint_
, __Uint_
, __Uint_
, __Uint_
);
404 __ViD
[wxT("5_int")] = _Vcsrt(1,5, 5, __int_
, __int_
, __int_
, __int_
, __int_
);
405 __ViD
[wxT("5_Uint")] = _Vcsrt(1,5, 5, __Uint_
, __Uint_
, __Uint_
, __Uint_
, __Uint_
);
407 __ViD
[wxT("pathR_andMore")] = _Vcsrt(1,10, 1, __path_
);
409 /****************************
410 // Specific validators
411 ****************************/
413 // entity offense defense
414 _V
* set__off_def
= _VSet2( t_size_of( _t__off_def
), _t__off_def
);
415 __ViD
[wxT("off_def")] = _Vcsrt(2,2, 2, set__off_def
, __int_
);
418 _V
* set__ent_type
= _VSet2( t_size_of( _t__entity_type
), _t__entity_type
);
419 __ViD
[wxT("entity_type")] = _Vcsrt(1,1, 1, set__ent_type
);
422 _V
* set__ent_subtype
= _VSet2( t_size_of( _t__entity_subtype
), _t__entity_subtype
);
423 __ViD
[wxT("entity_subtype")] = _Vcsrt(1,1, 1, set__ent_subtype
);
426 _V
* set__ent_aimove
= _VSet2( t_size_of( _t__entity_aimove
), _t__entity_aimove
);
427 __ViD
[wxT("entity_aimove")] = _Vcsrt(1,1, 1, set__ent_aimove
);
430 __ViD
[wxT("running")] = _Vcsrt(1,5, 5, __Uint_
, __Uint_
, __Uint_
, __bool_
, __bool_
);
433 _V
* set__ent_animation
= _VSet2( t_size_of( _t__entity_animation
), _t__entity_animation
);
434 __ViD
[wxT("entity_animation")] = _Vcsrt(1,1, 1, set__ent_animation
);
437 __ViD
[wxT("entity_attack_ON")] = _Vcsrt(6,10, 10,
438 __int_
, __int_
, __int_
, __int_
, __Uint_
, __Uint_
,
439 __bool_
, __bool_
, __Uint_
, __int_
);
441 __ViD
[wxT("entity_attack")] = _Vcsrt(1,10, 10,
442 __int_
, __int_
, __int_
, __int_
, __Uint_
, __Uint_
,
443 __bool_
, __bool_
, __Uint_
, __int_
);
445 __ViD
[wxT("entity_attack_blast")] = _Vcsrt(1,9, 9,
446 __int_
, __int_
, __int_
, __int_
, __Uint_
,
447 __bool_
, __bool_
, __Uint_
, __int_
);
451 __ViD
[wxT("entity_spawn")] = _Vcsrt(1,5, 5, __Uint_
, __int_
, __int_
, __int_
, __bool_
);
454 _V
* set__smartBomb
= _VSet2( t_size_of( _t__smartBomb
), _t__smartBomb
);
455 __ViD
[wxT("entity_smartBomb")] = _Vcsrt(2,4, 4, __int_
, set__smartBomb
, __bool_
, __Uint_
);
457 // entity_filter_type
458 _V
* set__hostile
= _VSet2( t_size_of( _t__targetType
), _t__targetType
);
459 __ViD
[wxT("entity_filter_type")] = _Vcsrt(1,5, 5, set__hostile
, set__hostile
, set__hostile
, set__hostile
, set__hostile
);
462 __ViD
[wxT("at_chain")] = _Vcsrt(1,15, 15,
463 __Uint_
, __Uint_
, __Uint_
, __Uint_
, __Uint_
,
464 __Uint_
, __Uint_
, __Uint_
, __Uint_
, __Uint_
,
465 __Uint_
, __Uint_
, __Uint_
, __Uint_
, __Uint_
);
468 _V
* set__ent_directions
= _VSet2( t_size_of( _t__directions
), _t__directions
);
469 __ViD
[wxT("entity_com")] = _Vcsrt(3,17, 17,
470 _VSet( 1, "freespecial#" ),
471 _VSet( 7, "A", "A2", "A3", "A4", "J", "S", "K" )
472 , set__ent_directions
, set__ent_directions
, set__ent_directions
,
473 set__ent_directions
, set__ent_directions
, set__ent_directions
,
474 set__ent_directions
, set__ent_directions
, set__ent_directions
,
475 set__ent_directions
, set__ent_directions
, set__ent_directions
,
476 set__ent_directions
, set__ent_directions
, set__ent_directions
);
478 __ViD
[wxT("ent_lifebarstatus")] = _Vcsrt( 2, 10, 10,
479 __Uint_
, __Uint_
, __bool_
, __bool_
, __bool_
, __int_
, __int_
, __int_
, __int_
, __int_
);
481 __ViD
[wxT("platform")] = _Vcsrt( 8, 8, 8,
482 __int_
, __int_
, __int_
, __int_
, __int_
, __int_
, __int_
, __int_
);
484 __ViD
[wxT("drawmethod")] = _Vcsrt( 1, 10, 10,
485 __int_
, __int_
, __bool_
, __bool_
, __int_
, __int_
,
486 __int_
, __Uint_
, __Uint_
, __bool_
);
489 // Models.txt constraints
490 models_constraints
[wxT("name")] = __ViD
[wxT("strR")];
491 models_constraints
[wxT("ajspecial")] = __ViD
[wxT("boolR")];
492 models_constraints
[wxT("autoland")] = __ViD
[wxT("UintR")];
493 models_constraints
[wxT("colourselect")] = __ViD
[wxT("boolR")];
494 models_constraints
[wxT("nocost")] = __ViD
[wxT("boolR")];
495 models_constraints
[wxT("nolost")] = __ViD
[wxT("boolR")];
496 models_constraints
[wxT("blockratio")] = __ViD
[wxT("boolR")];
497 models_constraints
[wxT("mpblock")] = __ViD
[wxT("boolR")];
498 models_constraints
[wxT("nochipdeath")] = __ViD
[wxT("boolR")];
499 models_constraints
[wxT("nochipdeath")] = __ViD
[wxT("boolR")];
500 models_constraints
[wxT("versusdamage")] = __ViD
[wxT("boolR")];
501 models_constraints
[wxT("spdirection")] = __ViD
[wxT("4_bool")];
502 models_constraints
[wxT("maxattacks")] = __ViD
[wxT("UintR")];
503 models_constraints
[wxT("maxattacktypes")] = __ViD
[wxT("UintR")];
504 models_constraints
[wxT("maxfollows")] = __ViD
[wxT("UintR")];
505 models_constraints
[wxT("maxfreespecials")] = __ViD
[wxT("UintR")];
506 models_constraints
[wxT("lifescore")] = __ViD
[wxT("intR")];
507 models_constraints
[wxT("credscore")] = __ViD
[wxT("intR")];
508 models_constraints
[wxT("nocheats")] = __ViD
[wxT("boolR")];
509 models_constraints
[wxT("load")] = __ViD
[wxT("str_pathR")];
510 models_constraints
[wxT("know")] = __ViD
[wxT("str_pathR")];
512 // entity files constraints
513 entity_constraints
[wxT("name")] = __ViD
[wxT("strR")];
514 entity_constraints
[wxT("type")] = __ViD
[wxT("entity_type")];
515 entity_constraints
[wxT("subtype")] = __ViD
[wxT("entity_subtype")];
516 entity_constraints
[wxT("health")] = __ViD
[wxT("UintR")];
517 entity_constraints
[wxT("mp")] = __ViD
[wxT("UintR")];
518 entity_constraints
[wxT("credit")] = __ViD
[wxT("UintR")];
519 entity_constraints
[wxT("alpha")] = __ViD
[wxT("UintR")];
520 entity_constraints
[wxT("speed")] = __ViD
[wxT("UintR")];
521 entity_constraints
[wxT("speedf")] = __ViD
[wxT("floatR")];
522 entity_constraints
[wxT("running")] = __ViD
[wxT("running")];
523 entity_constraints
[wxT("nomove")] = __ViD
[wxT("2_bool")];
524 entity_constraints
[wxT("jumpspeed")] = __ViD
[wxT("UintR")];
525 entity_constraints
[wxT("jumpspeedf")] = __ViD
[wxT("floatR")];
526 entity_constraints
[wxT("jumpheight")] = __ViD
[wxT("UintR")];
527 entity_constraints
[wxT("grabdistance")] = __ViD
[wxT("UintR")];
528 entity_constraints
[wxT("throwdamage")] = __ViD
[wxT("UintR")];
529 entity_constraints
[wxT("throw")] = __ViD
[wxT("2_Uint")];
530 entity_constraints
[wxT("throwframewait")] = __ViD
[wxT("UintR")];
531 entity_constraints
[wxT("height")] = __ViD
[wxT("UintR")];
532 entity_constraints
[wxT("secret")] = __ViD
[wxT("boolR")];
533 entity_constraints
[wxT("shadow")] = __ViD
[wxT("UintR")];
534 entity_constraints
[wxT("fmap")] = __ViD
[wxT("UintR")];
535 entity_constraints
[wxT("load")] = __ViD
[wxT("strR")];
536 entity_constraints
[wxT("project")] = __ViD
[wxT("strR")];
537 entity_constraints
[wxT("shootnum")] = __ViD
[wxT("UintR")];
538 entity_constraints
[wxT("counter")] = __ViD
[wxT("UintR")];
539 entity_constraints
[wxT("reload")] = __ViD
[wxT("UintR")];
540 entity_constraints
[wxT("typeshot")] = __ViD
[wxT("boolR")];
541 entity_constraints
[wxT("animal")] = __ViD
[wxT("boolR")];
542 entity_constraints
[wxT("playshot")] = __ViD
[wxT("strR")];
543 entity_constraints
[wxT("playshotno")] = __ViD
[wxT("strR")];
544 entity_constraints
[wxT("knife")] = __ViD
[wxT("strR")];
545 entity_constraints
[wxT("star")] = __ViD
[wxT("strR")];
546 entity_constraints
[wxT("bomb")] = __ViD
[wxT("strR")];
547 entity_constraints
[wxT("pbomb")] = __ViD
[wxT("strR")];
548 entity_constraints
[wxT("hitenemy")] = __ViD
[wxT("2_bool")];
549 entity_constraints
[wxT("rider")] = __ViD
[wxT("strR")];
550 entity_constraints
[wxT("flash")] = __ViD
[wxT("strR")];
551 entity_constraints
[wxT("bflash")] = __ViD
[wxT("strR")];
552 entity_constraints
[wxT("dust")] = __ViD
[wxT("strR")];
553 entity_constraints
[wxT("nolife")] = __ViD
[wxT("boolR")];
554 entity_constraints
[wxT("noquake")] = __ViD
[wxT("boolR")];
555 entity_constraints
[wxT("nopain")] = __ViD
[wxT("boolR")];
556 entity_constraints
[wxT("nodrop")] = __ViD
[wxT("boolR")];
557 entity_constraints
[wxT("nodieblink")] = __ViD
[wxT("Uint_bool")];
558 entity_constraints
[wxT("makeinv")] = __ViD
[wxT("Uint_bool")];
559 entity_constraints
[wxT("blockodds")] = __ViD
[wxT("UintR")];
560 entity_constraints
[wxT("thold")] = __ViD
[wxT("UintR")];
561 entity_constraints
[wxT("blockpain")] = __ViD
[wxT("boolR")];
562 entity_constraints
[wxT("falldie")] = __ViD
[wxT("UintR")];
563 entity_constraints
[wxT("aironly")] = __ViD
[wxT("boolR")];
564 entity_constraints
[wxT("setlayer")] = __ViD
[wxT("intR")];
565 entity_constraints
[wxT("grabback")] = __ViD
[wxT("boolR")];
566 entity_constraints
[wxT("grabfinish")] = __ViD
[wxT("boolR")];
567 entity_constraints
[wxT("icon")] = __ViD
[wxT("pathR")];
568 entity_constraints
[wxT("iconpain")] = __ViD
[wxT("pathR")];
569 entity_constraints
[wxT("icondie")] = __ViD
[wxT("pathR")];
570 entity_constraints
[wxT("iconget")] = __ViD
[wxT("pathR")];
571 entity_constraints
[wxT("iconw")] = __ViD
[wxT("pathR")];
572 entity_constraints
[wxT("iconmphigh")] = __ViD
[wxT("pathR")];
573 entity_constraints
[wxT("iconmphalf")] = __ViD
[wxT("pathR")];
574 entity_constraints
[wxT("iconmplow")] = __ViD
[wxT("pathR")];
575 entity_constraints
[wxT("diesound")] = __ViD
[wxT("pathR")];
576 entity_constraints
[wxT("parrow")] = __ViD
[wxT("path_x_yR")];
577 entity_constraints
[wxT("parrow2")] = __ViD
[wxT("path_x_yR")];
578 entity_constraints
[wxT("score")] = __ViD
[wxT("2_int")];
579 entity_constraints
[wxT("smartbomb")] = __ViD
[wxT("entity_smartBomb")];
580 entity_constraints
[wxT("toflip")] = __ViD
[wxT("boolR")];
581 entity_constraints
[wxT("cantgrab")] = __ViD
[wxT("boolR")];
582 entity_constraints
[wxT("paingrab")] = __ViD
[wxT("boolR")];
583 entity_constraints
[wxT("noatflash")] = __ViD
[wxT("boolR")];
584 entity_constraints
[wxT("remove")] = __ViD
[wxT("boolR")];
585 entity_constraints
[wxT("escapehits")] = __ViD
[wxT("UintR")];
586 entity_constraints
[wxT("com")] = __ViD
[wxT("entity_com")];
587 arr_Constraints_To_Reverse
.Add( wxT("com") );
588 entity_constraints
[wxT("remap")] = __ViD
[wxT("2_path")];
589 entity_constraints
[wxT("atchain")] = __ViD
[wxT("at_chain")];
590 entity_constraints
[wxT("chargerate")] = __ViD
[wxT("UintR")];
591 entity_constraints
[wxT("mprate]")] = __ViD
[wxT("UintR")];
592 entity_constraints
[wxT("risetime")] = __ViD
[wxT("intR")];
593 entity_constraints
[wxT("turndelay")] = __ViD
[wxT("UintR")];
594 entity_constraints
[wxT("facing")] = __ViD
[wxT("UintR")];
595 entity_constraints
[wxT("weaploss")] = __ViD
[wxT("UintR")];
596 entity_constraints
[wxT("branch")] = __ViD
[wxT("strR")];
597 entity_constraints
[wxT("hostile")] = __ViD
[wxT("entity_filter_type")];
598 entity_constraints
[wxT("candamage")] = __ViD
[wxT("entity_filter_type")];
599 entity_constraints
[wxT("projectilehit")] = __ViD
[wxT("entity_filter_type")];
600 entity_constraints
[wxT("aggression")] = __ViD
[wxT("intR")];
601 entity_constraints
[wxT("antigrab")] = __ViD
[wxT("intR")];
602 entity_constraints
[wxT("grabforce")] = __ViD
[wxT("intR")];
603 entity_constraints
[wxT("offense")] = __ViD
[wxT("off_def")];
604 entity_constraints
[wxT("defense")] = __ViD
[wxT("off_def")];
605 entity_constraints
[wxT("hmap")] = __ViD
[wxT("2_Uint")];
606 entity_constraints
[wxT("bounce")] = __ViD
[wxT("boolR")];
607 entity_constraints
[wxT("grabwalk")] = __ViD
[wxT("boolR")];
608 entity_constraints
[wxT("grabturn")] = __ViD
[wxT("boolR")];
609 entity_constraints
[wxT("load")] = __ViD
[wxT("str_pathR")];
610 entity_constraints
[wxT("lifespan")] = __ViD
[wxT("UintR")];
611 entity_constraints
[wxT("nopassiveblock")] = __ViD
[wxT("boolR")];
612 entity_constraints
[wxT("knockdowncount")] = __ViD
[wxT("UintR")];
613 entity_constraints
[wxT("antigravity")] = __ViD
[wxT("intR")];
614 entity_constraints
[wxT("aimove")] = __ViD
[wxT("entity_aimove")];
615 entity_constraints
[wxT("gfxshadow")] = __ViD
[wxT("boolR")];
616 entity_constraints
[wxT("holdblock")] = __ViD
[wxT("boolR")];
617 entity_constraints
[wxT("jumpmove")] = __ViD
[wxT("2_Uint")];
618 entity_constraints
[wxT("riseinv")] = __ViD
[wxT("Uint_bool")];
619 entity_constraints
[wxT("lifebarstatus")] = __ViD
[wxT("ent_lifebarstatus")];
620 entity_constraints
[wxT("lifeposition")] = __ViD
[wxT("2_int")];
621 entity_constraints
[wxT("nameposition")] = __ViD
[wxT("2_int")];
622 entity_constraints
[wxT("iconposition")] = __ViD
[wxT("2_int")];
623 entity_constraints
[wxT("no_adjust_base")] = __ViD
[wxT("boolR")];
624 entity_constraints
[wxT("subject_to_wall")] = __ViD
[wxT("boolR")];
625 entity_constraints
[wxT("subject_to_hole")] = __ViD
[wxT("boolR")] ;
626 entity_constraints
[wxT("subject_to_obstacle")] = __ViD
[wxT("boolR")];
627 entity_constraints
[wxT("subject_to_platform")] = __ViD
[wxT("boolR")];
628 entity_constraints
[wxT("subject_to_gravity")] = __ViD
[wxT("boolR")];
629 entity_constraints
[wxT("subject_to_screen")] = __ViD
[wxT("boolR")];
630 entity_constraints
[wxT("falldie")] = __ViD
[wxT("UintR")];
631 entity_constraints
[wxT("death")] = __ViD
[wxT("UintR")];
632 entity_constraints
[wxT("resetable")] = __ViD
[wxT("int")];
633 entity_constraints
[wxT("sleepwait")] = __ViD
[wxT("int")];
634 entity_constraints
[wxT("always_go_ahead")] = __ViD
[wxT("bool")];
635 entity_constraints
[wxT("always_walk")] = __ViD
[wxT("bool")];
636 entity_constraints
[wxT("nodropfly")] = __ViD
[wxT("bool")];
637 entity_constraints
[wxT("palette")] = __ViD
[wxT("pathR_andMore")];
638 entity_constraints
[wxT("alternatepal")] = __ViD
[wxT("pathR")];
640 //Animations properties
641 entity_constraints
[wxT("animation")] = __ViD
[wxT("entity_animation")];
642 entity_constraints
[wxT("anim")] = __ViD
[wxT("entity_animation")];
644 entity_constraints
[wxT("loop")] = __ViD
[wxT("boolR")];
645 entity_constraints
[wxT("fastattack")] = __ViD
[wxT("boolR")];
646 entity_constraints
[wxT("hitfx")] = __ViD
[wxT("pathR")];
647 entity_constraints
[wxT("hitflash")] = __ViD
[wxT("strR")];
648 entity_constraints
[wxT("custknife")] = __ViD
[wxT("strR")];
649 entity_constraints
[wxT("custstar")] = __ViD
[wxT("strR")];
650 entity_constraints
[wxT("custbomb")] = __ViD
[wxT("strR")];
651 entity_constraints
[wxT("custpbomb")] = __ViD
[wxT("strR")];
652 entity_constraints
[wxT("delay")] = __ViD
[wxT("UintR")];
653 entity_constraints
[wxT("offset")] = __ViD
[wxT("2_int")];
654 entity_constraints
[wxT("bbox")] = __ViD
[wxT("5_int")];
655 entity_constraints
[wxT("frame")] = __ViD
[wxT("pathR")];
656 entity_constraints
[wxT("range")] = __ViD
[wxT("2_int")];
657 entity_constraints
[wxT("rangez")] = __ViD
[wxT("2_int")];
658 entity_constraints
[wxT("rangea")] = __ViD
[wxT("2_int")];
659 entity_constraints
[wxT("attack")] = __ViD
[wxT("entity_attack")];
660 entity_constraints
[wxT("attack1")] = __ViD
[wxT("entity_attack")];
661 entity_constraints
[wxT("attack2")] = __ViD
[wxT("entity_attack")];
662 entity_constraints
[wxT("attack3")] = __ViD
[wxT("entity_attack")];
663 entity_constraints
[wxT("attack4")] = __ViD
[wxT("entity_attack")];
664 entity_constraints
[wxT("attack5")] = __ViD
[wxT("entity_attack")];
665 entity_constraints
[wxT("attack6")] = __ViD
[wxT("entity_attack")];
666 entity_constraints
[wxT("attack7")] = __ViD
[wxT("entity_attack")];
667 entity_constraints
[wxT("attack8")] = __ViD
[wxT("entity_attack")];
668 entity_constraints
[wxT("attack9")] = __ViD
[wxT("entity_attack")];
669 entity_constraints
[wxT("blast")] = __ViD
[wxT("entity_attack_blast")];
670 entity_constraints
[wxT("shock")] = __ViD
[wxT("entity_attack")];
671 entity_constraints
[wxT("burn")] = __ViD
[wxT("entity_attack")];
672 entity_constraints
[wxT("freeze")] = __ViD
[wxT("entity_attack")];
673 entity_constraints
[wxT("steal")] = __ViD
[wxT("entity_attack")];
674 entity_constraints
[wxT("quakeframe")] = __ViD
[wxT("3_Uint")];
675 entity_constraints
[wxT("move")] = __ViD
[wxT("intR")];
676 entity_constraints
[wxT("movea")] = __ViD
[wxT("intR")];
677 entity_constraints
[wxT("movez")] = __ViD
[wxT("intR")];
678 entity_constraints
[wxT("seta")] = __ViD
[wxT("intR")];
679 entity_constraints
[wxT("platform")] = __ViD
[wxT("platform")];
680 entity_constraints
[wxT("dive")] = __ViD
[wxT("2_int")];
681 entity_constraints
[wxT("sound")] = __ViD
[wxT("path")];
682 entity_constraints
[wxT("pshotframe")] = __ViD
[wxT("2_Uint")];
683 entity_constraints
[wxT("throwframe")] = __ViD
[wxT("2_Uint")];
684 entity_constraints
[wxT("tossframe")] = __ViD
[wxT("2_Uint")];
685 entity_constraints
[wxT("pbombframe")] = __ViD
[wxT("2_Uint")];
686 entity_constraints
[wxT("jumpframe")] = __ViD
[wxT("4_int")];
687 entity_constraints
[wxT("custpshot")] = __ViD
[wxT("strR")];
688 entity_constraints
[wxT("mpcost")] = __ViD
[wxT("UintR")];
689 entity_constraints
[wxT("custfireb")] = __ViD
[wxT("strR")];
690 entity_constraints
[wxT("shootframe")] = __ViD
[wxT("2_Uint")];
691 entity_constraints
[wxT("flipframe")] = __ViD
[wxT("UintR")];
692 entity_constraints
[wxT("followanim")] = __ViD
[wxT("UintR")];
693 entity_constraints
[wxT("followcond")] = __ViD
[wxT("UintR")];
694 entity_constraints
[wxT("counterframe")] = __ViD
[wxT("3_Uint")];
695 entity_constraints
[wxT("spawnframe")] = __ViD
[wxT("entity_spawn")];
696 entity_constraints
[wxT("summonframe")] = __ViD
[wxT("entity_spawn")];
697 entity_constraints
[wxT("unsummonframe")] = __ViD
[wxT("UintR")];
698 entity_constraints
[wxT("subentity")] = __ViD
[wxT("UintR")];
699 entity_constraints
[wxT("custentity")] = __ViD
[wxT("UintR")];
700 entity_constraints
[wxT("weaponframe")] = __ViD
[wxT("2_Uint")];
701 entity_constraints
[wxT("attackone")] = __ViD
[wxT("boolR")];
702 entity_constraints
[wxT("grabin")] = __ViD
[wxT("2_Uint")];
703 entity_constraints
[wxT("forcedirection")] = __ViD
[wxT("intR")];
704 entity_constraints
[wxT("damageonlanding")] = __ViD
[wxT("2_Uint")];
705 entity_constraints
[wxT("dropv")] = __ViD
[wxT("3_int")];
706 entity_constraints
[wxT("dropframe")] = __ViD
[wxT("UintR")];
707 entity_constraints
[wxT("landframe")] = __ViD
[wxT("UintR")];
708 entity_constraints
[wxT("counterattack")] = __ViD
[wxT("boolR")];
709 entity_constraints
[wxT("fshadow")] = __ViD
[wxT("intR")];
710 entity_constraints
[wxT("shadowcoords")] = __ViD
[wxT("2_int")];
711 entity_constraints
[wxT("itembox")] = __ViD
[wxT("4_int")];
712 entity_constraints
[wxT("stun")] = __ViD
[wxT("intR")];
713 entity_constraints
[wxT("seal")] = __ViD
[wxT("2_Uint")];
714 entity_constraints
[wxT("forcemap")] = __ViD
[wxT("2_Uint")];
715 entity_constraints
[wxT("drain")] = __ViD
[wxT("4_Uint")];
716 entity_constraints
[wxT("noreflect")] = __ViD
[wxT("boolR")];
717 entity_constraints
[wxT("drawmethod")] = __ViD
[wxT("drawmethod")];
718 entity_constraints
[wxT("nodrawmethod")] = __ViD
[wxT("EMPTY")];
719 entity_constraints
[wxT("bouncefactor")] = __ViD
[wxT("intR")];
721 entity_constraints
[wxT("mponly")] = __ViD
[wxT("boolR")];
722 entity_constraints
[wxT("hponly")] = __ViD
[wxT("boolR")];
723 entity_constraints
[wxT("energycost")] = __ViD
[wxT("intR")];
724 entity_constraints
[wxT("throwframewait")] = __ViD
[wxT("UintR")];
726 entity_constraints
[wxT("animationscript")] = __ViD
[wxT("pathR")];
727 entity_constraints
[wxT("takedamagescript")] = __ViD
[wxT("pathR")];
728 entity_constraints
[wxT("script")] = __ViD
[wxT("pathR")];
729 entity_constraints
[wxT("ondeathscript")] = __ViD
[wxT("pathR")];
730 entity_constraints
[wxT("didhitscript")] = __ViD
[wxT("pathR")];
731 entity_constraints
[wxT("didblockscript")] = __ViD
[wxT("pathR")];
732 entity_constraints
[wxT("@cmd")] = __ViD
[wxT("noCstt")];
733 entity_constraints
[wxT("@script")] = __ViD
[wxT("noCstt")];
734 entity_constraints
[wxT("@end_script")] = __ViD
[wxT("noCstt")];
735 entity_constraints
[wxT("fastattack")] = __ViD
[wxT("boolR")];