diff --git a/engine/client/cl_ents.c b/engine/client/cl_ents.c index 67b4c0bf..8bdb5a2e 100644 --- a/engine/client/cl_ents.c +++ b/engine/client/cl_ents.c @@ -3347,8 +3347,10 @@ void CL_LinkPacketEntities (void) if (!(dl->flags & PFLAGS_FULLDYNAMIC)) //corona-only lights shouldn't do much else. { dl->flags &= ~(LFLAG_LIGHTMAP|LFLAG_FLASHBLEND); +#ifdef RTLIGHTS /*make sure there's no rtlight*/ memset(dl->lightcolourscales, 0, sizeof(dl->lightcolourscales)); +#endif } dl->corona = (state->lightpflags & PFLAGS_CORONA)?1:0; dl->coronascale = 0.25; diff --git a/engine/qclib/qcc.h b/engine/qclib/qcc.h index fdbee293..8c7402a5 100644 --- a/engine/qclib/qcc.h +++ b/engine/qclib/qcc.h @@ -409,7 +409,7 @@ typedef union QCC_eval_s const extern unsigned int type_size[]; //extern QCC_def_t *def_for_type[9]; -extern QCC_type_t *type_void, *type_string, *type_float, *type_vector, *type_entity, *type_field, *type_function, *type_pointer, *type_floatpointer, *type_intpointer, *type_integer, *type_variant, *type_floatfield; +extern QCC_type_t *type_void, *type_string, *type_float, *type_vector, *type_entity, *type_field, *type_function, *type_floatfunction, *type_pointer, *type_floatpointer, *type_intpointer, *type_integer, *type_variant, *type_floatfield; struct QCC_function_s { diff --git a/engine/qclib/qcc_pr_comp.c b/engine/qclib/qcc_pr_comp.c index 07def2af..286713b3 100644 --- a/engine/qclib/qcc_pr_comp.c +++ b/engine/qclib/qcc_pr_comp.c @@ -5517,16 +5517,20 @@ QCC_ref_t *QCC_PR_ParseRefValue (QCC_ref_t *refbuf, QCC_type_t *assumeclass, pbo if (!d) { - if ( (!strcmp(name, "random" )) || - (!strcmp(name, "randomv")) || + if ( (!strcmp(name, "randomv")) || (!strcmp(name, "sizeof")) || (!strcmp(name, "entnum")) || (!strcmp(name, "va_arg")) || - (!strcmp(name, "_"))) //intrinsics, any old function with no args will do. + (!strcmp(name, "_")) ) //intrinsics, any old function with no args will do. { d = QCC_PR_GetDef (type_function, name, NULL, true, 0, false); d->initialized = 0; } + else if ( (!strcmp(name, "random" )) ) //intrinsics, any old function with no args will do. returning a float just in case people declare things in the wrong order + { + d = QCC_PR_GetDef (type_floatfunction, name, NULL, true, 0, false); + d->initialized = 0; + } else if (keyword_class && !strcmp(name, "this")) { if (!pr_classtype) diff --git a/engine/qclib/qcc_pr_lex.c b/engine/qclib/qcc_pr_lex.c index c4290ce5..888fbfcf 100644 --- a/engine/qclib/qcc_pr_lex.c +++ b/engine/qclib/qcc_pr_lex.c @@ -67,32 +67,22 @@ char *pr_punctuationremap[] = //a nice bit of evilness. {"&&", "||", "<=", ">=","==", "!=", "/=", "*=", "+=", "-=", "|=", "&~=", "|=", "&~=", "&=", "++", "--", ".", "^=", "::", ";", ",", "!", "*", "/", "(", ")", "-", "+", "=", "[", "]", "{", "}", "...", "..", ".", "<<", "<", ">>", ">" , "?", "#" , "@", "&" , "|", "^", "~", ":", NULL}; // simple types. function types are dynamically allocated -QCC_type_t *type_void;// = {ev_void/*, &def_void*/}; -QCC_type_t *type_string;// = {ev_string/*, &def_string*/}; -QCC_type_t *type_float;// = {ev_float/*, &def_float*/}; -QCC_type_t *type_vector;// = {ev_vector/*, &def_vector*/}; -QCC_type_t *type_entity;// = {ev_entity/*, &def_entity*/}; -QCC_type_t *type_field;// = {ev_field/*, &def_field*/}; -QCC_type_t *type_function;// = {ev_function/*, &def_function*/,NULL,&type_void}; -// type_function is a void() function used for state defs -QCC_type_t *type_pointer;// = {ev_pointer/*, &def_pointer*/}; -QCC_type_t *type_integer;// = {ev_integer/*, &def_integer*/}; -QCC_type_t *type_variant;// = {ev_integer/*, &def_integer*/}; -QCC_type_t *type_floatpointer; -QCC_type_t *type_intpointer; +QCC_type_t *type_void; //void +QCC_type_t *type_string; //string +QCC_type_t *type_float; //float +QCC_type_t *type_vector; //vector +QCC_type_t *type_entity; //entity +QCC_type_t *type_field; //.void +QCC_type_t *type_function; //void() +QCC_type_t *type_floatfunction; //float() +QCC_type_t *type_pointer; //??? * - careful with this one +QCC_type_t *type_integer; //int +QCC_type_t *type_variant; //__variant +QCC_type_t *type_floatpointer; //float * +QCC_type_t *type_intpointer; //int * QCC_type_t *type_floatfield;// = {ev_field/*, &def_field*/, NULL, &type_float}; -/*QCC_def_t def_void = {type_void, "temp"}; -QCC_def_t def_string = {type_string, "temp"}; -QCC_def_t def_float = {type_float, "temp"}; -QCC_def_t def_vector = {type_vector, "temp"}; -QCC_def_t def_entity = {type_entity, "temp"}; -QCC_def_t def_field = {type_field, "temp"}; -QCC_def_t def_function = {type_function, "temp"}; -QCC_def_t def_pointer = {type_pointer, "temp"}; -QCC_def_t def_integer = {type_integer, "temp"}; -*/ QCC_def_t def_ret, def_parms[MAX_PARMS]; //QCC_def_t *def_for_type[9] = {&def_void, &def_string, &def_float, &def_vector, &def_entity, &def_field, &def_function, &def_pointer, &def_integer}; diff --git a/engine/qclib/qccmain.c b/engine/qclib/qccmain.c index 8983bf8a..7559ab0e 100644 --- a/engine/qclib/qccmain.c +++ b/engine/qclib/qccmain.c @@ -1810,6 +1810,7 @@ void QCC_PR_BeginCompilation (void *memory, int memsize) type_entity = QCC_PR_NewType("entity", ev_entity, true); type_field = QCC_PR_NewType("__field", ev_field, false); type_function = QCC_PR_NewType("__function", ev_function, false); + type_function->aux_type = type_void; type_pointer = QCC_PR_NewType("__pointer", ev_pointer, false); type_integer = QCC_PR_NewType("__integer", ev_integer, true); type_variant = QCC_PR_NewType("variant", ev_variant, true); @@ -1823,8 +1824,8 @@ void QCC_PR_BeginCompilation (void *memory, int memsize) type_intpointer->aux_type = type_integer; type_floatpointer = QCC_PR_NewType("__floatpointer", ev_pointer, false); type_floatpointer->aux_type = type_float; - - type_function->aux_type = type_void; + type_floatfunction = QCC_PR_NewType("__floatfunction", ev_function, false); + type_floatfunction->aux_type = type_float; //type_field->aux_type = type_float;