no message

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@308 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
driAn
2006-07-16 17:10:50 +00:00
parent 5483977491
commit 712e4f5f23
13 changed files with 198 additions and 221 deletions
+74 -66
View File
@@ -17,26 +17,50 @@ guninfo guns[NUMGUNS] =
{ S_SUBGUN, S_RSUBGUN, 1650, 80, 17, 0, 0, 70, 15, 30, 1, 2, "subgun" },
{ S_SNIPER, S_RSNIPER, 1950, 1500, 72, 0, 0, 60, 50, 5, 4, 4, "sniper" },
{ S_ASSULT, S_RASSULT, 2000, 130, 20, 0, 0, 20, 40, 20, 0, 2, "assult" }, //recoil was 44
{ S_GRENADE, S_NULL, 1000, 2500, 150, 20, 6, 1, 1, 1, 3, 1, "grenade" },
{ S_NULL, S_NULL, 1000, 2500, 150, 20, 6, 1, 1, 1, 3, 1, "grenade" },
};
int nadetimer = 2000; // detonate after $ms
bool gun_changed = false;
void checkweaponswitch()
{
if(!player1->weaponchanging) return;
int timeprogress = lastmillis-player1->lastaction;
if(timeprogress>WEAPONCHANGE_TIME) player1->weaponchanging = false;
else if(timeprogress>WEAPONCHANGE_TIME/2)
{
gun_changed = true;
if( (!player1->akimbo && player1->akimbomillis && player1->nextweapon==GUN_PISTOL) ||
(player1->akimbo && !player1->akimbomillis && player1->gunselect==GUN_PISTOL))
player1->akimbo = !player1->akimbo;
player1->gunselect = player1->nextweapon;
};
};
void weaponswitch(int gun)
{
player1->weaponchanging = true;
player1->lastaction = player1->akimbolastaction[0] = player1->akimbolastaction[1] = lastmillis;
player1->nextweapon = gun;
}
void weapon(int gun)
{
if(scoped) togglescope();
gun %= G_NUM;
if(gun<0) gun = G_NUM+gun;
gun_changed = true;
switch(gun)
{
case G_PRIMARY: player1->gunselect=player1->primary; break;
case G_SECONDARY: player1->gunselect=GUN_PISTOL; break;
case G_MELEE: player1->gunselect=GUN_KNIFE; break;
case G_GRENADE: player1->gunselect=GUN_GRENADE; break;
case G_PRIMARY: gun=player1->primary; break;
case G_SECONDARY: gun=GUN_PISTOL; break;
case G_MELEE: gun=GUN_KNIFE; break;
case G_GRENADE: gun=GUN_GRENADE; break;
};
if(gun!=player1->gunselect) weaponswitch(gun);
};
void shiftweapon(int i)
@@ -67,48 +91,39 @@ COMMAND(altattack, ARG_NONE);
void reload(dynent *d)
{
if(!d) return;
if(!d) return;
if(scoped) togglescope();
bool akimbo = d->gunselect==GUN_PISTOL && d->akimbo!=0;
if(d->gunselect==GUN_KNIFE || d->gunselect==GUN_GRENADE) return;
if(akimbo && d->mag[d->gunselect]>=(guns[d->gunselect].magsize * 2)) return;
else if(d->mag[d->gunselect]>=guns[d->gunselect].magsize && d->akimbo==0) return;
if(d->ammo[d->gunselect]<=0) return;
if(d->reloading) return;
if(d->gunselect==GUN_KNIFE || d->gunselect==GUN_GRENADE) return;
if(akimbo && d->mag[d->gunselect]>=(guns[d->gunselect].magsize * 2)) return;
else if(d->mag[d->gunselect]>=guns[d->gunselect].magsize && d->akimbo==0) return;
if(d->ammo[d->gunselect]<=0) return;
if(d->reloading) return;
d->reloading = true;
d->lastaction = lastmillis;
if(akimbo)
{
akimbolastaction[akimboside?1:0] = lastmillis;
akimbolastaction[akimboside?0:1] = lastmillis;// + (reloadtime(GUN_PISTOL)/2);
};
d->reloading = true;
d->lastaction = lastmillis;
d->akimbolastaction[0] = d->akimbolastaction[1] = lastmillis;
d->gunwait = guns[d->gunselect].reloadtime;
//temp hack in drawhudgun() so no guns drawn while reloading, needs fixed
d->gunwait = guns[d->gunselect].reloadtime;
int a = guns[d->gunselect].magsize - d->mag[d->gunselect];
if(d->gunselect==GUN_PISTOL && d->akimbo!=0)
a = guns[d->gunselect].magsize * 2 - d->mag[d->gunselect];
if (a >= d->ammo[d->gunselect])
{
d->mag[d->gunselect] += d->ammo[d->gunselect];
d->ammo[d->gunselect] = 0;
}
else
{
d->mag[d->gunselect] += a;
d->ammo[d->gunselect] -= a;
}
int a = guns[d->gunselect].magsize - d->mag[d->gunselect];
if(d->gunselect==GUN_PISTOL && d->akimbo!=0)
a = guns[d->gunselect].magsize * 2 - d->mag[d->gunselect];
if (a >= d->ammo[d->gunselect])
{
d->mag[d->gunselect] += d->ammo[d->gunselect];
d->ammo[d->gunselect] = 0;
}
else
{
d->mag[d->gunselect] += a;
d->ammo[d->gunselect] -= a;
}
if(akimbo) playsoundc(S_RAKIMBO);
else playsoundc(guns[d->gunselect].reload);
if(akimbo) playsoundc(S_RAKIMBO);
else playsoundc(guns[d->gunselect].reload);
};
void selfreload() { reload(player1); };
@@ -397,8 +412,6 @@ void moveprojectiles(float time)
extern float rad(float x);
physent *curnade = NULL;
void throw_nade(dynent *d, vec &to, physent *p)
{
if(!p || !d) return;
@@ -427,13 +440,14 @@ void throw_nade(dynent *d, vec &to, physent *p)
vec &from = d->o;
d->thrownademillis = lastmillis;
d->inhandnade = NULL;
if(d==player1)
{
int percent_done = (lastmillis-p->millis)*100/2000;
int percent_done = (lastmillis-p->millis)*100/nadetimer;
if(percent_done < 0 || percent_done > 100) percent_done = 100;
addmsg(1, 9, SV_SHOT, d->gunselect, (int)(from.x*DMF), (int)(from.y*DMF), (int)(from.z*DMF), (int)(to.x*DMF), (int)(to.y*DMF), (int)(to.z*DMF), percent_done);
// printf("grenade: %i\n", (lastmillis-curnade->millis)/100);
if(curnade) curnade = NULL;
};
};
@@ -489,11 +503,9 @@ physent *new_nade(dynent *d, int millis = 0)
p->millis = lastmillis;
p->timetolife = 2000-millis;
p->state = NADE_ACTIVATED;
if(d==player1)
{
curnade = p;
d->thrownademillis = 0;
};
d->inhandnade = p;
d->thrownademillis = 0;
playsound(S_GRENADEPULL, &d->o);
return p;
};
@@ -514,7 +526,7 @@ void explode_nade(physent *i)
newprojectile(i->o, i->o, 1, i->owner==player1, i->owner, GUN_GRENADE);
};
void shootv(int gun, vec &from, vec &to, dynent *d, bool local, int nademillis) // create visual effect from a shot
void shootv(int gun, vec &from, vec &to, dynent *d, bool local, int nadepercent) // create visual effect from a shot
{
playsound(guns[gun].sound, d==player1 ? NULL : &d->o);
int pspeed = 25;
@@ -541,6 +553,8 @@ void shootv(int gun, vec &from, vec &to, dynent *d, bool local, int nademillis)
{
if(d!=player1)
{
int nademillis = nadetimer/100*nadepercent;
if(nademillis<0 || nademillis>100) nademillis = 100;
physent *p = new_nade(d, nademillis);
throw_nade(d, to, p);
}
@@ -619,24 +633,18 @@ void spreadandrecoil(vec & from, vec & to, dynent * d)
if(d->pitch<80.0f) d->pitch += guns[d->gunselect].recoil*0.05f;
};
//VAR(grenadepulltime, 0, 100, 10000);
const int grenadepulltime = 650;
bool akimboside = false;
int akimbolastaction[2] = {0,0};
void shoot(dynent *d, vec &targ)
{
if(d->weaponchanging) return;
int attacktime = lastmillis-d->lastaction;
if(!d->attacking && d->gunselect==GUN_GRENADE && curnade) // throw
if(d->gunselect==GUN_GRENADE && d->inhandnade && !d->attacking) // throw nade
{
if(attacktime>grenadepulltime)
{
d->thrownademillis = lastmillis;
throw_nade(d, targ, curnade);
}
if(attacktime>grenadepulltime) throw_nade(d, targ, d->inhandnade);
return;
};
@@ -656,7 +664,7 @@ void shoot(dynent *d, vec &targ)
if(d->gunselect==GUN_PISTOL && d->akimbo)
{
d->attacking = true; //make akimbo auto
akimbolastaction[akimboside?1:0] = lastmillis;
d->akimbolastaction[akimboside?1:0] = lastmillis;
akimboside = !akimboside;
}
@@ -697,7 +705,7 @@ void shoot(dynent *d, vec &targ)
if(d->gunselect==GUN_GRENADE) // activate
{
if(!curnade) new_nade(d);
if(!d->inhandnade) new_nade(d);
return;
}