Talk:Mob (video games)

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

"Movable object block"[edit]

I see that mob isn't etymologically or semantically related to movable object block as seen at Sprite_(computer_graphics)#Synonyms, but since the latter kind of object often is used to implement enemy characters in 2D games, I wonder if it would be useful to have a "Not to be confused with MOB as a synonym of sprite". 24.178.47.47 (talk) 19:34, 1 February 2015 (UTC)[reply]

I've never even heard of this term, and it doesn't have any source on the Sprite-article. Is it really a thing? Either way, I somewhat doubt that anyone who is looking for "Moveable Object Block" doesn't know that it refers to a sprite (or another synonym). I don't think this usage of MOB is common enough. ~Mable (chat) 20:11, 1 February 2015 (UTC)[reply]
It would be too inefficient to process immobile entities, like say trees and rocks, as possessing intelligence and moving, therefore most games (especially online, when bandwidth is an issue), including MUDs, have two tables of entities: dynamic (mobile) and static (immobile/fixed/dodads). Although in some games, like Ultima 8 and Ultima Online, entities can change from static to dynamic, if they are moved or set on fire. Therefore the term. It has nothing to do with sprites, because both mobs and non-mobs can be drawn as sprites or say tiles (like ASCII letters in roguelike MUDs), but more with processing them with the game's physics - a monster can react to player, but a a tree wont. NikitaSadkov (talk) 21:59, 22 November 2018 (UTC)[reply]

Mook[edit]

Mook (gaming) redirects here but the connection is unobvious, the word mook does not appear in the article. 2001:6A0:0:2333:5604:A6FF:FE1E:34F6 (talk) 11:28, 5 January 2017 (UTC)[reply]

Isn't "mook" just another word for mob, just used much less frequently, to the point where it is barely worth mentioning in this article? ~Mable (chat) 12:35, 5 January 2017 (UTC)[reply]
According to wiktionary right here, "mook" is know from at least 1930-s, while mob is undeniably from MUDs of early 1990-s. Also only "mook" (generic enemy/lackey) is EVER used in discussing non-gaming content - i.e. movies, literature, never "mob". And it is pretty logical since mobile/object distinction is obviously important in context of MUD/MMO engine, but have no sense in non-gaming context. IMO those two are very different words and "mook" redirect should be removed. --Rowaa[SR13] (talk) 14:50, 13 May 2020 (UTC)[reply]

Move discussion in progress[edit]

There is a move discussion in progress on Talk:First-person (gaming) which affects this page. Please participate on that page and not in this talk page section. Thank you. —RMCD bot 19:01, 2 September 2018 (UTC)[reply]

Etymology/also known cleanup[edit]

"Mob" = "mobile"[edit]

Mob is short for "mobile". Not "mobile object", mobiles and objects are two distinctly different categories in Diku. 3 of 4 references used too say it is "mobile", without word object. I'll list results of grep against DikuMUD code down this comment as reference, but I'm not sure on how to reflect those refs in article. Actually the only quote to really use "mobile object" wording was misquoted here on WP citing only "mobile" instead. Author of "Designing Virtual Worlds" indeed says "mobile objects" while discussing MUD1. Still Diku had much stronger impact on adopting this word for wide use. I'll try to reflect it in wording.

I'm also removing rest of the fluff because it keeps appearing verbatim in random posts on forums (search for "monster or beast" previously mentioned in first sentence of this article and see 99% hits to be copypasta from old version of this article), on other gaming wikis and then creeping back into this article after being removed because "look how many hits of this stuff is on 'net, I must edit it into WP right now!". I believe it is called WP:CIRCULAR.

Removing also known as "enemy"[edit]

No, it is not also known as that. It is like going into "Soldier" article and writing "Soldier", also known as enemy. Yes, they ARE known like that sometimes, but they're not synonyms. Not all soldiers are enemies, and not all mobs are enemies as well. The very next sentence in article covers that, saying "usage of the term may be limited to hostile NPCs", implying that it also may be not limited to it. And indeed in Diku every NPC is a "mob", no matter if it is rat or shopkeeper, and, one among the biggest current trendsetters - WoW or Minecraft - freely use "friendly mob" and "passive mob"

Removing also known as "mook"[edit]

I've already mentioned it in other comment above, but those two are distinct words. "Mook" means "generic enemy/lackey" and, according to wictionary, is known for about half-century before coining of "mob". "Mook" is heavily used in discussing non-gaming - i.e. movies or literature - stories. Actually I've never seen "mob" - being very gamey-enginey term EVER used in such non-gaming discussions. It would be strange to mention that something in book is a "mobile", isn't it? I'm less sure on that, but I have feeling that "mob" is hardly ever used outside MMO or RPG discussions, where it is widely known exactly because of its origins in wildly popular at the time MMORPG - i.e. you will hardly find word "mob" in discussion about a platformer. Also just like with "enemy" above, even if some character could be referred both as mob and mook, they're distinctly not synonyms. Boss mob is absolutely not a mook. Mook is a different word and its redirect to mob should be removed.

For this reason I'm also removing "spiked mob" example. Google have single page of results for spiked "mob" supertux, most of them WP itself or its scrappers. As I've said, pretty much nobody calls platformer enemies "mobs".

Removing "refers to either a single character or a multitude of characters in a group as a mob[edit]

No. It's "mobs" in plural. For example "trash mob" is a single instance of non-boss enemy, not a group of them. Sorry, I can't cite anything on that except my participation in thousands of discussions about "trash mobs", "high-level mobs", specific zone "mobs", but this sentence I'm about to remove is not referencing anything either. There distinct English word "mob", of course, but this particular article is not about it.

Removing "dumb mob" as a term, but leaving explanation that most mobs have no special programming[edit]

It is not a "term". The referenced quote in book explains that most mobs are dumb in sense of having no special programming beyond generic fight, but never claims it is a specific term. The only relevant hit on Google search is this very article. There's zero hits for "dumb" in Diku code. Once again, it is like going into "Human" article and writing "most humans are regular humans".

Removing backronyms from etymology[edit]

Backronyms are not etymology and no citations were provided since [citation needed] was added. I've also tracked the most likely source of "monster or beast" quote: https://books.google.com/books?id=xzMYYrsDaAEC&pg=PA375&dq=mob+%22Monster+Or+Beast%22#v=onepage&q=mob%20%22Monster%20Or%20Beast%22 As you can see, the book, once again, never claims that it is have anything with etymology, but merely explains what "mob" is.

Code reference[edit]

Here's the results against Diku MUD Gamma (earliest) release. It was recently uploaded to GitHub, so you can check it online as well: https://github.com/Seifert69/DikuMUD-Gamma. The list is a result of grep -R -i -n "mobile\|mob" dm-dist-gamma. Copyright comments show years 1990, 1991 as original release date.

Extended content
dm-dist-gamma/act.informative.c:207:			/* A player char or a mobile without long descr, or not in default pos. */
dm-dist-gamma/act.wizard.c:26:extern struct index_data *mob_index;
dm-dist-gamma/act.wizard.c:140:	struct char_data *target_mob;
dm-dist-gamma/act.wizard.c:167:	else if (target_mob = get_char_vis(ch, loc_str))
dm-dist-gamma/act.wizard.c:168:		location = target_mob->in_room;
dm-dist-gamma/act.wizard.c:191:	for (target_mob = world[location].people; target_mob; target_mob =
dm-dist-gamma/act.wizard.c:192:		target_mob->next_in_room)
dm-dist-gamma/act.wizard.c:193:		if (ch == target_mob)
dm-dist-gamma/act.wizard.c:206:	struct char_data *target_mob, *pers;
dm-dist-gamma/act.wizard.c:235:	else if (target_mob = get_char_vis(ch, buf))
dm-dist-gamma/act.wizard.c:236:		location = target_mob->in_room;
dm-dist-gamma/act.wizard.c:366:				strcat(buf,(!IS_NPC(k) ? "(PC)\n\r" : (!IS_MOB(k) ? "(NPC)\n\r" : "(MOB)\n\r")));
dm-dist-gamma/act.wizard.c:602:		/* mobile in world */
dm-dist-gamma/act.wizard.c:621:			   (!IS_NPC(k) ? "PC" : (!IS_MOB(k) ? "NPC" : "MOB")),
dm-dist-gamma/act.wizard.c:625:			if (IS_MOB(k)) {
dm-dist-gamma/act.wizard.c:626:				sprintf(buf, "V-Number [%d]\n\r", mob_index[k->nr].virtual);
dm-dist-gamma/act.wizard.c:738:			if (IS_MOB(k)) {
dm-dist-gamma/act.wizard.c:739:				strcpy(buf, "\n\rMobile Special procedure : ");
dm-dist-gamma/act.wizard.c:740:				strcat(buf, (mob_index[k->nr].func ? "Exists\n\r" : "None\n\r"));
dm-dist-gamma/act.wizard.c:810:			send_to_char("No mobile or object by that name in the world\n\r", ch);
dm-dist-gamma/act.wizard.c:1043:	struct char_data *mob;
dm-dist-gamma/act.wizard.c:1048:	extern int top_of_mobt;
dm-dist-gamma/act.wizard.c:1069:		if ((r_num = real_mobile(number)) < 0)
dm-dist-gamma/act.wizard.c:1074:		mob = read_mobile(r_num, REAL);
dm-dist-gamma/act.wizard.c:1075:		char_to_room(mob, ch->in_room);
dm-dist-gamma/act.wizard.c:1079:		act("$n has created $N!", FALSE, ch, 0, mob, TO_ROOM);
dm-dist-gamma/act.wizard.c:1103:/* clean a room of all mobiles and objects */
dm-dist-gamma/comm.c:87:void mobile_activity(void);
dm-dist-gamma/comm.c:404:		if (!(pulse % PULSE_MOBILE))
dm-dist-gamma/comm.c:405:			mobile_activity();
dm-dist-gamma/constants.c:426:	"NO_MOB",
dm-dist-gamma/db.c:45:FILE *mob_f,                          /* file containing mob prototypes  */
dm-dist-gamma/db.c:49:struct index_data *mob_index;         /* index table for mobile file     */
dm-dist-gamma/db.c:53:int top_of_mobt = 0;                  /* top of mobile index table       */
dm-dist-gamma/db.c:119:	log("Opening mobile, object and help files.");
dm-dist-gamma/db.c:120:	if (!(mob_f = fopen(MOB_FILE, "r")))
dm-dist-gamma/db.c:145:	log("Generating index tables for mobile and object files.");
dm-dist-gamma/db.c:146:	mob_index = generate_indices(mob_f, &top_of_mobt);
dm-dist-gamma/db.c:167:		log("   Mobiles.");
dm-dist-gamma/db.c:168:		assign_mobiles();
dm-dist-gamma/db.c:648:						real_mobile(zone_table[zone].cmd[comm].arg1);
dm-dist-gamma/db.c:694:						real_mobile(zone_table[zone].cmd[comm].arg1);
dm-dist-gamma/db.c:709:						real_mobile(zone_table[zone].cmd[comm].arg2);
dm-dist-gamma/db.c:715:						real_mobile(zone_table[zone].cmd[comm].arg2);
dm-dist-gamma/db.c:939:/* read a mobile from MOB_FILE */
dm-dist-gamma/db.c:940:struct char_data *read_mobile(int nr, int type)
dm-dist-gamma/db.c:944:	struct char_data *mob;
dm-dist-gamma/db.c:950:		if ((nr = real_mobile(nr)) < 0)
dm-dist-gamma/db.c:952:		sprintf(buf, "Mobile (V) %d does not exist in database.", i);
dm-dist-gamma/db.c:956:	fseek(mob_f, mob_index[nr].pos, 0);
dm-dist-gamma/db.c:958:	CREATE(mob, struct char_data, 1);
dm-dist-gamma/db.c:959:	clear_char(mob);
dm-dist-gamma/db.c:963:	mob->player.name = fread_string(mob_f);
dm-dist-gamma/db.c:964:	mob->player.short_descr = fread_string(mob_f);
dm-dist-gamma/db.c:965:	mob->player.long_descr = fread_string(mob_f);
dm-dist-gamma/db.c:966:	mob->player.description = fread_string(mob_f);
dm-dist-gamma/db.c:967:	mob->player.title = 0;
dm-dist-gamma/db.c:971:	fscanf(mob_f, "%d ", &tmp);
dm-dist-gamma/db.c:972:	mob->specials.act = tmp;
dm-dist-gamma/db.c:973:	SET_BIT(mob->specials.act, ACT_ISNPC);
dm-dist-gamma/db.c:975:	fscanf(mob_f, " %d ", &tmp);
dm-dist-gamma/db.c:976:	mob->specials.affected_by = tmp;
dm-dist-gamma/db.c:978:	fscanf(mob_f, " %d ", &tmp);
dm-dist-gamma/db.c:979:	mob->specials.alignment = tmp;
dm-dist-gamma/db.c:981:	fscanf(mob_f, " %c \n", &letter);
dm-dist-gamma/db.c:985:		mob->abilities.str   = 11;
dm-dist-gamma/db.c:986:		mob->abilities.intel = 11; 
dm-dist-gamma/db.c:987:		mob->abilities.wis   = 11;
dm-dist-gamma/db.c:988:		mob->abilities.dex   = 11;
dm-dist-gamma/db.c:989:		mob->abilities.con   = 11;
dm-dist-gamma/db.c:991:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:992:		GET_LEVEL(mob) = tmp;
dm-dist-gamma/db.c:994:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:995:		mob->points.hitroll = 20-tmp;
dm-dist-gamma/db.c:997:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:998:		mob->points.armor = 10*tmp;
dm-dist-gamma/db.c:1000:		fscanf(mob_f, " %Dd%D+%D ", &tmp, &tmp2, &tmp3);
dm-dist-gamma/db.c:1001:		mob->points.max_hit = dice(tmp, tmp2)+tmp3;
dm-dist-gamma/db.c:1002:		mob->points.hit = mob->points.max_hit;
dm-dist-gamma/db.c:1004:		fscanf(mob_f, " %Dd%D+%D \n", &tmp, &tmp2, &tmp3);
dm-dist-gamma/db.c:1005:		mob->points.damroll = tmp3;
dm-dist-gamma/db.c:1006:		mob->specials.damnodice = tmp;
dm-dist-gamma/db.c:1007:		mob->specials.damsizedice = tmp2;
dm-dist-gamma/db.c:1009:		mob->points.mana = 10;
dm-dist-gamma/db.c:1010:		mob->points.max_mana = 10;
dm-dist-gamma/db.c:1012:		mob->points.move = 50;
dm-dist-gamma/db.c:1013:		mob->points.max_move = 50;
dm-dist-gamma/db.c:1015:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1016:		mob->points.gold = tmp;
dm-dist-gamma/db.c:1018:		fscanf(mob_f, " %D \n", &tmp);
dm-dist-gamma/db.c:1019:		GET_EXP(mob) = tmp;
dm-dist-gamma/db.c:1021:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1022:		mob->specials.position = tmp;
dm-dist-gamma/db.c:1024:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1025:		mob->specials.default_pos = tmp;
dm-dist-gamma/db.c:1027:		fscanf(mob_f, " %D \n", &tmp);
dm-dist-gamma/db.c:1028:		mob->player.sex = tmp;
dm-dist-gamma/db.c:1030:		mob->player.class = 0;
dm-dist-gamma/db.c:1032:		mob->player.time.birth = time(0);
dm-dist-gamma/db.c:1033:		mob->player.time.played	= 0;
dm-dist-gamma/db.c:1034:		mob->player.time.logon  = time(0);
dm-dist-gamma/db.c:1035:		mob->player.weight = 200;
dm-dist-gamma/db.c:1036:		mob->player.height = 198;
dm-dist-gamma/db.c:1039:			GET_COND(mob, i) = -1;
dm-dist-gamma/db.c:1042:			mob->specials.apply_saving_throw[i] = MAX(20-GET_LEVEL(mob), 2);
dm-dist-gamma/db.c:1046:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1047:		mob->abilities.str = tmp;
dm-dist-gamma/db.c:1049:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1050:		mob->abilities.intel = tmp; 
dm-dist-gamma/db.c:1052:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1053:		mob->abilities.wis = tmp;
dm-dist-gamma/db.c:1055:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1056:		mob->abilities.dex = tmp;
dm-dist-gamma/db.c:1058:		fscanf(mob_f, " %D \n", &tmp);
dm-dist-gamma/db.c:1059:		mob->abilities.con = tmp;
dm-dist-gamma/db.c:1061:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1062:		fscanf(mob_f, " %D ", &tmp2);
dm-dist-gamma/db.c:1064:		mob->points.max_hit = number(tmp, tmp2);
dm-dist-gamma/db.c:1065:		mob->points.hit = mob->points.max_hit;
dm-dist-gamma/db.c:1067:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1068:		mob->points.armor = 10*tmp;
dm-dist-gamma/db.c:1070:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1071:		mob->points.mana = tmp;
dm-dist-gamma/db.c:1072:		mob->points.max_mana = tmp;
dm-dist-gamma/db.c:1074:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1075:		mob->points.move = tmp;		
dm-dist-gamma/db.c:1076:		mob->points.max_move = tmp;
dm-dist-gamma/db.c:1078:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1079:		mob->points.gold = tmp;
dm-dist-gamma/db.c:1081:		fscanf(mob_f, " %D \n", &tmp);
dm-dist-gamma/db.c:1082:		GET_EXP(mob) = tmp;
dm-dist-gamma/db.c:1084:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1085:		mob->specials.position = tmp;
dm-dist-gamma/db.c:1087:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1088:		mob->specials.default_pos = tmp;
dm-dist-gamma/db.c:1090:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1091:		mob->player.sex = tmp;
dm-dist-gamma/db.c:1093:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1094:		mob->player.class = tmp;
dm-dist-gamma/db.c:1096:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1097:		GET_LEVEL(mob) = tmp;
dm-dist-gamma/db.c:1099:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1100:		mob->player.time.birth = time(0);
dm-dist-gamma/db.c:1101:		mob->player.time.played	= 0;
dm-dist-gamma/db.c:1102:		mob->player.time.logon  = time(0);
dm-dist-gamma/db.c:1104:		fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1105:		mob->player.weight = tmp;
dm-dist-gamma/db.c:1107:		fscanf(mob_f, " %D \n", &tmp);
dm-dist-gamma/db.c:1108:		mob->player.height = tmp;
dm-dist-gamma/db.c:1112:			fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1113:			GET_COND(mob, i) = tmp;
dm-dist-gamma/db.c:1115:		fscanf(mob_f, " \n ");
dm-dist-gamma/db.c:1119:			fscanf(mob_f, " %D ", &tmp);
dm-dist-gamma/db.c:1120:			mob->specials.apply_saving_throw[i] = tmp;
dm-dist-gamma/db.c:1123:		fscanf(mob_f, " \n ");
dm-dist-gamma/db.c:1126:		mob->points.damroll = 0;
dm-dist-gamma/db.c:1127:		mob->specials.damnodice = 1;
dm-dist-gamma/db.c:1128:		mob->specials.damsizedice = 6;
dm-dist-gamma/db.c:1131:		mob->points.hitroll = MAX(1, GET_LEVEL(mob)-3);
dm-dist-gamma/db.c:1134:	mob->tmpabilities = mob->abilities;
dm-dist-gamma/db.c:1137:		mob->equipment[i] = 0;
dm-dist-gamma/db.c:1139:	mob->nr = nr;
dm-dist-gamma/db.c:1141:	mob->desc = 0;
dm-dist-gamma/db.c:1146:	mob->next = character_list;
dm-dist-gamma/db.c:1147:	character_list = mob;
dm-dist-gamma/db.c:1149:	mob_index[nr].number++;
dm-dist-gamma/db.c:1151:	return(mob);
dm-dist-gamma/db.c:1335:	struct char_data *mob;
dm-dist-gamma/db.c:1346:			case 'M': /* read a mobile */
dm-dist-gamma/db.c:1347:				if (mob_index[ZCMD.arg1].number < 
dm-dist-gamma/db.c:1350:					mob = read_mobile(ZCMD.arg1, REAL);
dm-dist-gamma/db.c:1351:					char_to_room(mob, ZCMD.arg3);
dm-dist-gamma/db.c:1397:					obj_to_char(obj, mob);
dm-dist-gamma/db.c:1408:					equip_char(mob, obj, ZCMD.arg3);
dm-dist-gamma/db.c:1467:	struct char_data *mob;
dm-dist-gamma/db.c:1478:			case 'M': /* read a mobile */
dm-dist-gamma/db.c:1479:				if (mob_index[ZCMD.arg1].number < 
dm-dist-gamma/db.c:1482:					mob = read_mobile(ZCMD.arg1, REAL);
dm-dist-gamma/db.c:1483:					char_to_room(mob, ZCMD.arg3);
dm-dist-gamma/db.c:1524:				mob = get_char_num(ZCMD.arg2);
dm-dist-gamma/db.c:1525:				obj_to_char(obj, mob);
dm-dist-gamma/db.c:1531:				mob = get_char_num(ZCMD.arg2);
dm-dist-gamma/db.c:1532:				equip_char(mob, obj, ZCMD.arg3);
dm-dist-gamma/db.c:2235:int real_mobile(int virtual)
dm-dist-gamma/db.c:2240:	top = top_of_mobt;
dm-dist-gamma/db.c:2242:	/* perform binary search on mob-table */
dm-dist-gamma/db.c:2247:		if ((mob_index + mid)->virtual == virtual)
dm-dist-gamma/db.c:2251:		if ((mob_index + mid)->virtual > virtual)
dm-dist-gamma/db.h:12:#define MOB_FILE          "tinyworld.mob" /* monster prototypes         */
dm-dist-gamma/db.h:45:int real_mobile(int virtual);
dm-dist-gamma/db.h:51:struct char_data *read_mobile(int nr, int type);
dm-dist-gamma/db.h:90:	*  'M': Read a mobile     *
dm-dist-gamma/db.h:92:	*  'G': Give obj to mob   *
dm-dist-gamma/db.h:127:	int virtual;    /* virtual number of this mob/obj           */
dm-dist-gamma/db.h:129:	int number;     /* number of existing units of this mob/obj	*/
dm-dist-gamma/db.h:130:	int (*func)();  /* special procedure for this mob/obj       */
dm-dist-gamma/doc/database.doc:69:speed. In such places (ie the special routines for mobs/objs/rooms) where
dm-dist-gamma/doc/database.doc:86:The objects and mobiles are stored in two separate files. They are loaded
dm-dist-gamma/doc/database.doc:230:	M (load a mobile): 
dm-dist-gamma/doc/database.doc:231:           Format: 'M' <if-flag> <mobile nr> <max existing> <room nr>
dm-dist-gamma/doc/database.doc:233:	   mobile nr and room nr should be self-explanatory. The 'max
dm-dist-gamma/doc/database.doc:244:	G (give object to mobile):
dm-dist-gamma/doc/database.doc:250:	   Of course, this command doesn't make sense if a new mobile+object
dm-dist-gamma/doc/database.doc:254:	E (object to equipment list of mobile)
dm-dist-gamma/doc/database.doc:383:This number may be considered the 'label' of the mobile, for use in eg. the
dm-dist-gamma/doc/database.doc:384:zonefile (see also the text about the roomfile format). When the mobile is to
dm-dist-gamma/doc/database.doc:385:be referenced from within the code itself, the function real_mobile
dm-dist-gamma/doc/database.doc:388:automatically called from read_object/read_mobile, depending on their 'type'
dm-dist-gamma/doc/dbsup.doc:44:  NO_MOB         4  No monsters may walk around in here
dm-dist-gamma/doc/dbsup.doc:168:	Room Flags  (8+4=12) INDOORS and NO_MOB
dm-dist-gamma/doc/shops.doc:57:<Shop Keeper Mobile Number>
dm-dist-gamma/doc/shops.doc:64:   The virtual number the mobile must be in for the shop to be effective.
dm-dist-gamma/handler.c:21:extern struct index_data *mob_index;
dm-dist-gamma/handler.c:1013:		if (ch->nr > -1) /* if mobile */
dm-dist-gamma/handler.c:1014:			mob_index[ch->nr].number--;
dm-dist-gamma/insert_any.c:3:*  Usage: Merges DikuMud wld/obj/mob/zon files                            *
dm-dist-gamma/interpreter-quinn.c:35:extern struct index_data *mob_index;
dm-dist-gamma/interpreter-quinn.c:696:	/* special in mobile present? */
dm-dist-gamma/interpreter-quinn.c:698:	   if ( IS_MOB(k) )
dm-dist-gamma/interpreter-quinn.c:699:	      if (mob_index[k->nr].func)
dm-dist-gamma/interpreter-quinn.c:700:	         if ((*mob_index[k->nr].func)(ch, cmd, arg))
dm-dist-gamma/interpreter.c:35:extern struct index_data *mob_index;
dm-dist-gamma/interpreter.c:698:	/* special in mobile present? */
dm-dist-gamma/interpreter.c:700:	   if ( IS_MOB(k) )
dm-dist-gamma/interpreter.c:701:	      if (mob_index[k->nr].func)
dm-dist-gamma/interpreter.c:702:	         if ((*mob_index[k->nr].func)(ch, cmd, arg))
dm-dist-gamma/lib/messages:277:$N lies immobile on the ground, suffering...~
dm-dist-gamma/lib/README:38:TINYWORLD.MOB   - File containing the monsters. See database.doc & dbsup.doc
dm-dist-gamma/lib/tinyworld.zon:350:* Mobiles & equipment
dm-dist-gamma/lib/tinyworld.zon:379:* Mobiles and equipment
dm-dist-gamma/mobact.c:2:*  file: mobact.c , Mobile action module.                 Part of DIKUMUD *
dm-dist-gamma/mobact.c:3:*  Usage: Procedures generating 'intelligent' behavior in the mobiles.    *
dm-dist-gamma/mobact.c:15:extern struct index_data *mob_index;
dm-dist-gamma/mobact.c:22:void mobile_activity(void)
dm-dist-gamma/mobact.c:35:		if (IS_MOB(ch))
dm-dist-gamma/mobact.c:39:				if (!mob_index[ch->nr].func) {
dm-dist-gamma/mobact.c:40:					log("Attempting to call a non-existing MOB func. (mobact.c)");
dm-dist-gamma/mobact.c:43:			   	if ((*mob_index[ch->nr].func)	(ch, 0, ""))
dm-dist-gamma/mobact.c:73:					!IS_SET(world[EXIT(ch, door)->to_room].room_flags, NO_MOB) &&
dm-dist-gamma/mobact.c:104:		}   /* If IS_MOB(ch)  */
dm-dist-gamma/modify.c:23:#define TP_MOB    0
dm-dist-gamma/modify.c:154:	   *type = TP_MOB;
dm-dist-gamma/modify.c:186:	struct char_data *mob;
dm-dist-gamma/modify.c:210:	if (type == TP_MOB)
dm-dist-gamma/modify.c:213:		if (!(mob = get_char_vis(ch, name)))
dm-dist-gamma/modify.c:223:				if (!IS_NPC(mob) && GET_LEVEL(ch) < 24)
dm-dist-gamma/modify.c:228:				ch->desc->str = &GET_NAME(mob);
dm-dist-gamma/modify.c:229:				if (!IS_NPC(mob))
dm-dist-gamma/modify.c:234:			   if (!IS_NPC(mob))
dm-dist-gamma/modify.c:240:			   ch->desc->str = &mob->player.short_descr;
dm-dist-gamma/modify.c:243:			   if (!IS_NPC(mob))
dm-dist-gamma/modify.c:249:			   ch->desc->str = &mob->player.long_descr;
dm-dist-gamma/modify.c:251:			case 4:ch->desc->str = &mob->player.description; break;
dm-dist-gamma/modify.c:253:			   if (IS_NPC(mob))
dm-dist-gamma/modify.c:259:			   ch->desc->str = &mob->player.title;
dm-dist-gamma/reception.c:22:extern struct index_data *mob_index;
dm-dist-gamma/reception.c:482:		if (IS_MOB(temp_char))
dm-dist-gamma/reception.c:483:			if (mob_index[temp_char->nr].func == receptionist)
dm-dist-gamma/shop.c:22:extern struct index_data *mob_index;
dm-dist-gamma/shop.c:41:	int keeper;             /* The mobil who owns the shop (virtual)*/
dm-dist-gamma/shop.c:415:	if (IS_MOB(temp_char))
dm-dist-gamma/shop.c:416:		if (mob_index[temp_char->nr].func == shop_keeper)
dm-dist-gamma/shop.c:543:			  real_mobile(shop_index[number_of_shops].keeper);
dm-dist-gamma/shop.c:573:		mob_index[shop_index[temp1].keeper].func = shop_keeper;
dm-dist-gamma/spec_assign.c:12:extern struct index_data *mob_index;
dm-dist-gamma/spec_assign.c:21:/* assign special procedures to mobiles */
dm-dist-gamma/spec_assign.c:22:void assign_mobiles(void)
dm-dist-gamma/spec_assign.c:36:	mob_index[real_mobile(1)].func = puff;
dm-dist-gamma/spec_assign.c:38:	mob_index[real_mobile(3060)].func = cityguard;
dm-dist-gamma/spec_assign.c:39:	mob_index[real_mobile(3067)].func = cityguard;
dm-dist-gamma/spec_assign.c:40:	mob_index[real_mobile(3061)].func = janitor;
dm-dist-gamma/spec_assign.c:41:	mob_index[real_mobile(3062)].func = fido;
dm-dist-gamma/spec_assign.c:42:	mob_index[real_mobile(3066)].func = fido;
dm-dist-gamma/spec_assign.c:44:	mob_index[real_mobile(3005)].func = receptionist;
dm-dist-gamma/spec_assign.c:46:	mob_index[real_mobile(3020)].func = guild;
dm-dist-gamma/spec_assign.c:47:	mob_index[real_mobile(3021)].func = guild;
dm-dist-gamma/spec_assign.c:48:	mob_index[real_mobile(3022)].func = guild;
dm-dist-gamma/spec_assign.c:49:	mob_index[real_mobile(3023)].func = guild;
dm-dist-gamma/spec_assign.c:51:	mob_index[real_mobile(3024)].func = guild_guard;
dm-dist-gamma/spec_assign.c:52:	mob_index[real_mobile(3025)].func = guild_guard;
dm-dist-gamma/spec_assign.c:53:	mob_index[real_mobile(3026)].func = guild_guard;
dm-dist-gamma/spec_assign.c:54:	mob_index[real_mobile(3027)].func = guild_guard;
dm-dist-gamma/spec_assign.c:56:	mob_index[real_mobile(3143)].func = mayor;
dm-dist-gamma/spec_assign.c:59:	mob_index[real_mobile(4000)].func = snake;
dm-dist-gamma/spec_assign.c:60:	mob_index[real_mobile(4001)].func = snake;
dm-dist-gamma/spec_assign.c:61:	mob_index[real_mobile(4053)].func = snake;
dm-dist-gamma/spec_assign.c:63:	mob_index[real_mobile(4103)].func = thief;
dm-dist-gamma/spec_assign.c:64:	mob_index[real_mobile(4100)].func = magic_user;
dm-dist-gamma/spec_assign.c:65:	mob_index[real_mobile(4102)].func = snake;
dm-dist-gamma/spec_assign.c:68:	mob_index[real_mobile(7006)].func = snake;
dm-dist-gamma/spec_assign.c:71:	mob_index[real_mobile(6113)].func = snake;
dm-dist-gamma/spec_assign.c:72:	mob_index[real_mobile(6114)].func = snake;
dm-dist-gamma/spec_assign.c:74:	mob_index[real_mobile(6910)].func = magic_user;
dm-dist-gamma/spec_procs.c:3:*  Usage: Procedures handling special procedures for object/room/mobile   *
dm-dist-gamma/spec_procs.c:443:*  General special procedures for mobiles                                      *
dm-dist-gamma/spec_procs.c:739:*  Special procedures for mobiles                                      *
dm-dist-gamma/spec_procs.c:925:		pet = read_mobile(pet->nr, REAL);
dm-dist-gamma/spell_parser.c:222:	extern struct index_data *mob_index;
dm-dist-gamma/spell_parser.c:266:		mob_index[clone->nr].number++;
dm-dist-gamma/structs.h:16:#define PULSE_MOBILE    40
dm-dist-gamma/structs.h:189:#define NO_MOB         4
dm-dist-gamma/structs.h:375:/* for mobile actions: specials.act */
dm-dist-gamma/structs.h:377:#define ACT_SENTINEL     2     /* this mobile not to be moved             */
dm-dist-gamma/structs.h:382:#define ACT_STAY_ZONE   64     /* MOB Must stay inside its own zone       */
dm-dist-gamma/structs.h:383:#define ACT_WIMPY      128     /* MOB Will flee when injured, and if      */
dm-dist-gamma/structs.h:531:	struct descriptor_data *desc;         /* NULL for mobiles              */
dm-dist-gamma/syntax_check.c:35:FILE *mob_f,                          /* file containing mob prototypes  */
dm-dist-gamma/syntax_check.c:40:struct index_data *mob_index;         /* index table for mobile file     */
dm-dist-gamma/syntax_check.c:46:int top_of_mobt = 0;                  /* top of mobile index table       */
dm-dist-gamma/syntax_check.c:322:					exist_index(mob_index, top_of_mobt, tmp2);
dm-dist-gamma/syntax_check.c:370:/* read a mobile from MOB_FILE */
dm-dist-gamma/syntax_check.c:371:void check_mobile(FILE *fl)
dm-dist-gamma/syntax_check.c:379:	struct char_data *mob;
dm-dist-gamma/syntax_check.c:400:			/* Name already read mob->player.name = fread_string(fl); */
dm-dist-gamma/syntax_check.c:463:			mob->abilities.str = tmp;
dm-dist-gamma/syntax_check.c:466:			mob->abilities.intel = tmp; 
dm-dist-gamma/syntax_check.c:469:			mob->abilities.wis = tmp;
dm-dist-gamma/syntax_check.c:472:			mob->abilities.dex = tmp;
dm-dist-gamma/syntax_check.c:475:			mob->abilities.con = tmp;
dm-dist-gamma/syntax_check.c:480:			mob->points.max_hit = 0;
dm-dist-gamma/syntax_check.c:481:			mob->points.hit = mob->points.max_hit;
dm-dist-gamma/syntax_check.c:484:			mob->points.armor = tmp;
dm-dist-gamma/syntax_check.c:487:			mob->points.mana = tmp;
dm-dist-gamma/syntax_check.c:488:			mob->points.max_mana = tmp;
dm-dist-gamma/syntax_check.c:491:			mob->points.move = tmp;		
dm-dist-gamma/syntax_check.c:492:			mob->points.max_move = tmp;
dm-dist-gamma/syntax_check.c:495:			mob->points.gold = tmp;
dm-dist-gamma/syntax_check.c:498:			GET_EXP(mob) = tmp;
dm-dist-gamma/syntax_check.c:501:			mob->specials.position = tmp;
dm-dist-gamma/syntax_check.c:504:			mob->specials.default_pos = tmp;
dm-dist-gamma/syntax_check.c:507:			mob->player.sex = tmp;
dm-dist-gamma/syntax_check.c:510:			mob->player.class = tmp;
dm-dist-gamma/syntax_check.c:513:			GET_LEVEL(mob) = tmp;
dm-dist-gamma/syntax_check.c:516:			mob->player.birth.hours = time_info.hours;
dm-dist-gamma/syntax_check.c:517:			mob->player.birth.day	= time_info.day;
dm-dist-gamma/syntax_check.c:518:			mob->player.birth.month = time_info.month;
dm-dist-gamma/syntax_check.c:519:			mob->player.birth.year  = time_info.year - tmp;
dm-dist-gamma/syntax_check.c:522:			mob->player.weight = tmp;
dm-dist-gamma/syntax_check.c:525:			mob->player.height = tmp;
dm-dist-gamma/syntax_check.c:530:				GET_COND(mob, i) = tmp;
dm-dist-gamma/syntax_check.c:537:				mob->specials.apply_saving_throw[i] = tmp;
dm-dist-gamma/syntax_check.c:541:			mob->points.damroll = 0;
dm-dist-gamma/syntax_check.c:542:			mob->specials.damnodice = 1;
dm-dist-gamma/syntax_check.c:543:			mob->specials.damsizedice = 6;
dm-dist-gamma/syntax_check.c:545:			mob->points.hitroll = 0;
dm-dist-gamma/syntax_check.c:726:	strcat(name, ".mob");
dm-dist-gamma/syntax_check.c:727:	if (!(mob_f = fopen(name, "r")))
dm-dist-gamma/syntax_check.c:729:		printf("Could not open mobile file.\n\r");
dm-dist-gamma/syntax_check.c:751:	printf("Generating mobile file indexes.\n\r");
dm-dist-gamma/syntax_check.c:752:	mob_index = generate_indices(mob_f, &top_of_mobt);
dm-dist-gamma/syntax_check.c:760:	printf("Checking Mobile File (only simple mobiles).\n\r");
dm-dist-gamma/syntax_check.c:761:	check_mobile(mob_f);
dm-dist-gamma/syntax_check.c:773:	fclose(mob_f);
dm-dist-gamma/syslog:9:Thu Jun 30 17:53:58 1994 :: Opening mobile, object and help files.
dm-dist-gamma/syslog:14:Thu Jun 30 17:54:06 1994 :: Generating index tables for mobile and object files.
dm-dist-gamma/syslog:21:Thu Jun 30 17:54:07 1994 ::    Mobiles.
dm-dist-gamma/utils.h:73:#define IS_MOB(ch)  (IS_SET((ch)->specials.act, ACT_ISNPC) && ((ch)->nr >-1))
dm-dist-gamma/utils.h:179:/* char name/short_desc(for mobs) or someone?  */

--Rowaa[SR13] (talk) 16:44, 13 May 2020 (UTC)[reply]

I've never heard of someone trying to use game code as a source on Wikipedia and it doesn't seem like a good idea, especially since it's only relevant to one game and this is a term used by players of many games. -- Fyrael (talk) 16:54, 13 May 2020 (UTC)[reply]
Please re-read article first. It is DikuMUD, not "one game", but "THE source of term" in modern MMO. --Rowaa[SR13] (talk) 17:19, 13 May 2020 (UTC)[reply]
BTW, if you check existing references in article, #14 is already exactly this - reference to Diku source. Though I'm not sure what it was supposed to cover there, because I don't have access to full text of book that serves as another reference in this sentence. --Rowaa[SR13] (talk) 17:34, 13 May 2020 (UTC)[reply]
Yeah, I'd be heavily in favor of removing that reference. I don't see how it would count as WP:RS and in fact seems like original research to me. -- Fyrael (talk) 19:03, 13 May 2020 (UTC)[reply]
Still, pretty much every other reference in article explicitly mentions Diku too as a source of this term spreading. Make no mistake, it is not "one game" and not even "THAT one game where it started" - today it is better to call it either "distribution" or "engine", since it was available for free non-commercial use to modify and install anywhere. Thousands of Diku copies both modified and unmodified ran around the world, spreading its terminology. And thousands more of its derivatives, like CircleMUD, was spreading it as well. Scroll article down to MUD template at bottom - it is right there in "major branches". DikuMUD distribution, which also includes documentation that too was grepped in this sheet above - is the definite source on usage of the terms "mobile" and thus "mob" at the moment it gained its widespread. --Rowaa[SR13] (talk) 19:37, 13 May 2020 (UTC)[reply]
Let's synchronize a bit. I checked history and see that you seem to often work at preserving correct definition and facts about origins and usage of "mob". It seems you do have good experience with MUDs yourself. Is that right? --Rowaa[SR13] (talk) 19:50, 13 May 2020 (UTC)[reply]
No, I have no experience with MUDs. And I'm not sure what there is to synchronize on, as I'm fine with your changes. I'm just objecting to using source code as a reference in the article (or any article for that matter), regardless of how influential DikuMUD might be. -- Fyrael (talk) 20:37, 13 May 2020 (UTC)[reply]