X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fbase.qc;h=1ba8f2663e730b8796da2e6fb8cd3b1592d61eb0;hb=06953d7d1a40e2ee6dd389ae50b20ef9c7f75557;hp=9be5745cb5e4ec24afbde80bee85c4e58bf94097;hpb=4e5f108197104a556fdbbbdb7b4fb1c03198dc02;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/base.qc b/qcsrc/server/mutators/base.qc index 9be5745cb..1ba8f2663 100644 --- a/qcsrc/server/mutators/base.qc +++ b/qcsrc/server/mutators/base.qc @@ -91,7 +91,7 @@ float CallbackChain_Call(entity cb) return r; // callbacks return an error status, so 0 is default return value } -#define MAX_MUTATORS 8 +#define MAX_MUTATORS 15 string loaded_mutators[MAX_MUTATORS]; float Mutator_Add(mutatorfunc_t func, string name) { @@ -101,7 +101,7 @@ float Mutator_Add(mutatorfunc_t func, string name) { if(name == loaded_mutators[i]) return 1; // already added - if(!loaded_mutators[i]) + if (!(loaded_mutators[i])) j = i; } if(j < 0) @@ -116,8 +116,14 @@ float Mutator_Add(mutatorfunc_t func, string name) // good return 1; } - backtrace("WARNING: when adding mutator: adding failed\n"); - Mutator_Remove(func, name); + + backtrace("WARNING: when adding mutator: adding failed, rolling back\n"); + + if(func(MUTATOR_ROLLING_BACK) != 0) + { + // baaaaad + error("WARNING: when adding mutator: rolling back failed"); + } return 0; } void Mutator_Remove(float(float) func, string name)