+#include "spawn.qh"
#if defined(CSQC)
#elif defined(MENUQC)
#elif defined(SVQC)
// "classname" "target_spawn"
// "message" "fieldname value fieldname value ..."
// "spawnflags"
-// 1 = call the spawn function
-// 2 = trigger on map load
+// ON_MAPLOAD = trigger on map load
float target_spawn_initialized;
.void(entity this) target_spawn_spawnfunc;
.float target_spawn_id;
float target_spawn_count;
-void target_spawn_helper_setmodel()
-{SELFPARAM();
- _setmodel(self, self.model);
+void target_spawn_helper_setmodel(entity this)
+{
+ _setmodel(this, this.model);
}
-void target_spawn_helper_setsize()
-{SELFPARAM();
- setsize(self, self.mins, self.maxs);
+void target_spawn_helper_setsize(entity this)
+{
+ setsize(this, this.mins, this.maxs);
}
void target_spawn_edit_entity(entity this, entity e, string msg, entity kt, entity t2, entity t3, entity t4, entity act, entity trigger)
data = stov(db_get(TemporaryDB, strcat("/target_spawn/field/", key)));
if(data.y == 0) // undefined field, i.e., invalid type
{
- LOG_INFO("target_spawn: invalid/unknown entity key ", key, " specified, ignored!\n");
+ LOG_INFO("target_spawn: invalid/unknown entity key ", key, " specified, ignored!");
continue;
}
}
if(time < act.pushltime)
valueent = act.pusher;
else
- valueent = world;
+ valueent = NULL;
value = "";
}
else if(value == "target")
}
else if(value == "time")
{
- valueent = world;
+ valueent = NULL;
value = ftos(time);
}
else
{
- LOG_INFO("target_spawn: invalid/unknown variable replacement ", value, " specified, ignored!\n");
+ LOG_INFO("target_spawn: invalid/unknown variable replacement ", value, " specified, ignored!");
continue;
}
{
if(value != "")
{
- LOG_INFO("target_spawn: try to get a field of a non-entity, ignored!\n");
+ LOG_INFO("target_spawn: try to get a field of a non-entity, ignored!");
continue;
}
data2 = stov(db_get(TemporaryDB, strcat("/target_spawn/field/", valuefield)));
if(data2_y == 0) // undefined field, i.e., invalid type
{
- LOG_INFO("target_spawn: invalid/unknown entity key replacement ", valuefield, " specified, ignored!\n");
+ LOG_INFO("target_spawn: invalid/unknown entity key replacement ", valuefield, " specified, ignored!");
continue;
}
value = getentityfieldstring(data2_x, valueent);
value = vtos(stov(value) + stov(valueoffset));
break;
default:
- LOG_INFO("target_spawn: only string, float and vector fields can do calculations, calculation ignored!\n");
+ LOG_INFO("target_spawn: only string, float and vector fields can do calculations, calculation ignored!");
break;
}
}
value = vtos(stov(value) + random() * data2_x * '1 0 0' + random() * data2_y * '0 1 0' + random() * data2_z * '0 0 1');
break;
default:
- LOG_INFO("target_spawn: only float and vector fields can do random calculations, calculation ignored!\n");
+ LOG_INFO("target_spawn: only float and vector fields can do random calculations, calculation ignored!");
break;
}
}
value = strcat("target_spawn_helper", value);
putentityfieldstring(target_spawn_spawnfunc_field, e, value);
- WITHSELF(e, e.target_spawn_spawnfunc(e));
+ e.target_spawn_spawnfunc(e);
// We called an external function, so we have to re-tokenize msg.
n = tokenize_console(msg);
this,
e,
this.message,
- find(world, targetname, this.killtarget),
- find(world, targetname, this.target2),
- find(world, targetname, this.target3),
- find(world, targetname, this.target4),
+ find(NULL, targetname, this.killtarget),
+ find(NULL, targetname, this.target2),
+ find(NULL, targetname, this.target3),
+ find(NULL, targetname, this.target4),
actor,
trigger
);
return true;
++c; // increase count to not include MYSELF
- for(e = world; (e = findfloat(e, target_spawn_id, this.target_spawn_id)); --c)
+ for(e = NULL; (e = findfloat(e, target_spawn_id, this.target_spawn_id)); --c)
;
// if c now is 0, we have AT LEAST the given count (maybe more), so don't spawn any more
else
{
// edit entity
- for(entity e = world; (e = find(e, targetname, this.target)); )
- target_spawn_useon(e, this, actor, trigger);
+ FOREACH_ENTITY_STRING(targetname, this.target,
+ {
+ target_spawn_useon(it, this, actor, trigger);
+ });
}
}
-void target_spawn_spawnfirst()
-{SELFPARAM();
- entity act = self.target_spawn_activator;
- if(self.spawnflags & 2)
+void target_spawn_spawnfirst(entity this)
+{
+ entity act = this.target_spawn_activator;
+ if(this.spawnflags & ON_MAPLOAD)
target_spawn_use(this, act, NULL);
}
spawnfunc(target_spawn)
{
initialize_field_db();
- self.use1 = target_spawn_use;
- self.message = strzone(strreplace("'", "\"", self.message));
- self.target_spawn_id = ++target_spawn_count;
- InitializeEntity(self, target_spawn_spawnfirst, INITPRIO_LAST);
+ this.use = target_spawn_use;
+ this.message = strzone(strreplace("'", "\"", this.message));
+ this.target_spawn_id = ++target_spawn_count;
+ InitializeEntity(this, target_spawn_spawnfirst, INITPRIO_LAST);
}
#endif