X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fbase.qc;h=f4761b884dca28175d58da08589a777c589722c2;hb=39380aa9e45dbc545f5fe241c0002ce65a6f635e;hp=fdf24edb75a399a526e085a7f28c11b6791c349c;hpb=1a507acfe146c88e76d252ddec4242210ac8923f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/base.qc b/qcsrc/server/mutators/base.qc index fdf24edb7..f4761b884 100644 --- a/qcsrc/server/mutators/base.qc +++ b/qcsrc/server/mutators/base.qc @@ -59,6 +59,7 @@ float CallbackChain_Remove(entity cb, float() func) entity e; float n; n = 0; + order = 0; for(e = cb; e.cbc_next; e = e.cbc_next) { while(e.cbc_next.cbc_func == func) @@ -100,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 not(loaded_mutators[i]) j = i; } if(j < 0) @@ -115,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)