First open wl_def.h and search for SPR_CHAINREADY you should see something like this:
SPR_CHAINREADY,SPR_CHAINATK1,SPR_CHAINATK2,SPR_CHAINATK3,
SPR_CHAINATK4,
for the sake of the arugment i called it Plasma for a new weapon: below this add:
SPR_PLASMAREADY,SPR_PLASMA1ATK1,SPR_PLASMAATK2,SPR_PLASMAATK3,
SPR_PLASMAATK4,
Then scroll down and look for this:
#define NUMWEAPONS 5
typedef enum {
wp_knife,
wp_pistol,
wp_machinegun,
wp_chaingun
} weapontype;
modify it to this:
#define NUMWEAPONS 6
typedef enum {
wp_knife,
wp_pistol,
wp_machinegun,
wp_chaingun,
wp_plasma
} weapontype;
Now open up wl_draw.c and look for this:
int weaponscale[NUMWEAPONS] ={SPR_KNIFEREADY,SPR_PISTOLREADY
,SPR_MACHINEGUNREADY,SPR_CHAINREADY};
modify it to this:
int weaponscale[NUMWEAPONS] = {SPR_KNIFEREADY,SPR_PISTOLREADY
,SPR_MACHINEGUNREADY,SPR_CHAINREADY,SPR_PLASMAREADY};
Now open up wl_agent.c and look for this
struct atkinf
{
char tics,attack,frame; // attack is 1 for gun, 2 for knife
} attackinfo[4][14] =
{
{ {6,0,1},{6,2,2},{6,0,3},{6,-1,4} },
{ {8,0,1},{8,1,2},{8,0,3},{8,-1,4} },
{ {6,0,1},{6,1,2},{6,3,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,4,3},{6,-1,4} },
};
modify it to this
{
char tics,attack,frame; // attack is 1 for gun, 2 for knife
} attackinfo[5][14] =
{
{ {6,0,1},{6,2,2},{6,0,3},{6,-1,4} },
{ {8,0,1},{8,1,2},{8,0,3},{8,-1,4} },
{ {6,0,1},{6,1,2},{6,3,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,4,3},{6,-1,4} },
{ {8,0,1},{8,1,2},{8,0,3},{8,-1,4} },
};
keep scrolling down till u get to this:
void CheckWeaponChange (void)
{
int i,buttons;
if (!gamestate.ammo) // must use knife with no ammo
return;
for (i=wp_knife ; i<=gamestate.bestweapon ; i++)
if (buttonstate[bt_readyknife+i-wp_knife])
{
gamestate.weapon = gamestate.chosenweapon = i;
DrawWeapon ();
return;
}
}
remove this entire code it is pointless... add this
void CheckWeaponChange (void)
{
int i,buttons;
switch (LastScan)
{
case 2:
LastScan=0;
if (gamestate.bestweapon >= wp_knife)
gamestate.weapon = gamestate.chosenweapon = wp_knife;
break;
case 3:
LastScan=0;
if (gamestate.bestweapon >= wp_pistol)
{
gamestate.weapon = gamestate.chosenweapon = wp_pistol;
DrawAmmo ();
}
break;
case 4:
LastScan=0;
if (gamestate.bestweapon >= wp_machinegun)
{
gamestate.weapon = gamestate.chosenweapon = wp_machinegun;
DrawAmmo ();
}
break;
case 5:
LastScan=0;
if (gamestate.bestweapon >= wp_chaingun)
{
gamestate.weapon = gamestate.chosenweapon = wp_chaingun;
DrawAmmo ();
}
break;
case 6:
LastScan=0;
if (gamestate.bestweapon >= wp_plasma)
{
gamestate.weapon = gamestate.chosenweapon = wp_plasma;
DrawAmmo ();
}
break;
}
DrawWeapon();
}
Now that we have a new weapon it would be good if we could pick it up. So open wl_def.h again
Search for bo_spear you should see this:
bo_spear
add this
bo_spear,
bo_plasmagun
Now open up wl_act1.c
Scroll down till you see this:
{SPR_STAT_0} // puddle/water
Modify it to this:
{SPR_STAT_0,bo_plasmagun} //new weapon
Keeping scrolling down till you get to this bo_spear again.
You should see this:
case bo_spear:
add this below:
case bo_spear:
case bo_plasmagun:
Now in wl_agent.c search for bo_spear you should see this:
case bo_spear:
spearflag = true;
spearx = player->x;
speary = player->y;
spearangle = player->angle;
playstate = ex_completed;
Below that add this:
case bo_plasmagun:
SD_PlaySound (GETMACHINESND);
GiveWeapon (wp_plasmagun);
break;
Thats all pretty big huh *lol*