add automatic pronoun detection for FTE_STRINGS engines
This commit is contained in:
		
							parent
							
								
									af7d5bd846
								
							
						
					
					
						commit
						10d98c67c0
					
				| 
						 | 
					@ -1,5 +1,35 @@
 | 
				
			||||||
// client.qc: player-adjacent functions
 | 
					// client.qc: player-adjacent functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string(float pro) pronoun_subject = {
 | 
				
			||||||
 | 
						switch(pro) {
 | 
				
			||||||
 | 
							case PRO_NONE: return "none";
 | 
				
			||||||
 | 
							case PRO_FAE:  return "fae";
 | 
				
			||||||
 | 
							case PRO_HE:   return "he";
 | 
				
			||||||
 | 
							case PRO_IT:   return "it";
 | 
				
			||||||
 | 
							case PRO_SHE:  return "she";
 | 
				
			||||||
 | 
							case PRO_THEY: return "they";
 | 
				
			||||||
 | 
							case PRO_XEY:  return "xey";
 | 
				
			||||||
 | 
							case PRO_ZE_H: return "ze";
 | 
				
			||||||
 | 
							case PRO_ZE_Z: return "ze";
 | 
				
			||||||
 | 
							default:       return "unknown";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string(float pro) pronoun_possessive = {
 | 
				
			||||||
 | 
						switch(pro) {
 | 
				
			||||||
 | 
							case PRO_NONE: return "none";
 | 
				
			||||||
 | 
							case PRO_FAE:  return "faer";
 | 
				
			||||||
 | 
							case PRO_HE:   return "his";
 | 
				
			||||||
 | 
							case PRO_IT:   return "its";
 | 
				
			||||||
 | 
							case PRO_SHE:  return "her";
 | 
				
			||||||
 | 
							case PRO_THEY: return "their";
 | 
				
			||||||
 | 
							case PRO_XEY:  return "xyr";
 | 
				
			||||||
 | 
							case PRO_ZE_H: return "hir";
 | 
				
			||||||
 | 
							case PRO_ZE_Z: return "zir";
 | 
				
			||||||
 | 
							default:       return "unknown";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
=============================================================================
 | 
					=============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +83,8 @@ void() SetNewParms = {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void() DecodeLevelParms = {
 | 
					void() DecodeLevelParms = {
 | 
				
			||||||
 | 
						float ofs, ofs2, pro;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(serverflags) {
 | 
						if(serverflags) {
 | 
				
			||||||
		if(world.model == "maps/start.bsp") {
 | 
							if(world.model == "maps/start.bsp") {
 | 
				
			||||||
			SetNewParms(); // take away all stuff on starting new episode
 | 
								SetNewParms(); // take away all stuff on starting new episode
 | 
				
			||||||
| 
						 | 
					@ -69,6 +101,19 @@ void() DecodeLevelParms = {
 | 
				
			||||||
	self.weapon       = parm8;
 | 
						self.weapon       = parm8;
 | 
				
			||||||
	self.armortype    = parm9 * 0.01;
 | 
						self.armortype    = parm9 * 0.01;
 | 
				
			||||||
	self.pronoun      = parm10;
 | 
						self.pronoun      = parm10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(ext_strings) {
 | 
				
			||||||
 | 
							ofs = strstrofs(self.netname, "(", 0);
 | 
				
			||||||
 | 
							if(ofs != -1) {
 | 
				
			||||||
 | 
								for(pro = PRO_NONE; pro < PRO_MAX; pro++) {
 | 
				
			||||||
 | 
									ofs2 = strstrofs(self.netname, pronoun_possessive(pro), ofs);
 | 
				
			||||||
 | 
									if(ofs2 == ofs + 1 && strstrofs(self.netname, ")", ofs) != -1) {
 | 
				
			||||||
 | 
										self.pronoun = pro;
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					@ -1105,36 +1150,6 @@ void() cheat_quad = {
 | 
				
			||||||
	self.items                 = self.items | IT_QUAD;
 | 
						self.items                 = self.items | IT_QUAD;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
string(float pro) pronoun_subject = {
 | 
					 | 
				
			||||||
	switch(pro) {
 | 
					 | 
				
			||||||
		case PRO_NONE: return "none";
 | 
					 | 
				
			||||||
		case PRO_FAE:  return "fae";
 | 
					 | 
				
			||||||
		case PRO_HE:   return "he";
 | 
					 | 
				
			||||||
		case PRO_IT:   return "it";
 | 
					 | 
				
			||||||
		case PRO_SHE:  return "she";
 | 
					 | 
				
			||||||
		case PRO_THEY: return "they";
 | 
					 | 
				
			||||||
		case PRO_XEY:  return "xey";
 | 
					 | 
				
			||||||
		case PRO_ZE_H: return "ze";
 | 
					 | 
				
			||||||
		case PRO_ZE_Z: return "ze";
 | 
					 | 
				
			||||||
		default:       return "unknown";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
string(float pro) pronoun_possessive = {
 | 
					 | 
				
			||||||
	switch(pro) {
 | 
					 | 
				
			||||||
		case PRO_NONE: return "none";
 | 
					 | 
				
			||||||
		case PRO_FAE:  return "faer";
 | 
					 | 
				
			||||||
		case PRO_HE:   return "his";
 | 
					 | 
				
			||||||
		case PRO_IT:   return "its";
 | 
					 | 
				
			||||||
		case PRO_SHE:  return "her";
 | 
					 | 
				
			||||||
		case PRO_THEY: return "their";
 | 
					 | 
				
			||||||
		case PRO_XEY:  return "xyr";
 | 
					 | 
				
			||||||
		case PRO_ZE_H: return "hir";
 | 
					 | 
				
			||||||
		case PRO_ZE_Z: return "zir";
 | 
					 | 
				
			||||||
		default:       return "unknown";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void(float pro) change_pronoun = {
 | 
					void(float pro) change_pronoun = {
 | 
				
			||||||
	pro = minmax(pro, PRO_NONE, PRO_MAX - 1);
 | 
						pro = minmax(pro, PRO_NONE, PRO_MAX - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -271,6 +271,17 @@ void(entity e) setspawnparms = #78;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float(string s) checkextension = #99;
 | 
					float(string s) checkextension = #99;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float(string str, string sub, float startpos) strstrofs = #221;
 | 
				
			||||||
 | 
					float(string str, float ofs) str2chr = #222;
 | 
				
			||||||
 | 
					string(float... c) chr2str = #223;
 | 
				
			||||||
 | 
					string(float ccase, float calpha, float cnum, string... s) strconv = #224;
 | 
				
			||||||
 | 
					string(float chars, string... s) strpad = #225;
 | 
				
			||||||
 | 
					string(string info, string key, string... value) infoadd = #226;
 | 
				
			||||||
 | 
					string(string info, string key) infoget = #227;
 | 
				
			||||||
 | 
					float(string s1, string s2, float len) strncmp = #228;
 | 
				
			||||||
 | 
					float(string s1, string s2) strcasecmp = #229;
 | 
				
			||||||
 | 
					float(string s1, string s2, float len) strncasecmp = #230;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// constants -----------------------------------------------------------------|
 | 
					// constants -----------------------------------------------------------------|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const vector VEC_ORIGIN = '0 0 0';
 | 
					const vector VEC_ORIGIN = '0 0 0';
 | 
				
			||||||
| 
						 | 
					@ -644,6 +655,7 @@ float player_respawned;
 | 
				
			||||||
float all_players_are_dead;
 | 
					float all_players_are_dead;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float ext_con_set;
 | 
					float ext_con_set;
 | 
				
			||||||
 | 
					float ext_strings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// fields --------------------------------------------------------------------|
 | 
					// fields --------------------------------------------------------------------|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,9 +18,8 @@ void() worldspawn = {
 | 
				
			||||||
	InitBodyQue();
 | 
						InitBodyQue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(cvar("pr_checkextension")) {
 | 
						if(cvar("pr_checkextension")) {
 | 
				
			||||||
		if(checkextension("DP_CON_SET")) {
 | 
							ext_con_set = checkextension("DP_CON_SET");
 | 
				
			||||||
			ext_con_set = TRUE;
 | 
							ext_strings = checkextension("FTE_STRINGS");
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// custom map attributes
 | 
						// custom map attributes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user