#ifdef SVQC
.string chmap, gametype;
-void spawnfunc_target_changelevel_use()
+.entity chlevel_targ;
+
+void target_changelevel_use(entity this, entity actor, entity trigger)
{
- if(self.gametype != "")
- MapInfo_SwitchGameType(MapInfo_Type_FromString(self.gametype));
+ if(this.spawnflags & 2)
+ {
+ // simply don't react if a non-player triggers it
+ if(!IS_PLAYER(actor)) { return; }
+
+ actor.chlevel_targ = this;
+
+ int plnum = 0;
+ int realplnum = 0;
+ // let's not count bots
+ FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), {
+ ++realplnum;
+ if(it.chlevel_targ == this)
+ ++plnum;
+ });
+ if(plnum < ceil(realplnum * min(1, this.count))) // 70% of players
+ return;
+ }
- if (self.chmap == "")
+ if(this.gametype != "")
+ MapInfo_SwitchGameType(MapInfo_Type_FromString(this.gametype));
+
+ if (this.chmap == "")
localcmd("endmatch\n");
else
- localcmd(strcat("changelevel ", self.chmap, "\n"));
+ localcmd(strcat("changelevel ", this.chmap, "\n"));
}
-void spawnfunc_target_changelevel()
+spawnfunc(target_changelevel)
{
- self.use = spawnfunc_target_changelevel_use;
+ this.use = target_changelevel_use;
+
+ if(!this.count) { this.count = 0.7; }
}
#endif