- tweak assault cannon spread so it's only 80% as wide, and biased

towards the center
- allow (very slow, 1/8th) movement while firing assault cannon
- rewrite much of the soldier menus.  mostly the same except some
  colors are different, and added a menu item to switch between them.
This commit is contained in:
Adam Olsen 2001-08-12 22:31:50 +00:00
parent 8e2d5f66e6
commit 6fca29e666
8 changed files with 199 additions and 194 deletions

341
army.qc
View file

@ -48,107 +48,86 @@ void() Menu_Army =
void() Menu_Army1 =
{
local float readytime,temp;
local string st,st2,st3;
local string st;
st = "";
if (self.army_ready==FALSE)
{
local entity ArmyTimer;
ArmyTimer=GetArmyTimer(self);
readytime=fabs(floor(ArmyTimer.nextthink - time));
if (readytime<60)
{
st=ftos(readytime);
st2=" seconds";
}
else
{
temp=floor(readytime/60);//+1;
if (temp>1)
st2=" minutes";
else
st2=" minute";
st=ftos(floor(readytime/60));//+1);
}
}
if (self.job & JOB_DEMON_OUT)
{
/* if (self.demon_one.goalentity==self)
st="—.. Stay there! ";
else
st="—.. Follow me! ";*/
if (self.demon_one.martyr_enemy==world && self.demon_one.demon_two==world)
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two==world && visible2(self.demon_one,self.demon_one.martyr_enemy))
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two==world)
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
custom_demon_name(self.demon_one);
st += self.demon_one.undercover_name; // FIXME: blah, name includes the space
st += self.demon_one.netname;
st += "\n\n";
else if (self.demon_one.martyr_enemy==world && self.demon_one.demon_two!=world && visible2(self.demon_one,self.demon_one.demon_two))
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy==world && self.demon_one.demon_two!=world)
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two!=world && visible2(self.demon_one,self.demon_one.demon_two) && visible2(self.demon_one,self.demon_one.martyr_enemy))
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two!=world && visible2(self.demon_one,self.demon_one.demon_two))
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two!=world && visible2(self.demon_one,self.demon_one.martyr_enemy))
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
else if (self.demon_one.martyr_enemy!=world && self.demon_one.demon_two!=world)
st3 = " “.. Set primary ÷áùðïéîô \n ”.. Set secondary ÷áùðïéîô ";
if (self.army_ready)
st += " \<Action\>: \^(soldier waiting\^)\n\n";
else
st = " \<Action\>: \n\n";
st2=" Áãôéïî: \n\n";
if (self.army_ready == TRUE)
st2=" Áãôéïî: ¼soldier waiting¾\n\n";
if (self.demon_one.martyr_enemy)
if (visible2 (self.demon_one, self.demon_one.martyr_enemy))
st += "\x8b ";
else
st += "\x0b ";
else
st += " ";
st += "\x93.. Set primary \<waypoint\> \n";
if (self.demon_one.demon_two)
if (visible2 (self.demon_one, self.demon_one.demon_two))
st += "\x8b ";
else
st += "\x0b ";
else
st += " ";
st += "\x94.. Set secondary \<waypoint\> \n";
custom_demon_name(self.demon_one);
st += self.demon_one.penance_time == 1 ? "* " : " ";
st += "\x95.. Follow me! \n";
st += self.demon_one.penance_time == 2 ? "* " : " ";
st += "\x96.. Stay there! \n";
st += self.demon_one.penance_time == 3 ? "* " : " ";
st += "\x97.. Use your waypoints! \n\n";
//1 “
//2 ”
//3 •
//4
//5 —
//CenterPrint5(self, self.demon_one.undercover_name, self.demon_one.netname,"\n\n", st2, "\n\n”.. Soldier inventory \n\n•.. Set primary ÷áùðïéîô \n.. Set secondary ÷áùðïéîô\n—.. Follow me! \n˜.. Stay there! \n\nš®® Detonate soldier brain\n\n.. Îïôèéîç \n");
local string st4;
st4="\n•.. Follow me! \n.. Stay there! \n—.. Use your waypoints! ";
if (self.demon_one.penance_time==1)
st4="\n* •.. Follow me! \n.. Stay there! \n—.. Use your waypoints! ";
else if (self.demon_one.penance_time==2)
st4="\n•.. Follow me! \n* .. Stay there! \n—.. Use your waypoints! ";
else if (self.demon_one.penance_time==3)
st4="\n•.. Follow me! \n.. Stay there! \n* —.. Use your waypoints! ";
CenterPrint7(self, self.demon_one.undercover_name, self.demon_one.netname,"\n\n", st2,
st3,st4,"\n\nš®® Detonate soldier brain\n\n.. Îïôèéîç \n");
st += "\x9a\<..\> Detonate soldier brain\n";
st += "\x9b.. Main Soldier Menu \n";
st += "\x92.. \<Nothing\> \n";
CenterPrint (self, st);
return;
}
else
{
if (self.army_ready==TRUE)
{
CenterPrint(self, " Áãôéïî: \n\n“.. Teleport soldier \n\n.. Îïôèéîç \n\n\nReady for teleporting!");
st += " \<Action\>: \n\n";
st += "“.. Teleport soldier \n\n";
st += ".. \<Nothing\> \n\n\n";
st += "Ready for teleporting!";
CenterPrint (self, st);
}
else
{
CenterPrint3(self, " Áãôéïî: \n\n\n\n.. Îïôèéîç \n\n\nPreparing teleporting...\n\nÔéíå ìåæô: ",st,st2);
st += " \<Action\>: \n\n\n\n";
st += ".. \<Nothing\> \n\n\n";
st += "Preparing teleporting...\n\n";
st += "\<Time\> \<left\>: ";
local float readytime = fabs (floor (GetArmyTimer(self).nextthink - time));
local float minutes = floor (readytime / 60);
local float seconds = readytime % 60;
if (minutes)
st += ftos(minutes) + " minute" + (minutes == 1 ? ", " : "s, ");
st += ftos(seconds) + " second" + (seconds == 1 ? ".\n" : "s.\n");
CenterPrint (self, st);
}
}
};
//ideas:
/*
ideas:
//((centered soldier status
((centered soldier status
// \n attacking)) ((xxxx)) - seeking xxxx - standing - on patrol|walking - following you - following u (forced)//1 prt (2 vars, one for displaying and keep preference and the other for ai)
//((1.. tactic mode: normal - agressive - static // 1 prt))
@ -191,89 +170,80 @@ st3,st4,"\n\n
// * primary
//in waypoint donothing, if soldier already have assinged the corresponding waypoint to another entity dremove(self);
};
*/
void() Menu_Army2 =
{
local string st,st2,st3,st4,st5,st6,st7;
st3="";
local string st;
local string st_range;
if (self.demon_one.enemy!=world && visible2(self.demon_one,self.demon_one.enemy))
{
st2="<EFBFBD>Ÿ Óïìäéåò Óôáôõó <20>Ÿ\n\nAttacking ";
st3=GetEnemyName(self.demon_one.enemy);
}
st = "";
st += "\x9d\x9f \<Soldier Status\> \x9d\x9f\n\n";
if (self.demon_one.enemy != world && visible2 (self.demon_one, self.demon_one.enemy))
st += "Attacking " + GetEnemyName (self.demon_one.enemy) + "\n\n";
else if (self.demon_one.enemy!=world)
{
st2="<EFBFBD>Ÿ Óïìäéåò Óôáôõó <20>Ÿ\n\nSeeking ";
st3=GetEnemyName(self.demon_one.enemy);
}
else if (self.demon_one.goalentity==self)
st2="<EFBFBD>Ÿ Óïìäéåò Óôáôõó <20>Ÿ\n\nFollowing You";
else if (self.demon_one.goalentity==world)
st2="<EFBFBD>Ÿ Óïìäéåò Óôáôõó <20>Ÿ\n\nStanding";
else if (self.demon_one.goalentity!=world)
st2="<EFBFBD>Ÿ Óïìäéåò Óôáôõó <20>Ÿ\n\nOn Patrol";
st += "Seeking " + GetEnemyName (self.demon_one.enemy) + "\n\n";
else if (self.demon_one.goalentity == self)
st += "Following You\n\n";
else if (self.demon_one.goalentity == world)
st += "Standing\n\n";
else if (self.demon_one.goalentity != world)
st += "On Patrol\n\n";
st5=""; // this will be static range
if (self.demon_one.is_malfunctioning==0)
{
if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: normal\n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: normal\n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: normal\n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: jump \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: normal\n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: jump \n";
}
else if (self.demon_one.is_malfunctioning==1)
{
if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: seek \n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: seek \n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: seek \n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: jump \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: seek \n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: jump \n";
}
else if (self.demon_one.is_malfunctioning==2)
{
if (self.demon_one.army_ready == 0)
st5=".. Óôáôéã Òáîçå: none \n";
else if (self.demon_one.army_ready == 1)
st5=".. Óôáôéã Òáîçå: small \n";
else if (self.demon_one.army_ready == 2)
st5=".. Óôáôéã Òáîçå: medium\n";
else if (self.demon_one.army_ready == 3)
st5=".. Óôáôéã Òáîçå: large \n";
st += "\x93.. Tactic Mode: ";
if (self.demon_one.is_malfunctioning == 0)
st += "\<normal\>\n";
else if (self.demon_one.is_malfunctioning == 1)
st += "\<seek \>\n";
else if (self.demon_one.is_malfunctioning == 2)
st += "\<static\>\n";
if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: static\n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==1)
st4="\n\n“.. Ôáãôéã Íïäå: static\n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: stop \n";
else if (self.demon_one.is_detpacking==0 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: static\n”.. Åîçáçå Åîåíù: no \n•.. Ïî Ïâóôáãìå: jump \n";
else if (self.demon_one.is_detpacking==1 && self.demon_one.is_toffingadet==0)
st4="\n\n“.. Ôáãôéã Íïäå: static\n”.. Åîçáçå Åîåíù: yes \n•.. Ïî Ïâóôáãìå: jump \n";
}
if (self.demon_one.num_mines==0)
st6="˜.. Òåðïòôó: all \n\n™.. Inventory .. Îïôèéîç\n\nÍáø ÈÐ: ";
else if (self.demon_one.num_mines==1)
st6="˜.. Òåðïòôó: most \n\n™.. Inventory .. Îïôèéîç\n\nÍáø ÈÐ: ";
else if (self.demon_one.num_mines==2)
st6="˜.. Òåðïòôó: some \n\n™.. Inventory .. Îïôèéîç\n\nÍáø ÈÐ: ";
st += "\x94.. Engage Enemy: ";
if (self.demon_one.is_detpacking)
st += "\<yes \>\n";
else
st += "\<no \>\n";
st += "\x95.. On Obstacle: ";
if (self.demon_one.is_toffingadet) // FIXME: Eww, what a horrible variable name
st += "\<stop \>\n";
else
st += "\<jump \>\n";
if (self.demon_one.is_malfunctioning == 2) {
st += "\x96.. Static Range: ";
if (self.demon_one.army_ready == 0)
st += "\<none \>\n";
else if (self.demon_one.army_ready == 1)
st += "\<small \>\n";
else if (self.demon_one.army_ready == 2)
st += "\<medium\>\n";
else if (self.demon_one.army_ready == 3)
st += "\<large \>\n";
}
st += "\x98.. Reports: ";
if (self.demon_one.num_mines==0)
st += "\<all \>\n";
else if (self.demon_one.num_mines==1)
st += "\<most \>\n";
else if (self.demon_one.num_mines==2)
st += "\<some \>\n";
else if (self.demon_one.num_mines==3)
st6="˜.. Òåðïòôó: none \n\n™.. Inventory .. Îïôèéîç\n\nÍáø ÈÐ: ";
st += "\<none \>\n";
st += "\x99.. Inventory \n\n";
st += "\x9b.. Main Soldier Menu \n";
st += "\x92.. \<Nothing\> \n\n";
st += "\<Max HP\>: ";
// "™.. Soldier inventory... "
st7=ftos(floor(self.demon_one.max_health));
st += ftos (floor (self.demon_one.max_health));
CenterPrint7(self,st,st2,st3,st4,st5,st6,st7);
CenterPrint (self, st);
};
void(float inp) Menu_Army_Input1;
@ -283,10 +253,13 @@ void(float inp) Menu_Army_Input =
{
if (self.job & JOB_DEMON_OUT)
{
if (self.demon_one.is_haxxxoring == 1) Menu_Army_Input2(inp);
else Menu_Army_Input1(inp);
if (self.demon_one.is_haxxxoring == 1)
Menu_Army_Input2(inp);
else
Menu_Army_Input1(inp);
}
else Menu_Army_Input1(inp);
else
Menu_Army_Input1(inp);
};
void(float inp) Menu_Army_Input2 =
@ -335,43 +308,56 @@ void(float inp) Menu_Army_Input2 =
if (inp == 3) // jump or stop??
{
self.impulse = 0;
if (self.demon_one.is_toffingadet == 0) self.demon_one.is_toffingadet=1;
else self.demon_one.is_toffingadet=0;
self.impulse = 0;
if (self.demon_one.is_toffingadet == 0)
self.demon_one.is_toffingadet = 1;
else
self.demon_one.is_toffingadet = 0;
}
if (inp == 4 && self.demon_one.is_malfunctioning == 2) // static range, small mdeium or large
{
self.impulse = 0;
self.demon_one.army_ready=self.demon_one.army_ready+1;
self.impulse = 0;
self.demon_one.army_ready += 1;
if (self.demon_one.army_ready > 3)
self.demon_one.army_ready=0;
return;
}
if (self.demon_one.army_ready > 3)
self.demon_one.army_ready = 0;
return;
}
if (inp == 6)
{
self.impulse = 0;
self.demon_one.num_mines=self.demon_one.num_mines+1;
self.impulse = 0;
self.demon_one.num_mines = self.demon_one.num_mines + 1;
if (self.demon_one.num_mines > 3)
self.demon_one.num_mines=0;
if (self.demon_one.num_mines > 3)
self.demon_one.num_mines = 0;
self.demon_one.is_haxxxoring = 0;
return;
}
else if (inp == 7) // Army info
{
local entity oself;
ResetMenu();
local entity oself;
oself=self;
self=self.demon_one;
oself = self;
self = self.demon_one;
Grunty_StateInv();
self=oself;
self = oself;
self.impulse = 0;
return;
}
if (inp == 9) {
self.current_menu = MENU_ARMY;
self.menu_count = MENU_REFRESH_RATE;
self.impulse = 0;
self.demon_one.is_haxxxoring = 0;
return;
}
};
@ -591,7 +577,13 @@ void(float inp) Menu_Army_Input1 =
self.impulse = 0;
return;
}
if (inp == 9) {
self.current_menu = MENU_ARMY;
self.menu_count = MENU_REFRESH_RATE;
self.impulse = 0;
self.demon_one.is_haxxxoring = 1;
return;
}
};
@ -904,6 +896,7 @@ string(entity sld) GetFriendlyMessage =
if (rnum < 0.5)
return "try to not shoot me when fighting enemy! heh\n";
else return "lets destroy the enemy!\n";
else
return "lets destroy the enemy!\n";
//else return "Hope I don't crash the server\n";
};

View file

@ -243,6 +243,7 @@
#define TFSTATE_RL_LASER 262144 //CH set when aiming laser with rl
//SB
#define TFSTATE_C4THROW 524288 // we're priming the detpack
#define TFSTATE_ASSAULTCANNON 1048576 // we're firing an assault cannon
// Defines used by TF_T_Damage (see combat.qc)

View file

@ -442,14 +442,13 @@ void() BerserkerKillTimer =
{
if (!(self.tfstate & TFSTATE_CONCUSSIONED))
stuffcmd(self.owner, "v_idlescale 0\n");
if (self.has_sensor)
{
deathmsg = DMSG_BERSERK;
TF_T_Damage(self.owner, self.owner, self.owner, self.owner.health, TF_TD_IGNOREARMOUR, TF_TD_OTHER);
TF_T_Damage(self.owner, self.owner, self.owner, self.owner.health, TF_TD_IGNOREARMOUR, TF_TD_OTHER);
}
self.job = self.job - (self.job & JOB_ACTIVE); //- OfN
self.owner.is_abouttodie = FALSE;
dremove(self);
@ -463,7 +462,7 @@ void() JobBerserker =
return;
newmis = spawn();
newmis.classname = "timer";
newmis.classname = "berserker_timer";
newmis.nextthink = time + BERSERK_TIME + 1;
newmis.think = BerserkerKillTimer;
newmis.owner = self;

View file

@ -575,7 +575,7 @@ void() player_assaultcannonup1 =[$nailatt1, player_assaultcannonup2 ]
// Let him/her walk again
//if (!self.is_haxxxoring) //- OfN already checked on TeamFortress_SetSpeed()
//{
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
//}
@ -617,7 +617,7 @@ void() player_assaultcannonup2 =[$nailatt1, player_assaultcannonup1 ]
// Let him/her walk again
//if (!self.is_haxxxoring) //- OfN already checked on TeamFortress_SetSpeed()
//{
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
//}
@ -661,7 +661,7 @@ void() player_assaultcannon1 =[$nailatt1, player_assaultcannon2 ]
{
stuffcmd(self, "v_idlescale 0\n");
// Let him/her walk again
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
self.weaponframe = 0;
@ -697,7 +697,7 @@ void() player_assaultcannon2 =[$nailatt2, player_assaultcannon1 ]
{
stuffcmd(self, "v_idlescale 0\n");
// Let him/her walk again
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
self.weaponframe = 0;
@ -736,7 +736,7 @@ void() player_assaultcannondown1 =[$nailatt1, player_assaultcannondown1 ]
self.fire_held_down = FALSE;
// Let him/her walk again
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
if (self.ammo_shells < 1 || self.ammo_cells < 6)

View file

@ -1641,9 +1641,13 @@ void(entity p) TeamFortress_SetSpeed =
p.maxspeed = p.maxspeed + 200;
}
stuffcmd(p,"cl_backspeed 1000\n");
stuffcmd(p,"cl_forwardspeed 1000\n");
stuffcmd(p,"cl_sidespeed 1000\n");
// 8th, check if they're firing an Assault Cannon
if (p.tfstate & TFSTATE_ASSAULTCANNON)
p.maxspeed /= 8;
stuffcmd(p,"cl_backspeed 1000\n");
stuffcmd(p,"cl_forwardspeed 1000\n");
stuffcmd(p,"cl_sidespeed 1000\n");
};
//=========================================================================

View file

@ -29,6 +29,11 @@ boolean (entity ent, integer index) Waypoint_IsValid =
return index > 0 && index < ent.waypoint_count;
};
integer (entity ent) Waypoint_Count =
{
return ent.waypoint_count;
};
vector (entity ent, integer index) Waypoint_Get =
{
if (!Waypoint_IsValid (ent, index))

View file

@ -1,4 +1,5 @@
boolean (entity ent, integer index) Waypoint_IsValid;
integer (entity ent) Waypoint_Count;
vector (entity ent, integer index) Waypoint_Get;
void (entity ent, integer index, vector loc) Waypoint_Set;
void (entity ent, vector loc) Waypoint_Append;

View file

@ -1217,21 +1217,23 @@ void(float shotcount, vector dir, vector spread) FireBullets =
if (self.current_weapon & WEAP_ASSAULT_CANNON)
{
direction = dir + crandom()*0.2*v_right + crandom()*0.1*v_up;
direction = dir;
direction += (crandom() + crandom()) * 0.08 * v_right;
direction += (crandom() + crandom()) * 0.05 * v_up;
traceline (src, src + direction*2048, FALSE, self); //WK 2048
}
else
traceline (src, src + dir*1024, FALSE, self); //WK 2048
puff_org = trace_endpos - dir*4;
traceline (src, src + dir * 1024, FALSE, self); //WK 2048
puff_org = trace_endpos - dir * 4;
puff_count = shotcount;
while (shotcount > 0)
{
direction = dir + crandom()*spread_x*v_right + crandom()*spread_y*v_up;
direction = dir + crandom() * spread_x * v_right + crandom() * spread_y * v_up;
if (self.current_weapon & WEAP_ASSAULT_CANNON)
traceline (src, src + direction*2048, FALSE, self); //WK 2048
traceline (src, src + direction * 2048, FALSE, self); //WK 2048
else
traceline (src, src + direction*1024, FALSE, self); //WK 2048
traceline (src, src + direction * 1024, FALSE, self); //WK 2048
if (trace_fraction != 1.0)
{
if (self.current_weapon & WEAP_ASSAULT_CANNON) //WK Sinth's bugfix
@ -3237,7 +3239,7 @@ void() W_Attack =
self.heat = 1;
makeImmune(self,time+2);
//self.immune_to_check = time + 2;
self.tfstate = self.tfstate | TFSTATE_CANT_MOVE;
self.tfstate = self.tfstate | TFSTATE_ASSAULTCANNON;
TeamFortress_SetSpeed(self);
player_assaultcannonup1();
}
@ -4645,7 +4647,7 @@ void() W_WeaponFrame =
self.fire_held_down = FALSE;
// Let him/her walk again
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_CANT_MOVE);
self.tfstate = self.tfstate - (self.tfstate & TFSTATE_ASSAULTCANNON);
TeamFortress_SetSpeed(self);
player_run ();