Compare commits
	
		
			2 Commits
		
	
	
		
			c140ffe07d
			...
			6933e8bf68
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6933e8bf68 | |||
| 3d627c7530 | 
|  | @ -8,6 +8,10 @@ alias pronoun_xey    "impulse 26" | |||
| alias pronoun_ze_hir "impulse 27" | ||||
| alias pronoun_ze_zir "impulse 28" | ||||
| 
 | ||||
| set sc_cheats    0 | ||||
| set sc_lives     0 | ||||
| set sc_dist_ammo 0 | ||||
| 
 | ||||
| echo "To change your pronouns in-game use one of the pronoun_ commands." | ||||
| echo "You can get a list by typing 'pronoun_' and pressing tab." | ||||
| 
 | ||||
|  |  | |||
|  | @ -301,6 +301,9 @@ void() trigger_changelevel = { | |||
| */ | ||||
| 
 | ||||
| void() become_spectator = { | ||||
| 	float not_dead; | ||||
| 	entity pl; | ||||
| 
 | ||||
| 	self.health       = self.max_health; | ||||
| 	self.armortype    = 0; | ||||
| 	self.armorvalue   = 0; | ||||
|  | @ -319,6 +322,16 @@ void() become_spectator = { | |||
| 	self.frame        = 0; | ||||
| 	self.modelindex   = modelindex_eyes; | ||||
| 	W_SetCurrentAmmo(); | ||||
| 
 | ||||
| 	pl = find(world, classname, "player"); | ||||
| 	while(pl != world) { | ||||
| 		not_dead += pl.lives; | ||||
| 		pl = find(pl, classname, "player"); | ||||
| 	} | ||||
| 
 | ||||
| 	if(!not_dead) { | ||||
| 		all_players_are_dead = time; | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| void() respawn = { | ||||
|  | @ -339,7 +352,7 @@ void() respawn = { | |||
| 		player_respawned = TRUE; | ||||
| 		PutClientInServer(); | ||||
| 	} else { | ||||
| 		// restart the entire server | ||||
| 		// restart the map | ||||
| 		localcmd("restart\n"); | ||||
| 	} | ||||
| }; | ||||
|  |  | |||
|  | @ -269,6 +269,8 @@ string(string s) precache_file2 = #77; // registered version only | |||
| // set parm1... to the values at level start for coop respawn | ||||
| void(entity e) setspawnparms = #78; | ||||
| 
 | ||||
| float(string s) checkextension = #99; | ||||
| 
 | ||||
| // constants -----------------------------------------------------------------| | ||||
| 
 | ||||
| const vector VEC_ORIGIN = '0 0 0'; | ||||
|  | @ -630,6 +632,9 @@ float sf_lives; | |||
| float sf_dist_ammo; | ||||
| 
 | ||||
| float player_respawned; | ||||
| float all_players_are_dead; | ||||
| 
 | ||||
| float ext_con_set; | ||||
| 
 | ||||
| // fields --------------------------------------------------------------------| | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,6 +17,12 @@ void() worldspawn = { | |||
| 	lastspawn = world; | ||||
| 	InitBodyQue(); | ||||
| 
 | ||||
| 	if(cvar("pr_checkextension")) { | ||||
| 		if(checkextension("DP_CON_SET")) { | ||||
| 			ext_con_set = TRUE; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// custom map attributes | ||||
| 	if(self.model == "maps/e1m8.bsp") { | ||||
| 		cvar_set("sv_gravity", "100"); | ||||
|  | @ -179,16 +185,37 @@ void() worldspawn = { | |||
| }; | ||||
| 
 | ||||
| void() StartFrame = { | ||||
| 	float temp1flag; | ||||
| 	entity pl; | ||||
| 	float temp1flag, delta; | ||||
| 
 | ||||
| 	teamplay   = cvar("teamplay"); | ||||
| 	skill      = cvar("skill"); | ||||
| 	temp1flag  = cvar("temp1"); | ||||
| 	framecount = framecount + 1; | ||||
| 
 | ||||
| 	sf_cheats    = (temp1flag & SF_CHEATS) != 0; | ||||
| 	sf_lives     = bit_shift_right(temp1flag & SF_LIVES_MSK, SF_LIVES_BEG); | ||||
| 	sf_dist_ammo = (temp1flag & SF_DIST_AMMO) != 0; | ||||
| 	if(ext_con_set) { | ||||
| 		sf_cheats    = cvar("sc_cheats"); | ||||
| 		sf_lives     = cvar("sc_lives"); | ||||
| 		sf_dist_ammo = cvar("sc_dist_ammo"); | ||||
| 	} else { | ||||
| 		temp1flag    = cvar("temp1"); | ||||
| 		sf_cheats    = (temp1flag & SF_CHEATS) != 0; | ||||
| 		sf_lives     = bit_shift_right(temp1flag & SF_LIVES_MSK, SF_LIVES_BEG); | ||||
| 		sf_dist_ammo = (temp1flag & SF_DIST_AMMO) != 0; | ||||
| 	} | ||||
| 
 | ||||
| 	if(all_players_are_dead) { | ||||
| 		delta = time - all_players_are_dead; | ||||
| 		if(delta >= 9.95) { | ||||
| 			localcmd("restart\n"); | ||||
| 		} else if(rint(delta * 10) == rint(delta) * 10) { | ||||
| 			pl = find(world, classname, "player"); | ||||
| 			while(pl != world) { | ||||
| 				centerprint(pl, "Mission failed.\nRestarting in ", | ||||
| 				            ftos(10 - rint(delta)), " seconds"); | ||||
| 				pl = find(pl, classname, "player"); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| /* | ||||
|  |  | |||
							
								
								
									
										6
									
								
								todo
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								todo
									
									
									
									
									
								
							|  | @ -9,12 +9,12 @@ rename all functions to be lower_underscore | |||
| 
 | ||||
| core features: | ||||
| 
 | ||||
| add registercvar support | ||||
| restart map after 10 seconds when everyone is dead | ||||
| all done | ||||
| 
 | ||||
| useful features: | ||||
| 
 | ||||
| configurable enemy stats | ||||
| impulse command for spectating | ||||
| indicators for where other players are | ||||
| users can cancel map ends ("<name> initiated travel to <mapname>") | ||||
| 
 | ||||
|  | @ -29,9 +29,11 @@ third person player weapon models | |||
| 
 | ||||
| done: | ||||
| 
 | ||||
| add registercvar support | ||||
| corpse pickups have keys | ||||
| custom pronouns | ||||
| distributed ammo | ||||
| enforcers are broken | ||||
| lives counting | ||||
| no friendly fire | ||||
| restart map after 10 seconds when everyone is dead | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user