summaryrefslogtreecommitdiff
path: root/src/strife/p_pspr.c
diff options
context:
space:
mode:
authorSamuel Villareal2010-09-04 04:06:10 +0000
committerSamuel Villareal2010-09-04 04:06:10 +0000
commit583406a2ba2a10bfe0e654a0ede285da46c9bd88 (patch)
tree1451231cce840aafdb8e3a6f10290bac81e40a39 /src/strife/p_pspr.c
parent8761422d31fdceb685b292a780727f3ad1d950db (diff)
downloadchocolate-doom-583406a2ba2a10bfe0e654a0ede285da46c9bd88.tar.gz
chocolate-doom-583406a2ba2a10bfe0e654a0ede285da46c9bd88.tar.bz2
chocolate-doom-583406a2ba2a10bfe0e654a0ede285da46c9bd88.zip
+ Map flags for things added (MTF_*)
+ A_FireGrenade and A_MissileTick codepointers added + Step up height changed to 16*FRACUNIT (non-human things are excluded) + Fixed bug in P_MovePlayer where player cannot climb over things when pressing forward and jumping. Missed a line of code for this + P_SpawnSubMissile renamed to P_SpawnFaceMissile + P_SpawnMortar added + Ammo types added + Fixed some inaccuracies in P_SpawnBlood Subversion-branch: /branches/strife-branch Subversion-revision: 2008
Diffstat (limited to 'src/strife/p_pspr.c')
-rw-r--r--src/strife/p_pspr.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/strife/p_pspr.c b/src/strife/p_pspr.c
index 1444cf4f..2d30c2d2 100644
--- a/src/strife/p_pspr.c
+++ b/src/strife/p_pspr.c
@@ -164,6 +164,9 @@ boolean P_CheckAmmo (player_t* player)
ammotype_t ammo;
int count;
+ // villsa [STRIFE] TODO - temp until this function is cleaned up
+ return true;
+
ammo = weaponinfo[player->readyweapon].ammo;
// Minimal amount for one shot varies.
@@ -852,6 +855,63 @@ A_BFGsound
S_StartSound (player->mo, sfx_swish); // villsa [STRIFE] TODO - fix sounds
}
+//
+// A_FireGrenade
+// villsa [STRIFE] - new codepointer
+//
+
+void A_FireGrenade(player_t* player, pspdef_t* pspr)
+{
+ mobjtype_t type;
+ mobj_t* mo;
+ state_t* st1;
+ state_t* st2;
+ angle_t an;
+ fixed_t radius;
+
+ // decide on what type of grenade to spawn
+ if(player->readyweapon == wp_hegrenade)
+ type = MT_HEGRENADE;
+ else
+ {
+ if(player->readyweapon == wp_wpgrenade)
+ type = MT_PGRENADE;
+ }
+
+ player->ammo[weaponinfo[player->readyweapon].ammo]--;
+
+ // set flash frame
+ st1 = &states[(pspr->state - states) + weaponinfo[player->readyweapon].flashstate];
+ st2 = &states[weaponinfo[player->readyweapon].atkstate];
+ P_SetPsprite(player, ps_flash, st1 - st2);
+
+ player->mo->z += (32*FRACUNIT); // ugh
+ mo = P_SpawnMortar(player->mo, type);
+ player->mo->z -= (32*FRACUNIT); // ugh
+
+ // change momz based on player's pitch
+ mo->momz = FixedMul((player->pitch<<FRACBITS) / 160, mo->info->speed) + (8*FRACUNIT);
+ S_StartSound(mo, mo->info->seesound);
+
+ radius = mobjinfo[type].radius + player->mo->info->radius;
+ an = (player->mo->angle >> ANGLETOFINESHIFT);
+
+ mo->x += FixedMul(finecosine[an], radius + (4*FRACUNIT));
+ mo->y += FixedMul(finesine[an], radius + (4*FRACUNIT));
+
+ // shoot grenade from left or right side?
+ if(&states[weaponinfo[player->readyweapon].atkstate] == pspr->state)
+ an = (player->mo->angle - ANG90) >> ANGLETOFINESHIFT;
+ else
+ an = (player->mo->angle + ANG90) >> ANGLETOFINESHIFT;
+
+ mo->x += FixedMul((15*FRACUNIT), finecosine[an]);
+ mo->y += FixedMul((15*FRACUNIT), finesine[an]);
+
+ // set bounce flag
+ mo->flags |= MF_BOUNCE;
+}
+
//