- int j = -1;
- for (int i = 0; i < Mutators_MAX; ++i) {
- if (loaded_mutators[i] == mut)
- return true; // already added
- if (!(loaded_mutators[i]))
- j = i;
- }
- if (j < 0) {
- backtrace("WARNING: too many mutators, cannot add any more\n");
- return false;
+ int chan = MSG_ENTITY;
+ WriteHeader(chan, Mutator);
+ WriteString(chan, this.registered_id);
+ return true;
+}
+#endif
+
+#ifdef CSQC
+void NET_Mutator_Remove(entity this)
+{
+ string s = this.netname;
+ WITH(bool, mutator_log, true, {
+ FOREACH(Mutators, it.registered_id == s, Mutator_Remove(it));
+ });
+}
+NET_HANDLE(Mutator, bool isNew)
+{
+ make_pure(this);
+ string s = this.netname = ReadString();
+ return = true;
+ if (isNew)
+ {
+ make_pure(this);
+ this.entremove = NET_Mutator_Remove;
+ int added = 0;
+ WITH(bool, mutator_log, true, {
+ FOREACH(Mutators, it.registered_id == s, { Mutator_Add(it); ++added; });
+ });
+ if (added > 1) LOG_WARNF("Added more than one mutator for %s", s);