We just played through the first rogue levels with toxicmonkey and hasenpfeffer. It was so much fun, the level design is really superior and the game is really difficult, we were almos aalways dying instantly. Thank you very much for the rogue server. :-)
Wasn't the disruptor weapon available anyway?
// ROGUE- id killed this weapon#define KILL_DISRUPTOR 1// rogue
void InitClientPersistant (gclient_t *client){ gitem_t *item; memset (&client->pers, 0, sizeof(client->pers)); item = FindItem("Blaster"); client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; client->pers.weapon = item; //peewee //------- item = FindItem("Chainfist"); client->pers.inventory[ITEM_INDEX(item)] = 1; //------- client->pers.health = 100; client->pers.max_health = 100; ...}
void fire_player_melee (edict_t *self, vec3_t start, vec3_t aim, int reach, int damage, int kick, int quiet, int mod){ vec3_t forward, right, up; vec3_t v; vec3_t point; trace_t tr; vectoangles2 (aim, v); AngleVectors (v, forward, right, up); ... if(tr.ent->takedamage == DAMAGE_YES || tr.ent->takedamage == DAMAGE_AIM) { // pull the player forward if you do damage VectorMA(self->velocity, 75, forward, self->velocity); VectorMA(self->velocity, 75, up, self->velocity); // do the damage // FIXME - make the damage appear at right spot and direction if(mod == MOD_CHAINFIST) { T_Damage (tr.ent, self, self, vec3_origin, tr.ent->s.origin, vec3_origin, damage, kick/2, DAMAGE_DESTROY_ARMOR | DAMAGE_NO_KNOCKBACK, mod); //peewee //-------- if (self->client) { if (self->health < self->max_health) { self->health += 2; if (self->health > self->max_health) self->health = self->max_health; } } //-------- } ... }
void Cmd_Give_f (edict_t *ent){ char *name; gitem_t *it; int index; int i; qboolean give_all; edict_t *it_ent;//peewee//-------// if (deathmatch->value && !sv_cheats->value) if ((deathmatch->value || coop->value) && !sv_cheats->value) { gi.cprintf (ent, PRINT_HIGH, "You must run the server with '+set cheats 1' to enable this command.\n"); return; }//-------...}/*==================Cmd_God_fSets client to godmodeargv(0) god==================*/void Cmd_God_f (edict_t *ent){ char *msg;//peewee//-------// if (deathmatch->value && !sv_cheats->value) if ((deathmatch->value || coop->value) && !sv_cheats->value) { gi.cprintf (ent, PRINT_HIGH, "You must run the server with '+set cheats 1' to enable this command.\n"); return; }//peewee//-------...}/*==================Cmd_Notarget_fSets client to notargetargv(0) notarget==================*/void Cmd_Notarget_f (edict_t *ent){ char *msg;//peewee//------- // if (deathmatch->value && !sv_cheats->value) if ((deathmatch->value || coop->value) && !sv_cheats->value) { gi.cprintf (ent, PRINT_HIGH, "You must run the server with '+set cheats 1' to enable this command.\n"); return; }//-------...}/*==================Cmd_Noclip_fargv(0) noclip==================*/void Cmd_Noclip_f (edict_t *ent){ char *msg;//peewee//------- // if (deathmatch->value && !sv_cheats->value) if ((deathmatch->value || coop->value) && !sv_cheats->value) { gi.cprintf (ent, PRINT_HIGH, "You must run the server with '+set cheats 1' to enable this command.\n"); return; }//-------...}
/*==================Cmd_Use_fUse an inventory item==================*/void Cmd_Use_f (edict_t *ent){ int index; gitem_t *it; char *s; s = gi.args(); //peewee //------- // ROGUE if (Q_stricmp(s, "blaster") == 0) { if (ent->client->pers.weapon == FindItem("Blaster")) { s = "Chainfist"; } } else if(Q_stricmp(s, "shotgun") == 0) { if (ent->client->pers.weapon == FindItem("Shotgun") || ent->client->pers.inventory[ITEM_INDEX(FindItem("Shells"))] < 1) { s = "Plasma Beam"; } } else if(Q_stricmp(s, "machinegun") == 0) { if (ent->client->pers.weapon == FindItem("Machinegun") || ent->client->pers.inventory[ITEM_INDEX(FindItem("Bullets"))] < 1) { s = "ETF Rifle"; } } else if(Q_stricmp(s, "grenades") == 0) { if (ent->client->pers.weapon == FindItem("Grenades") || ent->client->pers.inventory[ITEM_INDEX(FindItem("Grenades"))] < 1) { s = "Tesla"; } } else if(Q_stricmp(s, "grenade launcher") == 0) { if (ent->client->pers.weapon == FindItem("Grenade Launcher") || ent->client->pers.inventory[ITEM_INDEX(FindItem("Grenades"))] < 1) { s = "Prox Launcher"; } } //------- it = FindItem (s);...}
Which skill level is running on coop3? Hard?
After some testing, it looks like re-writing the statement this way makes it behave more like the old way, with the weapon being auto-selected if they are holding the blaster or have run out of ammo for other weapons and they have fallen back to the blaster: if (other->client->pers.weapon != item && (other->client->pers.inventory[index] == 1) && (!deathmatch->value && autoweaponselect->value || other->client->pers.weapon == &gI_weapon_blaster)) other->client->newweapon = item;