mirror of
https://git.code.sf.net/p/quake/prozac-qfcc
synced 2024-11-10 07:11:51 +00:00
- 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:
parent
8e2d5f66e6
commit
6fca29e666
8 changed files with 199 additions and 194 deletions
341
army.qc
341
army.qc
|
@ -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";
|
||||
};
|
||||
|
|
1
defs.qh
1
defs.qh
|
@ -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)
|
||||
|
|
7
jobs.qc
7
jobs.qc
|
@ -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;
|
||||
|
|
10
player.qc
10
player.qc
|
@ -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)
|
||||
|
|
10
tfort.qc
10
tfort.qc
|
@ -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");
|
||||
};
|
||||
|
||||
//=========================================================================
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
|
|
18
weapons.qc
18
weapons.qc
|
@ -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 ();
|
||||
|
|
Loading…
Reference in a new issue