Various compile fixes for the new qfcc.

This commit is contained in:
Bill Currie 2011-03-20 17:27:47 +09:00
parent a8fab74a2c
commit 7d1f271764
58 changed files with 468 additions and 411 deletions

View file

@ -5,7 +5,7 @@ SRC= buttons.r builtins.r client.r combat.r defs.r doors.r dynlight.r \
HEADERS = client.rh paroxysm.rh config.rh
RFLAGS += -DQUAKEWORLD -Wall -Werror -g
RFLAGS += -DQUAKEWORLD -Wall -Werror -g -Cvector-components
QFCC = qfcc
INSTALLDIR = $(HOME)/.quake/paroxysm/

View file

@ -103,6 +103,7 @@ entity() FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil;
};
void() GotoNextMap =
@ -385,6 +386,7 @@ float(entity e) ValidateUser =
}
return true;
*/
return 1;
};
/*

View file

@ -83,7 +83,7 @@ void (entity targ, entity attacker) Killed =
ClientObituary (@self, attacker);
@self.takedamage = DAMAGE_NO;
@self.touch = NIL;
@self.touch = nil;
@self.effects = 0;
/*SERVER

View file

@ -403,9 +403,9 @@ weapon_touch
void() weapon_touch =
{
local float hadammo, best, new = NIL, old;
local float hadammo, best, new = nil, old;
local entity stemp;
local float leave = NIL;
local float leave = nil;
// For client weapon_switch
local float w_switch;
if (!(other.flags & FL_CLIENT))
@ -1218,7 +1218,7 @@ void() Spawn_QuadCore =
@self.quadcore = qcore;
qcore.nextthink = time + 999999999;
qcore.think = NIL;
qcore.think = nil;
};
/*QUAKED item_artifact_super_damage (0 .5 .8) (-16 -16 -24) (16 16 32)

View file

@ -21,6 +21,7 @@ vector() SetMovedir =
}
@self.angles = '0 0 0';
return nil;
};
/*
================

View file

@ -54,7 +54,7 @@ void() multi_trigger =
// we can't just remove (@self) here, because this is a touch function
// called wheil C code is looping through area links...
@self.touch = NIL;
@self.touch = nil;
@self.nextthink = time + 0.1;
@self.think = SUB_Remove;
}

View file

@ -43,7 +43,7 @@ void () brik_touch =
if (@self.velocity == '0 0 0') {
@self.avelocity = '0 0 0';
@self.solid = SOLID_NOT;
@self.touch = NIL;
@self.touch = nil;
@self.think = SUB_Remove;
@self.nextthink = time + (2 * random());
return;

View file

@ -1069,7 +1069,7 @@ W_ChangeWeapon
void() W_ChangeWeapon =
{
local float no_ammo = 0;
local float selected = NIL;
local float selected = nil;
@self.which_ammo = 0; // Default ammo to shells for SuperShotgun

View file

@ -1,5 +1,5 @@
all: qwprogs.dat
qwprogs.dat: progs.src *.qc
qfcc -Werror -Wall -g --advanced
qfcc -Cvector-components -Werror -Wall -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h

View file

@ -213,6 +213,7 @@ FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil; //FIXME need no return
};
void ()
@ -488,6 +489,7 @@ ValidateUser =
return true;
*/
return 1;
};
/*

View file

@ -47,6 +47,7 @@ SetMovedir =
}
self.angles = '0 0 0';
return nil;
};
void ()

View file

@ -220,6 +220,7 @@ entity() FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return world; //FIXME need noreturn
};

View file

@ -46,6 +46,7 @@ vector() SetMovedir =
}
self.angles = '0 0 0';
return '0 0 0';
};
/*

View file

@ -366,6 +366,7 @@ float(float color) TeamColorIsLegal =
return TRUE;
if( (color == TEAM_COLOR2) && (TEAM_COLOR2 >= 0) )
return TRUE;
return FALSE;
};
float(float t) TeamGetShirt =

View file

@ -57,9 +57,9 @@ checks to see if an entity is on the bot's stack
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(integer)targetOnstack:(Target)scot
-(integer)targetOnstack:(Target *)scot
{
if (scot == NIL)
if (scot == nil)
return FALSE;
else if (targets[0] == scot)
return 1;
@ -83,9 +83,9 @@ LIFO stack, this will be the bot's new targets[0]
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(void)targetAdd:(Target)e
-(void)targetAdd:(Target *)e
{
if (e == NIL)
if (e == nil)
return;
if ([self targetOnstack:e])
return;
@ -110,26 +110,26 @@ is gone too.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(void)targetDrop:(Target)e
-(void)targetDrop:(Target *)e
{
switch ([self targetOnstack:e]) {
case 1:
targets[0] = targets[1];
targets[1] = targets[2];
targets[2] = targets[3];
targets[3] = NIL;
targets[3] = nil;
break;
case 2:
targets[0] = targets[2];
targets[1] = targets[3];
targets[2] = targets[3] = NIL;
targets[2] = targets[3] = nil;
break;
case 3:
targets[0] = targets[3];
targets[1] = targets[2] = targets[3] = NIL;
targets[1] = targets[2] = targets[3] = nil;
break;
case 4:
targets[0] = targets[1] = targets[2] = targets[3] = NIL;
targets[0] = targets[1] = targets[2] = targets[3] = nil;
default:
break;
}
@ -138,7 +138,7 @@ is gone too.
-(void)targetClearAll
{
targets[0] = targets[1] = targets[2] = targets[3] = NIL;
targets[0] = targets[1] = targets[2] = targets[3] = nil;
}
/*
@ -150,18 +150,18 @@ Bot has lost its target.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(void)lost:(Target)targ :(integer)success
-(void)lost:(Target *)targ :(integer)success
{
if (!targ)
return;
[self targetDrop:targ];
if ([targ classname] == "waypoint")
[(Waypoint)targ clearRouteForBot:self];
[(Waypoint *)targ clearRouteForBot:self];
// find a new route
if (!success) {
targets[0] = targets[1] = targets[2] = targets[3] = NIL;
targets[0] = targets[1] = targets[2] = targets[3] = nil;
last_way = [self findWaypoint:current_way];
[Waypoint clearMyRoute:self];
b_aiflags = 0;
@ -172,7 +172,7 @@ Bot has lost its target.
if (targ.ent.flags & FL_ITEM) {
if (!targ.ent.model)
targ._last = NIL;
targ._last = nil;
else
targ._last = self;
}
@ -192,19 +192,19 @@ removed.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(void)checkLost:(Target)targ
-(void)checkLost:(Target *)targ
{
local vector dist;
if (targ == NIL)
if (targ == nil)
return;
dist = [targ realorigin] - ent.origin;
dist_z = 0;
dist.z = 0;
// waypoints and items are lost if you get close enough to them
if ([targ isKindOfClass:[Waypoint class]]) {
local Waypoint way = (Waypoint) targ;
local Waypoint *way = (Waypoint *) targ;
if ([way classname] == "waypoint") {
if (!(b_aiflags & (AI_SNIPER | AI_AMBUSH))) {
if (b_aiflags & AI_RIDE_TRAIN) {
@ -222,7 +222,7 @@ removed.
[self lost:way :TRUE];
}
} else if ([targ isKindOfClass:[Bot class]]) {
local Bot bot = (Bot) targ;
local Bot *bot = (Bot *) targ;
if (bot.ent.health <= 0)
[self lost:bot :TRUE];
else if ((coop) || (teamplay && bot.ent.team == ent.team)) {
@ -258,7 +258,7 @@ removed.
if (targ.ent.frame) {
[self lost:targ :TRUE];
if (ent.enemy == targ.ent)
ent.enemy = NIL;
ent.enemy = nil;
// if (target[0])
// [self getPath:target[0] :TRUE];
}
@ -275,9 +275,9 @@ removed.
}
// lose any target way above the bot's head
// FIXME: if the bot can fly in your mod..
if ((targ.ent.origin_z - ent.origin_z) > 64) {
if ((targ.ent.origin.z - ent.origin.z) > 64) {
dist = targ.ent.origin - ent.origin;
dist_z = 0;
dist.z = 0;
if (vlen (dist) < 32)
if (ent.flags & FL_ONGROUND)
if (![self recognizePlat:FALSE])
@ -328,7 +328,7 @@ based b_aiflags.
}
} else {
if (newt.targetname) {
newt = find (NIL, target, newt.targetname);
newt = find (nil, target, newt.targetname);
if (newt.health > 0) {
ent.enemy = newt;
[self weaponSwitch:1];
@ -355,7 +355,7 @@ based b_aiflags.
b_aiflags &= ~AI_SUPER_JUMP;
if ([self canRJ]) {
[self jump];
ent.v_angle_x = b_angle.x = 80;
ent.v_angle.x = b_angle.x = 80;
buttons |= 1;
} else
[self lost: targets[0] :FALSE];
@ -378,7 +378,7 @@ based b_aiflags.
} else {
if ([self recognizePlat:FALSE]) {
v = realorigin (trace_ent) + trace_ent.origin - ent.origin;
v_z = 0;
v.z = 0;
if (vlen (v) < 24)
keys &= ~KEY_MOVE;
else {
@ -392,7 +392,7 @@ based b_aiflags.
newt = [self findThing:"plat"];
if (newt.state != 1) {
v = ent.origin - realorigin (newt);
v_z = 0;
v.z = 0;
if (vlen (v) > 96)
keys &= ~KEY_MOVE;
else
@ -434,7 +434,7 @@ confused
-(void)path
{
local Waypoint jj;
local Waypoint *jj;
local entity e, tele;
[self checkLost:targets[0]];
@ -480,12 +480,12 @@ confused
// linked doors fix
if (trace_ent.owner)
trace_ent = trace_ent.owner;
if ((trace_ent.health > 0) && (ent.enemy == NIL)) {
if ((trace_ent.health > 0) && (ent.enemy == nil)) {
ent.enemy = trace_ent;
[self weaponSwitch:1];
b_aiflags |= AI_BLIND; // nick knack paddy hack
} else if (trace_ent.targetname) {
e = find (NIL, target, trace_ent.targetname);
e = find (nil, target, trace_ent.targetname);
if (e.health > 0) {
ent.enemy = e;
[self weaponSwitch:1];
@ -525,7 +525,7 @@ the bot finds things it wants to kill/grab.
// 50 - 90 bot will hunt these as vital items
// *!* Make sure you add code to checkLost to remove the target *!*
-(integer)priority:(Bot)bot
-(integer)priority:(Bot *)bot
{
local integer p;
@ -551,7 +551,7 @@ the bot finds things it wants to kill/grab.
return p;
}
-(integer)priorityForThing:(Target)thing
-(integer)priorityForThing:(Target *)thing
{
local integer p;
// This is the most executed function in the bot. Careful what you do here.
@ -572,8 +572,8 @@ the bot finds things it wants to kill/grab.
-(void)lookForCrap:(integer)scope
{
local Target foe, best = NIL;
local Waypoint way;
local Target *foe, *best = nil;
local Waypoint *way;
local integer thatp, bestp;
local float radius;
@ -604,7 +604,7 @@ the bot finds things it wants to kill/grab.
thatp = [self priorityForThing:way];
if (thatp)
if (!scope)
if (!sisible (ent, NIL, way.origin))
if (!sisible (ent, nil, way.origin))
thatp = 0;
if (thatp > bestp) {
bestp = thatp;
@ -613,7 +613,7 @@ the bot finds things it wants to kill/grab.
way = way.chain;
}
if (best == NIL)
if (best == nil)
return;
if (![self targetOnstack:best]) {
[self targetAdd:best];
@ -665,7 +665,7 @@ generally making the bot look good.
view = normalize (view - ent.origin);
}
view = vectoangles (view);
view_x = view_x * -1;
view.x = view.x * -1;
b_angle = view;
} else if (targets[0]) {
view = [targets[0] realorigin];
@ -673,7 +673,7 @@ generally making the bot look good.
view = view + '0 0 48';
view -= (ent.origin + ent.view_ofs);
view = vectoangles (view);
view_x = -view_x;
view.x = -view.x;
b_angle = view;
} else
b_angle.x = 0;
@ -687,7 +687,7 @@ generally making the bot look good.
ent.v_angle.x += 360;
while (ent.v_angle.x > 180)
ent.v_angle.x -= 360;
} else if ((ent.enemy == NIL || ent.enemy.movetype == MOVETYPE_PUSH)
} else if ((ent.enemy == nil || ent.enemy.movetype == MOVETYPE_PUSH)
&& (targets[0] ? [targets[0] classname] != "player" : 1)) {
keys &= ~KEY_LOOK;
ent.v_angle = b_angle;
@ -734,9 +734,9 @@ frame, the ai_time limits it's actual updating
keys = 0;
b_aiflags = 0;
[Waypoint clearMyRoute:self];
targets[0] = targets[1] = targets[2] = targets[3] = NIL;
ent.enemy = NIL;
last_way = NIL;
targets[0] = targets[1] = targets[2] = targets[3] = nil;
ent.enemy = nil;
last_way = nil;
return;
}

View file

@ -47,9 +47,9 @@ integer bot_fight_linker;
/*
weapon_range
_x "sweet spot range" - try to maintain this range if possible
_y minimum range bot can be to be effective (rl/gl) (move away)
_z maximum range bot can be to be effective (lg/axe) (move in)
.x "sweet spot range" - try to maintain this range if possible
.y minimum range bot can be to be effective (rl/gl) (move away)
.z maximum range bot can be to be effective (lg/axe) (move in)
*/
vector (integer wep)
weapon_range =
@ -77,7 +77,7 @@ weapon_range =
};
@implementation Bot (Fight)
-(float)sizePlayer:(Target)targ
-(float)sizePlayer:(Target *)targ
{
local float sz;
local entity e = targ.ent;
@ -130,7 +130,7 @@ weapon_range =
if (waypoint_mode > WM_LOADED)
return;
avoid = NIL;
avoid = nil;
if (ent.enemy) {
v = ent.origin - realorigin (ent.enemy);
@ -142,7 +142,7 @@ weapon_range =
}
avdist = 256;
foe = find (NIL, classname, "grenade");
foe = find (nil, classname, "grenade");
while (foe) {
flen = vlen (foe.origin - ent.origin);
if (flen < avdist) {
@ -152,7 +152,7 @@ weapon_range =
foe = find (foe, classname, "grenade");
}
if (!avoid) {
foe = find (NIL, classname, "missile");
foe = find (nil, classname, "missile");
while (foe) {
if (foe.owner != ent) {
flen = vlen (foe.origin - ent.origin);
@ -164,7 +164,7 @@ weapon_range =
foe = find(foe, classname, "missile");
}
if (!avoid) {
foe = find(NIL, classname, "spike");
foe = find(nil, classname, "spike");
while (foe) {
if (foe.owner != ent) {
flen = vlen(foe.origin - ent.origin);
@ -185,7 +185,7 @@ weapon_range =
if (foe.health > 0) {
flen = vlen (foe.origin - ent.origin);
if (flen < foedist) {
local Target targ = [Target forEntity:foe];
local Target *targ = [Target forEntity:foe];
tsz = [self sizePlayer:targ];
if (tsz < foesz) {
if ([self canSee:targ]) {
@ -202,7 +202,7 @@ weapon_range =
}
} else {
local integer i = 0;
local Bot foe;
local Bot *foe;
for (i = 0; i < 32; i++) {
if (!(foe = players[i])) continue;
if (foe == self) continue;
@ -271,7 +271,7 @@ Pick a weapon based on range / ammo
}
v = weapon_range (flag);
if (brange < v_y || brange > v_z)
if (brange < v.y || brange > v.z)
it &= ~flag;
else {
if (pulse)
@ -286,10 +286,10 @@ Pick a weapon based on range / ammo
// quick little function to stop making him shoot the wrong way ! Argh
local float g;
g = angcomp (ent.v_angle_x, b_angle.x);
g = angcomp (ent.v_angle.x, b_angle.x);
if (fabs (g) > 30)
return; // argh, too far away
g = angcomp (ent.v_angle_y, b_angle.y);
g = angcomp (ent.v_angle.y, b_angle.y);
if (fabs (g) > 30)
return; // not again!
buttons |= 1;
@ -307,13 +307,13 @@ attacking an enemy.
local vector v, v1 = '0 0 0', v2 = '0 0 0', org;
if (ent.enemy.health <= 0) {
ent.enemy = NIL;
ent.enemy = nil;
return;
} else if (!ent.enemy.takedamage) {
ent.enemy = NIL;
ent.enemy = nil;
return;
} else if (![self canSee:[Target forEntity:ent.enemy]]) {
ent.enemy = NIL;
ent.enemy = nil;
return;
}
@ -323,10 +323,10 @@ attacking an enemy.
// decide if I should shoot
foedist = vlen (org - ent.origin);
v = weapon_range ((integer)ent.weapon);
if (foedist > v_y && foedist < v_z) {
if (foedist > v.y && foedist < v.z) {
traceline (ent.origin + ent.view_ofs,
ent.origin + ent.view_ofs + v_forward * v_z, FALSE, ent);
if (vlen(trace_endpos - (ent.origin + ent.view_ofs)) >= v_y) {
ent.origin + ent.view_ofs + v_forward * v.z, FALSE, ent);
if (vlen(trace_endpos - (ent.origin + ent.view_ofs)) >= v.y) {
// try to avoid shooting teammates
if (trace_ent.classname == "player")
if ((trace_ent.team == ent.team && teamplay) || (coop))
@ -355,19 +355,19 @@ attacking an enemy.
v = avoid.velocity;
else
v = normalize (avoid.origin - ent.origin);
v1_x = v_y;
v1_y = v_y * -1;
v2_x = v_y;
v2_y = v_y * -1;
v1.x = v.y;
v1.y = v.y * -1;
v2.x = v.y;
v2.y = v.y * -1;
foedist = vlen (avoid.origin - (ent.origin + v1));
if (foedist < vlen (avoid.origin - (ent.origin + v2)))
[self walkmove:v2];
else
[self walkmove:v1];
} else if (!(ent.enemy.flags & FL_MONSTER)) {
if (foedist + 32 < v_x)
if (foedist + 32 < v.x)
[self walkmove:ent.origin - org];
else if (foedist - 32 > v_x)
else if (foedist - 32 > v.x)
[self walkmove:org - ent.origin];
else if (wallhug)
[self walkmove:v_right];

View file

@ -43,7 +43,7 @@ this notice in its entirety.
#include "libfrikbot.h"
#include "Array.h"
bot_data_t [32] bot_data = {
bot_data_t bot_data[32] = {
{"Vincent", 11, 0},
{"Bishop", 1, 3},
{"Nomad", 13, 2},
@ -78,7 +78,7 @@ bot_data_t [32] bot_data = {
{"Mercury", 10, 5},
};
Array bot_array;
Array *bot_array;
@implementation Bot (Misc)
/*
@ -86,31 +86,31 @@ BotName
Sets bot's name and colors
*/
+(bot_data_t [])name:(integer)r
+(bot_data_t *)name:(integer)r
{
if (r < 0 || r >= 32)
return NIL;
return nil;
return &bot_data[r];
}
+(bot_data_t [])randomName
+(bot_data_t *)randomName
{
local integer test;
local bot_data_t [] h;
local bot_data_t *h;
local entity t;
while (1) {
test = (integer) (32 * random ());
h = [Bot name:test];
t = find (NIL, netname, h.name);
if (t == NIL)
t = find (nil, netname, h.name);
if (t == nil)
return h;
}
}
+(void)kick
{
local Bot ty;
local Bot *ty;
if ([bot_array count]) {
ty = [bot_array objectAtIndex:0];
@ -141,10 +141,10 @@ is the entity in the bot's field of view
yawn = (yawn + targ.view_ofs) - (ent.origin + ent.view_ofs);
yawn = normalize (yawn);
yawn = vectoangles (yawn);
g = angcomp (ent.v_angle_x, yawn_x);
g = angcomp (ent.v_angle.x, yawn.x);
if (fabs (g) > 45)
return FALSE;
g = angcomp (ent.v_angle_y, yawn_y);
g = angcomp (ent.v_angle.y, yawn.y);
if (fabs (g) > 60)
return FALSE;
return TRUE;
@ -183,6 +183,7 @@ sisible =
return TRUE;
else if (trace_fraction == 1)
return TRUE;
return FALSE;
};
/*

View file

@ -79,17 +79,17 @@ void (vector start, vector mins, vector maxs, vector end, float type,
// use mouse emulation
anglespeed = 1.5 * real_frametime;
// 1.5 is the default cl_anglespeedkey & bot always has +speed
ent.v_angle_y += anglespeed * key_state (keys, KEY_LOOKLEFT) * 140;
ent.v_angle.y += anglespeed * key_state (keys, KEY_LOOKLEFT) * 140;
// 140 is default cl_yawspeed
ent.v_angle_y -= anglespeed * key_state (keys, KEY_LOOKRIGHT) * 140;
ent.v_angle.y -= anglespeed * key_state (keys, KEY_LOOKRIGHT) * 140;
// 140 is default cl_yawspeed
ent.v_angle_x -= anglespeed * key_state (keys, KEY_LOOKUP) * 150;
ent.v_angle.x -= anglespeed * key_state (keys, KEY_LOOKUP) * 150;
// 150 is default cl_pitchspeed
ent.v_angle_x += anglespeed * key_state (keys, KEY_LOOKDOWN) * 150;
ent.v_angle.x += anglespeed * key_state (keys, KEY_LOOKDOWN) * 150;
// 150 is default cl_pitchspeed
} else {
view.x = angcomp (b_angle.x, ent.v_angle_x);
view.y = angcomp (b_angle.y, ent.v_angle_y);
view.x = angcomp (b_angle.x, ent.v_angle.x);
view.y = angcomp (b_angle.y, ent.v_angle.y);
view.z = 0;
if (vlen (view) > 30) {
mouse_emu += (view * 30);
@ -172,10 +172,10 @@ void (vector start, vector mins, vector maxs, vector end, float type,
if (ret && flag) {
// afect bot movement too
if (keys & KEY_MOVEUP) {
if (trace_ent.velocity_z > 0)
if (trace_ent.velocity.z > 0)
keys &= ~KEY_MOVE;
} else if (keys & KEY_MOVEDOWN) {
if (trace_ent.velocity_z < 0)
if (trace_ent.velocity.z < 0)
keys &= ~KEY_MOVE;
}
}
@ -189,13 +189,13 @@ void (vector start, vector mins, vector maxs, vector end, float type,
local vector keydir;
outkeys = 0;
if (sdir_x || sdir_y) {
if (sdir.x || sdir.y) {
// Everything is tested against 60 degrees, this allows the bot to
// overlap the keys 30 degrees on each diagonal 45 degrees might look
// more realistic
keydir = vectoangles (sdir);
tang = angcomp (keydir_y, ent.v_angle_y);
tang = angcomp (keydir.y, ent.v_angle.y);
if ((tang <= 150) && (tang >= 30))
outkeys |= KEY_MOVELEFT;
else if ((tang >= -150) && (tang <= -30))
@ -205,9 +205,9 @@ void (vector start, vector mins, vector maxs, vector end, float type,
else if (fabs(tang) >= 120)
outkeys |= KEY_MOVEBACK;
}
if (sdir_z > 0.7)
if (sdir.z > 0.7)
outkeys |= KEY_MOVEUP;
else if (sdir_z < 0.7)
else if (sdir.z < 0.7)
outkeys |= KEY_MOVEDOWN;
return outkeys;
}
@ -234,7 +234,7 @@ manuever around.
if (b_aiflags & AI_PRECISION)
return;
disway_z = 0;
disway.z = 0;
if (targets[0]) {
if (b_aiflags & AI_OBSTRUCTED) {
@ -246,20 +246,20 @@ manuever around.
}
org = [targets[0] realorigin];
obs_dir = whichway;
disway_x = whichway_y * -1;
disway_y = whichway_x;
disway.x = whichway.y * -1;
disway.y = whichway.x;
dist = vlen (org - (ent.origin + disway));
disway_x = whichway_y;
disway_y = whichway_x * -1;
disway.x = whichway.y;
disway.y = whichway.x * -1;
wallhug = (vlen (org - (ent.origin + disway)) > dist);
b_aiflags |= AI_OBSTRUCTED;
} else {
disway_x = whichway_y * -1;
disway_y = whichway_x;
disway.x = whichway.y * -1;
disway.y = whichway.x;
dist = vlen (disway - obs_dir);
disway_x = whichway_y;
disway_y = whichway_x * -1;
disway.x = whichway.y;
disway.y = whichway.x * -1;
wallhug = (vlen (disway - obs_dir) < dist);
obs_dir = whichway;
@ -285,15 +285,15 @@ Also responsible for jumping gaps.
return;
ang = normalize(ent.velocity);
ang_z = 0;
ang.z = 0;
start = ent.origin + ang * 32; // ahem
start_z = ent.origin_z + ent.maxs_z;
start.z = ent.origin.z + ent.maxs.z;
stop = start;
stop_z = ent.origin_z + ent.mins_z;
stop.z = ent.origin.z + ent.mins.z;
traceline (start, stop - '0 0 256', TRUE, ent);
if (trace_allsolid || trace_startsolid)
return;
hgt = trace_endpos_z - stop_z;
hgt = trace_endpos.z - stop.z;
if (hgt > 18) {
[self jump];
@ -309,14 +309,14 @@ Also responsible for jumping gaps.
test = vlen(trace_endpos - start);
if (test <= 20)
return; // it's a walkable gap, do nothing
ang_x = ent.velocity_y * -1;
ang_y = ent.velocity_x;
ang.x = ent.velocity.y * -1;
ang.y = ent.velocity.x;
ang = normalize (ang);
traceline (start - (ang * 10), start + (ang * 10), TRUE, ent);
if ((trace_fraction != 1) || trace_startsolid)
return; // gap is only 20 wide, walkable
ang = ent.velocity;
ang_z = 0;
ang.z = 0;
dist = ((540 / sv_gravity) * vlen (ang))/* + 32*/;
if (test > dist) {
// I can't make it
@ -327,7 +327,7 @@ Also responsible for jumping gaps.
} else {
if (targets[0]) {
stop = [targets[0] realorigin];
if ((stop_z - ent.origin_z) < -32)
if ((stop.z - ent.origin.z) < -32)
return; // safe to fall
}
[self obstructed: ang :FALSE];
@ -345,7 +345,7 @@ Also responsible for jumping gaps.
} else {
if (targets[0]) {
stop = [targets[0] realorigin];
if ((stop_z - ent.origin_z) < -32)
if ((stop.z - ent.origin.z) < -32)
return; // safe to fall
}
[self obstructed: ang :FALSE];
@ -372,7 +372,7 @@ Also responsible for jumping gaps.
if (hgt < -18) {
if (targets[0]) {
stop = [targets[0] realorigin];
if ((stop_z - ent.origin_z) < -32)
if ((stop.z - ent.origin.z) < -32)
return; // safe to fall
}
[self jump];
@ -420,7 +420,7 @@ I have no idea how well it will work
way.x = obs_dir.y;
way.y = obs_dir.x * -1;
}
way_z = 0;
way.z = 0;
keys &= ~KEY_MOVE;
keys |= [self keysForDir: way];
}
@ -440,7 +440,7 @@ blah
local vector way;
local float g;
if (targets[0] == NIL) {
if (targets[0] == nil) {
makevectors(ent.v_angle);
[self walkmove: v_forward];
return;
@ -459,10 +459,10 @@ blah
[self recognizePlat: TRUE];
if (b_aiflags & AI_PRECISION) {
g = angcomp (ent.v_angle_x, b_angle.x);
g = angcomp (ent.v_angle.x, b_angle.x);
if (fabs (g) > 10)
keys &= ~KEY_MOVE;
g = angcomp (ent.v_angle_y, b_angle.y);
g = angcomp (ent.v_angle.y, b_angle.y);
if (fabs(g) > 10)
keys &= ~KEY_MOVE;
}
@ -506,14 +506,14 @@ own waypoints.
loopcount--;
org = ent.origin + ent.view_ofs;
ang = ent.angles;
ang_y = frik_anglemod (ang_y - 90 + (180 * random ()));
ang_x = 0; // avoid upward sloping
ang.y = frik_anglemod (ang.y - 90 + (180 * random ()));
ang.x = 0; // avoid upward sloping
makevectors (ang);
traceline (org, org + v_forward * 2300, TRUE, ent);
if (trace_fraction != 1) {
org1 = trace_endpos;
ang = normalize (trace_plane_normal);
ang_z = 0; // avoid upward sloping
ang.z = 0; // avoid upward sloping
traceline (org1, org1 + (ang * 2300), TRUE, ent);
if ((trace_fraction != 1) && (vlen(trace_endpos - org1) >= 64)) {
org = trace_endpos;
@ -530,6 +530,6 @@ own waypoints.
}
}
}
b_angle.y = ent.v_angle_y + 10;
b_angle.y = ent.v_angle.y + 10;
}
@end

View file

@ -77,11 +77,11 @@ ClientDisconnected(); // FrikBot
#include "cmd.h"
#include "editor.h"
integer []bot_way_ref;
integer []bot_move_ref;
integer []bot_chat_ref;
float []stagger_think_ref;
integer []bot_fight_ref;
integer *bot_way_ref;
integer *bot_move_ref;
integer *bot_chat_ref;
float *stagger_think_ref;
integer *bot_fight_ref;
void ()
bot_map_load =
@ -119,7 +119,7 @@ for all variable in the bot...
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
Bot [32] players;
Bot *players[32];
// -------globals-----
float real_frametime;
@ -127,7 +127,7 @@ float bot_count, b_options, lasttime;
float waypoint_mode, dump_mode;
float direct_route;
float sv_gravity;
Bot route_table;
Bot *route_table;
integer busy_waypoints;
float coop = 0; // hack
@ -161,7 +161,7 @@ direct messages to the bots, it crashes quake :-(
void (entity e)
setspawnparms =
{
if (((Bot)e.@this).ishuman)
if (((Bot *)e.@this).ishuman)
frik_setspawnparms (e);
else
SetNewParms ();
@ -170,7 +170,7 @@ setspawnparms =
vector (entity e, float sped)
aim =
{
((Bot)e.@this).missile_speed = sped;
((Bot *)e.@this).missile_speed = sped;
return frik_aim (e, sped);
};
@ -181,9 +181,9 @@ sound =
if (samp == "items/inv3.wav")
return;
else if (e.classname == "player")
((Bot)e.@this).b_sound = time + 1;
((Bot *)e.@this).b_sound = time + 1;
else if (other.classname == "player")
((Bot)other.@this).b_sound = time + 1;
((Bot *)other.@this).b_sound = time + 1;
};
/*
@ -212,10 +212,10 @@ void ()
ClientDisconnected =
{
local integer cl_no = ClientNumber (@self);
local Bot p = NIL;
local Bot *p = nil;
p = players[cl_no];
players[cl_no] = NIL;
players[cl_no] = nil;
if (p) {
local entity e = p.ent;
local integer i;
@ -235,7 +235,7 @@ ClientDisconnected =
integer (entity cl)
ClientNumber =
{
local entity e = NIL;
local entity e = nil;
local integer f = -1;
do {
@ -247,17 +247,16 @@ ClientNumber =
return f;
};
Bot (integer whatbot, integer whatskill)
BotConnect =
Bot *BotConnect (integer whatbot, integer whatskill)
{
local entity cl;
local Bot bot;
local bot_data_t [] name;
local Bot *bot;
local bot_data_t *name;
cl = SV_AllocClient ();
if (!cl) {
bprint (PRINT_HIGH, "Unable to connect a bot, server is full.\n");
return NIL;
return nil;
}
if (whatbot)
@ -278,14 +277,14 @@ void () BotImpulses =
{
local integer f;
local string h;
local Target t = @self.@this;
local Target *t = @self.@this;
if (t.editor)
[EditorState impulse];
switch (@self.impulse) {
case 100:
h = infokey (NIL, "skill");
h = infokey (nil, "skill");
f = (integer) stof (h);
BotConnect (0, f);
break;
@ -309,7 +308,7 @@ bot_add_f =
local integer c = Cmd_Argc ();
if (c == 1) {
skill = (integer) stof (infokey (NIL, "skill"));
skill = (integer) stof (infokey (nil, "skill"));
} else if (c == 2) {
skill = (integer) stof (Cmd_Argv (1));
} else {
@ -364,7 +363,7 @@ signs on to the server.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
void(Waypoint e1, Waypoint e2, integer flag) DeveloperLightning =
void DeveloperLightning (Waypoint *e1, Waypoint *e2, integer flag)
{
// used to show waypoint links for debugging
WriteByte (MSG_BROADCAST, 23);
@ -383,7 +382,7 @@ void(Waypoint e1, Waypoint e2, integer flag) DeveloperLightning =
return [super init];
}
- (id) initWithEntity:(entity) e named:(bot_data_t [])name skill:(integer)skill
- (id) initWithEntity:(entity) e named:(bot_data_t *)name skill:(integer)skill
{
local integer cl_no = ClientNumber (e);
local entity uself;
@ -391,7 +390,7 @@ void(Waypoint e1, Waypoint e2, integer flag) DeveloperLightning =
SV_Spawn (e);
if (!(self = [super initWithEntity:e]))
return NIL;
return nil;
[self add];
@ -434,7 +433,7 @@ void(Waypoint e1, Waypoint e2, integer flag) DeveloperLightning =
local integer cno;
if (!(self = [super initWithEntity:e]))
return NIL;
return nil;
cno = (integer)e.colormap - 1;
b_clientno = cno;
@ -521,7 +520,7 @@ BotFrame =
local string h;
local integer i;
h = infokey (NIL, "bot_options");
h = infokey (nil, "bot_options");
b_options = stof (h);
// for the sake of speed

View file

@ -52,10 +52,10 @@ integer bot_way_linker;
@implementation Bot (Way)
-(void)deleteWaypoint:(Waypoint)what
-(void)deleteWaypoint:(Waypoint *)what
{
if (current_way == what)
current_way = NIL;
current_way = nil;
[waypoint_array removeObject:what];
[what release];
}
@ -76,9 +76,9 @@ in bot_ai.qc
local float tdst, dst;
local entity best;
dst = 100000;
best = NIL;
t = find (NIL, classname, s);
while (t != NIL) {
best = nil;
t = find (nil, classname, s);
while (t != nil) {
tdst = vlen(((t.absmin + t.absmax) * 0.5) - ent.origin);
if (tdst < dst) {
dst = tdst;
@ -102,23 +102,23 @@ an object.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(Waypoint)findRoute:(Waypoint)lastone
-(Waypoint *)findRoute:(Waypoint *)lastone
{
// kinda like FindWaypoint, only of this bots route though
local Waypoint t, best;
local Waypoint *t, *best;
local float dst, tdst;
local integer flag;
local integer count, i;
flag = b_clientflag;
dst = 100000;
best = NIL;
best = nil;
count = [waypoint_array count];
for (i = 0; i < count; i++) {
t = [waypoint_array objectAtIndex:i];
tdst = vlen(t.origin - ent.origin);
if ((tdst < dst) && (t.bot_bits & flag)) {
if ((lastone == NIL) || ([lastone isLinkedTo:t])) {
if ((lastone == nil) || ([lastone isLinkedTo:t])) {
dst = tdst;
best = t;
}
@ -140,9 +140,9 @@ different bot.
*/
-(void)markPath:(Target)this
-(void)markPath:(Target *)this
{
local Waypoint t;
local Waypoint *t;
local integer flag;
[Waypoint clearMyRoute:self];
@ -153,7 +153,7 @@ different bot.
if ([this classname] != "player")
this.current_way = t;
if (t.enemy == NIL) {
if (t.enemy == nil) {
[self lost:this :FALSE];
if (waypoint_mode == WM_DYNAMIC)
route_failed = TRUE;
@ -205,27 +205,27 @@ Boy it's confusing.
[Waypoint clearRouteTable];
last_way = [self findWaypoint:current_way];
if (last_way != NIL) {
if (last_way != nil) {
last_way.distance = vlen(last_way.origin - ent.origin);
[last_way queueForThink];
last_way.busy = TRUE;
busy_waypoints = 1;
return TRUE;
} else {
route_table = NIL;
route_table = nil;
busy_waypoints = 0;
return FALSE;
}
}
-(void)getPath:(Target)this :(integer)direct
-(void)getPath:(Target *)this :(integer)direct
{
if (this == NIL)
if (this == nil)
return;
if (route_table == self) {
if (busy_waypoints <= 0) {
route_table = NIL;
route_table = nil;
[self markPath:this];
}
return;
@ -249,7 +249,7 @@ Temporary Marker code
-(void)spawnTempWaypoint:(vector)org
{
local Waypoint tep;
local Waypoint *tep;
if (!temp_way)
temp_way = tep = [[Waypoint alloc] init];
@ -269,7 +269,7 @@ very good all things considered.
*/
-(void)dynamicWaypoint
{
local Waypoint t;
local Waypoint *t;
local float dist, dynlink = 0, dynpoint = 0, editor = 0;
if (teleport_time > portal_time) {
@ -277,7 +277,7 @@ very good all things considered.
dyn_flags = 2;
if (!ishuman) {
[self lost:targets[0] :TRUE];
ent.enemy = NIL;
ent.enemy = nil;
}
}
portal_time = teleport_time;
@ -322,7 +322,7 @@ very good all things considered.
}
}
dyn_dest = '0 0 0';
current_way = NIL;
current_way = nil;
dyn_flags = 0;
return;
}
@ -344,7 +344,7 @@ very good all things considered.
// display the links for editor mode
if (editor) {
if (current_way) {
local Waypoint way = current_way;
local Waypoint *way = current_way;
local integer i;
for (i = 0; i < 4; i++) {
@ -435,7 +435,7 @@ very good all things considered.
}
}
-(integer)canSee:(Target)targ
-(integer)canSee:(Target *)targ
{
local float thruwater = 0, pc1 = 0, pc2 = 0;
local vector spot1, org;

View file

@ -44,7 +44,7 @@ this notice in its entirety.
integer bot_chat_linker;
@static Bot b_originator;
@static Bot *b_originator;
@static integer b_topic;
/* FBX Topics

View file

@ -8,16 +8,16 @@
@interface EditorState: Object
{
ImpulseMenu menu;
ImpulseMenu prev_menu;
ImpulseMenu *menu;
ImpulseMenu *prev_menu;
float menu_time;
string confirm_text;
string confirm_cmd;
Target owner;
Waypoint last_way;
Target *owner;
Waypoint *last_way;
integer hold_select;
Bot test_bot;
Bot *test_bot;
integer edit_mode;
}
+main_menu;
@ -62,11 +62,11 @@
+(integer)getHoldSelectState;
+(void)toggleHoldSelectState;
+(string)getConfirmText;
+(Waypoint)current_way;
-(Waypoint)current_way;
+(Waypoint *)current_way;
-(Waypoint *)current_way;
+(void)impulse;
-(id)initWithOwner:(Target)owner;
-(id)initWithOwner:(Target *)owner;
-(void)refresh;
@end

View file

@ -47,11 +47,11 @@
-(integer) impulse:(integer)imp
{
local Waypoint way = NIL;
local Waypoint *way = nil;
if ((imp = [super impulse:imp]) == 104) {
imp = 0;
if (value)
way = (Waypoint) [waypoint_array objectAtIndex:value - 1];
way = (Waypoint *) [waypoint_array objectAtIndex:value - 1];
value = 0;
if (way)
setorigin (@self, way.origin - @self.view_ofs);
@ -143,7 +143,7 @@
-(integer) state
{
local Waypoint way = [EditorState current_way];
local Waypoint *way = [EditorState current_way];
if (!way)
return 0;
return !!(way.flags & mask);
@ -151,7 +151,7 @@
-(void) toggle
{
local Waypoint way = [EditorState current_way];
local Waypoint *way = [EditorState current_way];
if (way)
way.flags ^= mask;
}
@ -165,16 +165,16 @@
}
@end
@static ImpulseListMenu main_menu;
@static ImpulseListMenu waypoint_menu;
@static ImpulseListMenu link_menu;
@static ImpulseListMenu ai_flags_menu;
@static ImpulseListMenu ai_flag2_menu;
@static ImpulseListMenu bot_menu;
@static ImpulseListMenu waylist_menu;
@static ImpulseListMenu *main_menu;
@static ImpulseListMenu *waypoint_menu;
@static ImpulseListMenu *link_menu;
@static ImpulseListMenu *ai_flags_menu;
@static ImpulseListMenu *ai_flag2_menu;
@static ImpulseListMenu *bot_menu;
@static ImpulseListMenu *waylist_menu;
@static ConfirmationMenu confirm_menu;
@static TeleportMenu teleport_menu;
@static ConfirmationMenu *confirm_menu;
@static TeleportMenu *teleport_menu;
@static void init_menus (void)
{
@ -466,77 +466,88 @@
}
@implementation EditorState: Object
+setMenu:(ImpulseMenu)item
+setMenu:(ImpulseMenu *)item
{
((Target) @self.@this).editor.menu = item;
((Target) @self.@this).editor.menu_time = time;
((Target *) @self.@this).editor.menu = item;
((Target *) @self.@this).editor.menu_time = time;
return self;
}
+main_menu
{
[EditorState setMenu: main_menu];
return self;
}
+waypoint_menu
{
[EditorState setMenu: waypoint_menu];
return self;
}
+link_menu
{
[EditorState setMenu: link_menu];
return self;
}
+ai_flags_menu
{
dprint ("ai_flags_menu\n");
[EditorState setMenu: ai_flags_menu];
return self;
}
+ai_flag2_menu
{
dprint ("ai_flag2_menu\n");
[EditorState setMenu: ai_flag2_menu];
return self;
}
+bot_menu
{
[EditorState setMenu: bot_menu];
return self;
}
+waylist_menu
{
[EditorState setMenu: waylist_menu];
return self;
}
+teleport_to_way
{
[EditorState setMenu: teleport_menu];
return self;
}
+close_menu
{
local Target player = (Target) @self.@this;
[EditorState setMenu: NIL];
local Target *player = (Target *) @self.@this;
[EditorState setMenu: nil];
[Waypoint hideAll];
waypoint_mode = WM_LOADED;
[player.editor release];
player.editor = NIL;
player.editor = nil;
return self;
}
+move_waypoint
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way)
[way setOrigin: @self.origin + @self.view_ofs];
return self;
}
+delete_waypoint
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Delete Waypoint --\n\nAre you sure?";
@ -544,49 +555,54 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+make_waypoint
{
[[Waypoint alloc] initAt: @self.origin + @self.view_ofs];
return self;
}
+make_waypoint_link
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local Waypoint new = [[Waypoint alloc]
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
local Waypoint *new = [[Waypoint alloc]
initAt: @self.origin + @self.view_ofs];
if (!way || ![way linkWay: new])
sprint (@self, PRINT_HIGH, "Unable to link them\n");
return self;
}
+make_way_link_x2
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local Waypoint new = [[Waypoint alloc]
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
local Waypoint *new = [[Waypoint alloc]
initAt: @self.origin + @self.view_ofs];
if (!way || ![way linkWay: new])
sprint (@self, PRINT_HIGH, "Unable to link old to new\n");
if (!way || ![new linkWay: way])
sprint (@self, PRINT_HIGH, "Unable to link new to old\n");
return self;
}
+make_way_telelink
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local Waypoint new = [[Waypoint alloc]
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
local Waypoint *new = [[Waypoint alloc]
initAt: @self.origin + @self.view_ofs];
if (!way || ![way teleLinkWay: new])
sprint (@self, PRINT_HIGH, "Unable to link them\n");
return self;
}
+show_waypoint_info
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
local integer i;
if (!way)
return self;
@ -603,21 +619,23 @@
i + 1, [way.links[i] id]));
}
sprint (@self, PRINT_HIGH, "\n\n");
return self;
}
+unlink_waypoint
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way)
[way clearLinks];
return self;
}
+create_link
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Link Ways --\n\nSelect another way";
@ -625,12 +643,13 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+create_telelink
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Telelink Ways --\n\nSelect another way";
@ -638,12 +657,13 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+delete_link
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Delete Link --\n\nSelect another way";
@ -651,12 +671,13 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+create_link_x2
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Create Link X2 --\n\nSelect another way";
@ -664,12 +685,13 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+delete_link_x2
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way) {
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Delete Link X2 --\n\nSelect another way";
@ -677,12 +699,13 @@
[EditorState setMenu:confirm_menu];
editor.last_way = way;
}
return self;
}
+add_test_bot
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
local integer f;
local string h;
@ -690,71 +713,79 @@
sprint (@self, PRINT_HIGH, "already have test bot\n");
return self;
}
h = infokey (NIL, "skill");
h = infokey (nil, "skill");
f = (integer) stof (h);
editor.test_bot = BotConnect (0, f);
return self;
}
+call_test_bot
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
if (editor.test_bot)
[editor.test_bot getPath:[Target forEntity:@self] :TRUE];
return self;
}
+remove_test_bot
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
if (editor.test_bot)
[editor.test_bot disconnect];
return self;
}
+stop_test_bot
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
if (editor.test_bot) {
[editor.test_bot targetClearAll];
route_table = NIL;
route_table = nil;
}
return self;
}
+teleport_bot
{
local EditorState editor = ((Target) @self.@this).editor;
local Waypoint way = [editor current_way];
local EditorState *editor = ((Target *) @self.@this).editor;
local Waypoint *way = [editor current_way];
if (way && editor.test_bot)
setorigin (editor.test_bot.ent, [way origin]);
if (!way)
sprint(@self, PRINT_HIGH, "select a waypoint first\n");
return self;
}
+delete_all_waypoints
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
editor.prev_menu = editor.menu;
editor.confirm_text = "-- Delete ALL Ways --\n\nAre you sure?";
editor.confirm_cmd = "delete all ways";
[EditorState setMenu:confirm_menu];
return self;
}
+dump_waypoints
{
local PLItem plist = [Waypoint plist];
local PLItem *plist = [Waypoint plist];
bprint (PRINT_HIGH, [plist write]);
bprint (PRINT_HIGH, "\n");
[plist release];
return self;
}
+check_for_errors
{
[Waypoint check:[Target forEntity:@self]];
return self;
}
+save_waypoints
{
local QFile file;
local PLItem plist;
local PLItem *plist;
file = QFS_Open ("temp.way", "wt");
if (!file) {
@ -766,13 +797,14 @@
[plist release];
Qclose (file);
sprint (@self, PRINT_HIGH, "waypoints saved to temp.way\n");
return self;
}
+confirm
{
local Target player = (Target) @self.@this;
local EditorState editor = player.editor;
local Target *player = (Target *) @self.@this;
local EditorState *editor = player.editor;
switch (editor.confirm_cmd) {
case "link ways":
if (player.current_way) {
@ -807,57 +839,59 @@
break;
case "delete all ways":
[Waypoint clearAll];
player.current_way = editor.last_way = NIL;
player.current_way = editor.last_way = nil;
break;
case "delete waypoint":
[waypoint_array removeObject:editor.last_way];
if (player.current_way == editor.last_way)
player.current_way = NIL;
editor.last_way = NIL;
player.current_way = nil;
editor.last_way = nil;
break;
}
[EditorState setMenu: editor.prev_menu];
return self;
}
+cancel
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
[EditorState setMenu: editor.prev_menu];
return self;
}
+(integer)getHoldSelectState
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
return editor.hold_select != 0;
}
+(void)toggleHoldSelectState
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
editor.hold_select = !editor.hold_select;
}
+(string)getConfirmText
{
local EditorState editor = ((Target) @self.@this).editor;
local EditorState *editor = ((Target *) @self.@this).editor;
return editor.confirm_text;
}
+(Waypoint)current_way
+(Waypoint *)current_way
{
return ((Target) @self.@this).current_way;
return ((Target *) @self.@this).current_way;
}
-(Waypoint)current_way
-(Waypoint *)current_way
{
return owner.current_way;
}
+(void)impulse
{
local Target player = (Target) @self.@this;
local EditorState editor = player.editor;
local Target *player = (Target *) @self.@this;
local EditorState *editor = player.editor;
if (!editor) {
if (@self.impulse != 104)
@ -874,7 +908,7 @@
}
}
-(id)initWithOwner:(Target)owner
-(id)initWithOwner:(Target *)owner
{
if (!main_menu)
init_menus ();

View file

@ -49,9 +49,9 @@
@interface ImpulseListMenu: ImpulseMenu
{
MenuItem [10]items;
MenuItem *items[10];
}
- (void) addItem:(MenuItem)item;
- (void) addItem:(MenuItem *)item;
@end
#endif//__impulse_menu_h

View file

@ -115,7 +115,7 @@
local string str = text;
local string s;
local integer i;
local string [10] is;
local string is[10];
local integer max_len = 0, len;
for (i = 0; i < 10; i++) {
@ -139,7 +139,7 @@
return str;
}
- (void) addItem:(MenuItem) item
- (void) addItem:(MenuItem *) item
{
local integer i;

View file

@ -15,20 +15,20 @@ typedef struct bot_data_t bot_data_t;
@interface Target: Entity
{
@public
Waypoint current_way;
Waypoint *current_way;
integer hold_select;
Target _last;
EditorState editor;
Target *_last;
EditorState *editor;
}
+(Target)forEntity:(entity)e;
+(Target *)forEntity:(entity)e;
-(vector)realorigin;
-(vector)origin;
-(integer)canSee:(Target)targ ignoring:(entity)ignore;
-(integer)canSee:(Target *)targ ignoring:(entity)ignore;
-(void)setOrigin:(vector) org;
-(integer)recognizePlat:(integer)flag;
-(integer)ishuman;
-(integer)priority:(Bot)bot;
-(Waypoint)findWaypoint:(Waypoint)start;
-(integer)priority:(Bot *)bot;
-(Waypoint *)findWaypoint:(Waypoint *)start;
-(float)searchTime;
-(void)setSearchTime:(float)st;
-(string)classname;
@ -37,7 +37,7 @@ typedef struct bot_data_t bot_data_t;
@interface Waypoint: Target
{
@public
Waypoint [4] links;
Waypoint *links[4];
integer flags;
vector origin;
@ -46,21 +46,21 @@ typedef struct bot_data_t bot_data_t;
integer bot_bits;
integer busy; //???
float distance;
Waypoint enemy;
Waypoint *enemy;
float search_time;
Waypoint chain;
Waypoint *chain;
}
+(void)loadFile:(string)path;
+(void)clearAll;
+(Waypoint)waypointForNum:(integer)num;
+(Waypoint *)waypointForNum:(integer)num;
+(void)fixWaypoints;
+(PLItem)plist;
+(void)check:(Target)ent;
+(PLItem *)plist;
+(void)check:(Target *)ent;
+(void)clearRouteTable;
+(void)clearMyRoute:(Bot) bot;
+(Waypoint)find:(vector)org radius:(float)rad;
+(void)clearMyRoute:(Bot *) bot;
+(Waypoint *)find:(vector)org radius:(float)rad;
+(void)showAll;
+(void)hideAll;
@ -72,22 +72,22 @@ typedef struct bot_data_t bot_data_t;
-(id)initAt:(vector)org;
-(id)initFromEntity:(entity)ent;
-(integer)isLinkedTo:(Waypoint)way;
-(integer)linkWay:(Waypoint)way;
-(integer)teleLinkWay:(Waypoint)way;
-(void)unlinkWay:(Waypoint)way;
-(integer)isLinkedTo:(Waypoint *)way;
-(integer)linkWay:(Waypoint *)way;
-(integer)teleLinkWay:(Waypoint *)way;
-(void)unlinkWay:(Waypoint *)way;
-(void)followLink:(Waypoint)e2 :(integer)bBit;
-(void)followLink:(Waypoint *)e2 :(integer)bBit;
-(void)waypointThink;
-(void)clearLinks;
-(void)clearRoute;
-(void)clearRouteForBot:(Bot)bot;
-(void)clearRouteForBot:(Bot *)bot;
-(id)queueForThink;
@end
@class Array;
@extern Array waypoint_array;
@extern Array *waypoint_array;
@interface Bot: Target
{
@ -119,9 +119,9 @@ typedef struct bot_data_t bot_data_t;
integer dyn_flags;
integer dyn_plat;
float dyn_time;
Waypoint temp_way;
Waypoint last_way;
Target [4] targets;
Waypoint *temp_way;
Waypoint *last_way;
Target *targets[4];
entity avoid;
vector obs_dir;
vector b_dir;
@ -132,7 +132,7 @@ typedef struct bot_data_t bot_data_t;
float portal_time;
}
- (id) init;
- (id) initWithEntity: (entity) e named:(bot_data_t [])name skill:(integer)skill;
- (id) initWithEntity: (entity) e named:(bot_data_t *)name skill:(integer)skill;
- (id) initFromPlayer: (entity) e;
- (void) preThink;
- (void) postThink;
@ -144,8 +144,8 @@ typedef struct bot_data_t bot_data_t;
@end
@interface Bot (Misc)
+(bot_data_t [])name:(integer)r;
+(bot_data_t [])randomName;
+(bot_data_t *)name:(integer)r;
+(bot_data_t *)randomName;
-(integer)fov:(entity)targ;
+(void)kick;
@ -167,22 +167,22 @@ typedef struct bot_data_t bot_data_t;
@end
@interface Bot (AI)
-(integer)targetOnstack:(Target)scot;
-(void)targetAdd:(Target)e;
-(void)targetDrop:(Target)e;
-(integer)targetOnstack:(Target *)scot;
-(void)targetAdd:(Target *)e;
-(void)targetDrop:(Target *)e;
-(void)targetClearAll;
-(void)lost:(Target)targ :(integer)success;
-(void)checkLost:(Target)targ;
-(void)lost:(Target *)targ :(integer)success;
-(void)checkLost:(Target *)targ;
-(void)handleAI;
-(void)path;
-(void)lookForCrap:(integer)scope;
-(void)angleSet;
-(void)AI;
-(integer)priorityForThing:(Target)thing;
-(integer)priorityForThing:(Target *)thing;
@end
@interface Bot (Fight)
-(float)sizePlayer:(Target)targ;
-(float)sizePlayer:(Target *)targ;
-(void)dodgeStuff;
-(void)weaponSwitch:(float)brange;
-(void)shoot;
@ -190,16 +190,16 @@ typedef struct bot_data_t bot_data_t;
@end
@interface Bot (Way)
-(void)deleteWaypoint:(Waypoint)what;
-(void)deleteWaypoint:(Waypoint *)what;
-(entity)findThing:(string)s;
-(Waypoint)findRoute:(Waypoint)lastone;
-(void)markPath:(Target)this;
-(void)getPath:(Target)this :(integer)direct;
-(Waypoint *)findRoute:(Waypoint *)lastone;
-(void)markPath:(Target *)this;
-(void)getPath:(Target *)this :(integer)direct;
-(integer)beginRoute;
-(void)spawnTempWaypoint:(vector)org;
-(void)dynamicWaypoint;
-(integer)canSee:(Target)targ;
-(integer)canSee:(Target *)targ;
@end
@interface Bot (Chat)
@ -285,7 +285,7 @@ typedef struct bot_data_t bot_data_t;
#define OPT_NOCHAT 2
// -------globals-----
@extern Bot [32] players;
@extern Bot *players[32];
@extern float real_frametime;
@extern float bot_count, b_options;
@extern float lasttime;
@ -293,14 +293,14 @@ typedef struct bot_data_t bot_data_t;
@extern float dump_mode;
@extern float direct_route;
@extern float sv_gravity;
@extern Bot route_table;
@extern Bot *route_table;
@extern integer busy_waypoints;
@extern float coop;
// -------ProtoTypes------
// external, in main code
@extern Bot (integer whatbot, integer whatskill) BotConnect;
@extern Bot *BotConnect (integer whatbot, integer whatskill);
@extern void() ClientConnect;
@extern void() ClientDisconnect;
@extern void() SetNewParms;
@ -318,13 +318,13 @@ typedef struct bot_data_t bot_data_t;
@extern void () map_dm6;
// ai & misc
@extern Array bot_array;
@extern Array *bot_array;
@extern float(float y1, float y2) angcomp;
@extern float(entity ent, entity targ, vector targ_origin) sisible;
@extern vector(entity ent) realorigin;
@extern float(float v) frik_anglemod;
@extern void(Waypoint e1, Waypoint e2, integer flag) DeveloperLightning;
@extern void DeveloperLightning(Waypoint *e1, Waypoint *e2, integer flag);
/*
angles is pitch yaw roll

View file

@ -53,34 +53,35 @@ struct target_s {
@defs (Target)
};
@static unsigned (void []ele, void []unused) target_get_hash =
@static unsigned target_get_hash (void *ele, void *unused)
{
local Target t = ele;
return ((unsigned[])&t.ent)[0];
local Target *t = ele;
//return ((unsigned*)&t.ent)[0];
return nil;//FIXME
};
@static integer (void []e1, void[]e2, void []unused) target_compare =
@static integer target_compare (void *e1, void*e2, void *unused)
{
local Target t1 = e1;
local Target t2 = e2;
local Target *t1 = e1;
local Target *t2 = e2;
return t1.ent == t2.ent;
};
@implementation Target
+(Target)forEntity:(entity)e
+(Target *)forEntity:(entity)e
{
local Target t;
local Target *t;
local struct target_s ele;
if (!e)
return NIL;
return nil;
if (e.classname == "player")
return e.@this;
if (!target_tab) {
target_tab = Hash_NewTable (1021, NIL, NIL, NIL);
target_tab = Hash_NewTable (1021, nil, nil, nil);
Hash_SetHashCompare (target_tab, target_get_hash, target_compare);
}
ele.ent = e;
@ -103,7 +104,7 @@ struct target_s {
return ent.origin;
}
-(integer)canSee:(Target)targ ignoring:(entity)ignore
-(integer)canSee:(Target *)targ ignoring:(entity)ignore
{
local vector spot1, spot2;
@ -129,7 +130,7 @@ struct target_s {
{
local vector org = [self origin];
traceline (org, org - '0 0 64', TRUE, ent);
if (trace_ent != NIL)
if (trace_ent != nil)
return TRUE;
else
return FALSE;
@ -140,7 +141,7 @@ struct target_s {
return 0;
}
-(integer)priority:(Bot)bot
-(integer)priority:(Bot *)bot
{
if ((ent.flags & FL_ITEM) && ent.model && ent.search_time < time) {
// ugly hack
@ -203,9 +204,9 @@ functions big lag causer
Finds the closest, fisible, waypoint to e
*/
-(Waypoint)findWaypoint:(Waypoint)start
-(Waypoint *)findWaypoint:(Waypoint *)start
{
local Waypoint best, t;
local Waypoint *best, *t;
local float dst, tdst;
local vector org;
local integer count, i;
@ -218,7 +219,7 @@ Finds the closest, fisible, waypoint to e
best = start;
} else {
dst = 100000;
best = NIL;
best = nil;
}
count = [waypoint_array count];
for (i = 0; i < count; i++) {
@ -229,7 +230,7 @@ Finds the closest, fisible, waypoint to e
if (!(t.flags & AI_IGNORE_TYPES) || ishuman) {
tdst = vlen (t.origin - org);
if (tdst < dst) {
if (sisible (ent, NIL, t.origin)) {
if (sisible (ent, nil, t.origin)) {
dst = tdst;
best = t;
}

View file

@ -50,9 +50,9 @@ this notice in its entirety.
#include "string.h"
#include "PropertyList.h"
Array waypoint_array;
Array *waypoint_array;
@static entity waypoint_thinker;
@static List waypoint_queue;
@static List *waypoint_queue;
@static void () waypoint_init =
{
@ -79,7 +79,7 @@ Array waypoint_array;
{
if (!waypoint_array)
waypoint_init ();
return [super initWithEntity:NIL];
return [super initWithEntity:nil];
}
-(id)initAt:(vector)org
@ -93,13 +93,13 @@ Array waypoint_array;
return self;
}
-(id)initAt:(vector)org linkedTo:(integer[])link flags:(integer)flag
-(id)initAt:(vector)org linkedTo:(integer*)link flags:(integer)flag
{
self = [self initAt:org];
links[0] = (Waypoint) link[0];
links[1] = (Waypoint) link[1];
links[2] = (Waypoint) link[2];
links[3] = (Waypoint) link[3];
links[0] = (Waypoint *) link[0];
links[1] = (Waypoint *) link[1];
links[2] = (Waypoint *) link[2];
links[3] = (Waypoint *) link[3];
flags = flag;
return self;
}
@ -108,6 +108,7 @@ Array waypoint_array;
{
[self initAt:ent.origin];
//FIXME do entity based init
return self;
}
-(void)dealloc
@ -136,10 +137,10 @@ Array waypoint_array;
-(void)clearLinks
{
links[0] = links[1] = links[2] = links[3] = NIL;
links[0] = links[1] = links[2] = links[3] = nil;
}
-(integer)isLinkedTo:(Waypoint)way
-(integer)isLinkedTo:(Waypoint *)way
{
local integer i;
@ -156,7 +157,7 @@ Array waypoint_array;
return 0;
}
-(integer)linkWay:(Waypoint)way
-(integer)linkWay:(Waypoint *)way
{
local integer i;
@ -175,7 +176,7 @@ Array waypoint_array;
}
// Link Ways part 2, used only for teleporters
-(integer)teleLinkWay:(Waypoint)way
-(integer)teleLinkWay:(Waypoint *)way
{
local integer i;
@ -194,7 +195,7 @@ Array waypoint_array;
return 0;
}
-(void)unlinkWay:(Waypoint)way
-(void)unlinkWay:(Waypoint *)way
{
local integer i;
@ -206,7 +207,7 @@ Array waypoint_array;
for (i = 0; i < 4; i++) {
if (links[i] == way) {
flags &= ~(AI_TELELINK_1 << i);
links[i] = NIL;
links[i] = nil;
}
}
}
@ -222,7 +223,7 @@ Waypoint Loading from file
+(void)loadFile:(string)path
{
local QFile file;
local PLItem plist;
local PLItem *plist;
local string plist_data;
local integer i, count;
@ -238,26 +239,26 @@ Waypoint Loading from file
[Waypoint clearAll];
count = [(PLArray)plist numObjects];
count = [(PLArray *)plist numObjects];
dprint (sprintf ("%i waypoints\n", count));
for (i = 0; i < count; i++) {
local PLDictionary way = (PLDictionary) [(PLArray) plist getObjectAtIndex:i];
local PLString s = (PLString) [way getObjectForKey:"origin"];
local PLDictionary *way = (PLDictionary *) [(PLArray *) plist getObjectAtIndex:i];
local PLString *s = (PLString *) [way getObjectForKey:"origin"];
local vector org = stov (sprintf ("'%s'", [s string]));
local PLArray links = (PLArray) [way getObjectForKey:"link"];
local PLArray *links = (PLArray *) [way getObjectForKey:"link"];
//FIXME compiler/vm "bug" makes passing pointers to locals dangerous
s = (PLString) [way getObjectForKey:"flags"];
s = (PLString *) [way getObjectForKey:"flags"];
local integer flags = stoi ([s string]);
@static integer[4] link;
s = (PLString) [links getObjectAtIndex:0];
@static integer link[4];
s = (PLString *) [links getObjectAtIndex:0];
link[0] = stoi ([s string]);
s = (PLString) [links getObjectAtIndex:1];
s = (PLString *) [links getObjectAtIndex:1];
link[1] = stoi ([s string]);
s = (PLString) [links getObjectAtIndex:2];
s = (PLString *) [links getObjectAtIndex:2];
link[2] = stoi ([s string]);
s = (PLString) [links getObjectAtIndex:3];
s = (PLString *) [links getObjectAtIndex:3];
link[3] = stoi ([s string]);
[[Waypoint alloc] initAt:org linkedTo:link flags:flags];
@ -273,10 +274,10 @@ Waypoint Loading from file
waypoint_init ();
}
+(Waypoint)waypointForNum:(integer)num
+(Waypoint *)waypointForNum:(integer)num
{
if (!num)
return NIL;
return nil;
return [waypoint_array objectAtIndex:num - 1];
}
@ -326,10 +327,10 @@ Waypoint Loading from file
//[waypoint_array makeObjectsPerformSelector:@selector(debug)];
}
-(void)plitem:(PLItem)list
-(void)plitem:(PLItem *)list
{
local PLDictionary way = (PLDictionary) [PLItem newDictionary];
local PLArray l = (PLArray) [PLItem newArray];
local PLDictionary *way = (PLDictionary *) [PLItem newDictionary];
local PLArray *l = (PLArray *) [PLItem newArray];
local integer i;
[way addKey:"origin" value:[PLItem newString:sprintf ("%g %g %g",
@ -344,18 +345,18 @@ Waypoint Loading from file
}
[way addKey:"link" value:l];
[way addKey:"flags" value:[PLItem newString:itos (flags)]];
[(PLArray) list addObject:way];
[(PLArray *) list addObject:way];
}
+(PLItem) plist
+(PLItem *) plist
{
local PLItem list = [PLItem newArray];
local PLItem *list = [PLItem newArray];
[waypoint_array makeObjectsPerformSelector:@selector(plitem:)
withObject:list];
return list;
}
-(void) checkWay:(Target)ent
-(void) checkWay:(Target *)ent
{
local integer i;
for (i = 0; i < 4; i++)
@ -372,18 +373,18 @@ Waypoint Loading from file
sprintf ("Waypoitn %i links to itself\n", [self id]));
}
+(void) check:(Target)ent
+(void) check:(Target *)ent
{
[waypoint_array makeObjectsPerformSelector:@selector(checkWay)
withObject:ent];
}
+(Waypoint)find:(vector)org radius:(float)rad
+(Waypoint *)find:(vector)org radius:(float)rad
{
local vector dif;
local float dist;
local integer i, count;
local Waypoint way = NIL, w;
local Waypoint *way = nil, *w;
rad = rad * rad; // radius squared
@ -423,7 +424,7 @@ Waypoint Loading from file
{
if (ent) {
remove (ent);
ent = NIL;
ent = nil;
own = 0;
}
}
@ -458,7 +459,7 @@ Route & path table management
-(void)clearRoute
{
busy = FALSE;
enemy = NIL;
enemy = nil;
distance = -1; // not in table
}
@ -468,12 +469,12 @@ Route & path table management
[waypoint_array makeObjectsPerformSelector:@selector (clearRoute)];
}
-(void)clearRouteForBot:(Bot)bot
-(void)clearRouteForBot:(Bot *)bot
{
bot_bits &= ~bot.b_clientflag;
}
+(void)clearMyRoute:(Bot) bot
+(void)clearMyRoute:(Bot *) bot
{
[waypoint_array makeObjectsPerformSelector:@selector (clearRouteForBot:)
withObject:bot];
@ -490,7 +491,7 @@ tripping the runaway loop counter
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
*/
-(void)followLink:(Waypoint)e2 :(integer)bBit
-(void)followLink:(Waypoint *)e2 :(integer)bBit
{
local float dist;
@ -529,7 +530,7 @@ tripping the runaway loop counter
if (flags & AI_TRACE_TEST) {
for (i = 0; i < 4; i++) {
if (links[i]) {
traceline (origin, links[i].origin, TRUE, /*self*/NIL);
traceline (origin, links[i].origin, TRUE, /*self*/nil);
if (trace_fraction == 1)
[self followLink:links[i] :AI_TELELINK_1 << i];
}
@ -554,7 +555,7 @@ tripping the runaway loop counter
if ((waypoint_thinker.@this = [waypoint_queue removeItemAtHead])) {
local id obj = waypoint_thinker.@this;
local IMP imp = [obj methodForSelector: @selector (waypointThink)];
waypoint_thinker.think = (void ()) imp;
waypoint_thinker.think = (void ()()) imp;
waypoint_thinker.nextthink = time;
}
}
@ -565,14 +566,14 @@ tripping the runaway loop counter
[waypoint_queue addItemAtTail: self];
} else {
local IMP imp = [self methodForSelector: @selector (waypointThink)];
waypoint_thinker.think = (void ()) imp;
waypoint_thinker.think = (void ()()) imp;
waypoint_thinker.nextthink = time;
waypoint_thinker.@this = self;
}
return self;
}
-(integer)priority:(Bot)bot
-(integer)priority:(Bot *)bot
{
if (flags & AI_SNIPER)
return 30;
@ -609,7 +610,7 @@ BSP/QC Waypoint loading
void() waypoint =
{
local Waypoint way = [[Waypoint alloc] initFromEntity: @self];
local Waypoint *way = [[Waypoint alloc] initFromEntity: @self];
};
/* create a new waypoint using frikbot style info
@ -623,11 +624,11 @@ void() waypoint =
*/
void(vector org, vector bit1, integer bit4, integer flargs) make_way =
{
local Waypoint y = [[Waypoint alloc] initAt:org];
local Waypoint *y = [[Waypoint alloc] initAt:org];
waypoint_mode = WM_LOADED;
y.flags = flargs;
y.links[0] = (Waypoint) (integer) bit1_x;
y.links[1] = (Waypoint) (integer) bit1_y;
y.links[2] = (Waypoint) (integer) bit1_z;
y.links[3] = (Waypoint) (integer) bit4;
y.links[0] = (Waypoint *) (integer) bit1.x;
y.links[1] = (Waypoint *) (integer) bit1.y;
y.links[2] = (Waypoint *) (integer) bit1.z;
y.links[3] = (Waypoint *) (integer) bit4;
};

View file

@ -9,7 +9,7 @@ CPP=cpp
CPPFLAGS=-I. -Iweapons -Imdl -Iact -Imapents
QFCC=qfcc
QFCCFLAGS=-qg -Wall -Werror $(CPPFLAGS)
QFCCFLAGS=-qg -Cvector-components -Wall -Werror $(CPPFLAGS)
###############################################

View file

@ -686,8 +686,8 @@ player_takeitem =
local float eid;
nitem = 0;
str1 = NIL;
str2 = NIL;
str1 = nil;
str2 = nil;
while ((eid = equip_iter (other)) != -1) {
if (equip_query (self, eid))
@ -714,7 +714,7 @@ player_takeitem =
self.armortype = other.armortype;
_item_xprint_strs (nitem, str1, str2);
str2 = NIL;
str2 = nil;
if (self.armortype >= 0.8)
str1 = "strong armor";
else if (self.armortype >= 0.6)

View file

@ -259,6 +259,6 @@ ClientDisconnect =
" frags\n");
override_set_th_kill (self, NOTHING_function);
self.deathmsg1 = NIL;
self.deathmsg1 = nil;
damage (self, self, self, DAMAGE_MUSTDIE, NOTHING_function);
};

View file

@ -319,7 +319,7 @@ trigger_counter =
{
util_map_entity_init ();
self.model = NIL;
self.model = nil;
self.modelindex = 0;
if (!self.count)

View file

@ -239,8 +239,8 @@ float(float d) _movewall_door_takedamage = {
/* Use target if you need it to go more
than once */
self.message = "";
self.noise1 = NIL;
self.noise2 = NIL;
self.noise1 = nil;
self.noise2 = nil;
}
self = self.enemy;
@ -277,8 +277,8 @@ void() _movewall_door_touch = {
/* Use target if you need it to go more
than once */
self.message = "";
self.noise1 = NIL;
self.noise2 = NIL;
self.noise1 = nil;
self.noise2 = nil;
}
self = self.enemy;
}
@ -337,12 +337,12 @@ void() _door_link = {
tail.message = "";
tail.noise1 = NIL;
tail.noise2 = NIL;
tail.noise3 = NIL;
tail.noise4 = NIL;
tail.noise5 = NIL;
tail.noise6 = NIL;
tail.noise1 = nil;
tail.noise2 = nil;
tail.noise3 = nil;
tail.noise4 = nil;
tail.noise5 = nil;
tail.noise6 = nil;
}
tail.enemy = world;
@ -730,8 +730,8 @@ void() _movewall_secret_use = {
void() _movewall_secret_think = {
if (floor (self.state) != self.state) {
if (self.count == 0 && self.state == 0.5) {
self.message = NIL;
self.noise2 = NIL;
self.message = nil;
self.noise2 = nil;
if (!util_use_targets ()) {
self.velocity = '0 0 0';

View file

@ -82,7 +82,7 @@ void() _powerup_think = {
if (powerup.noise) {
sound(self, CHAN_AUTO, powerup.noise, 1, ATTN_NORM);
powerup.noise = NIL;
powerup.noise = nil;
}
powerup.air_finished += 1;
@ -410,7 +410,7 @@ void() _ring_think = {
if (powerup.noise) {
sound(self, CHAN_AUTO, powerup.noise, 1, ATTN_NORM);
powerup.noise = NIL;
powerup.noise = nil;
}
powerup.air_finished += 1;

View file

@ -89,13 +89,13 @@ void() trap_spikeshooter = {
} else if (self.spawnflags & SPAWNFLAG_SUPERSPIKE) {
self.weaponmodel = "progs/s_spike.mdl";
self.noise1 = "weapons/spike2.wav";
self.noise2 = NIL;
self.noise2 = nil;
self.speed = 1000;
self.dmg = 18;
} else {
self.weaponmodel = "progs/spike.mdl";
self.noise1 = "weapons/spike2.wav";
self.noise2 = NIL;
self.noise2 = nil;
self.speed = 1000;
self.dmg = 9;
}

View file

@ -153,7 +153,7 @@ void() trigger_teleport = {
self.noise = "ambience/hum1.wav";
setmodel(self, self.model);
self.model = NIL;
self.model = nil;
self.modelindex = 0;
util_map_entity_init();

View file

@ -131,9 +131,9 @@ float() util_use_targets = {
if (self.count > 0) {
self.count--;
if (!self.count) {
self.targetname = NIL;
self.target = NIL;
self.killtarget = NIL;
self.targetname = nil;
self.target = nil;
self.killtarget = nil;
self.use = NOTHING_function;
self.touch = NOTHING_function;

View file

@ -33,7 +33,7 @@ safe_remove =
{
e.takedamage = DAMAGE_NO;
e.solid = SOLID_NOT;
e.model = NIL;
e.model = nil;
e.modelindex = 0;
e.think = SUB_remove;

View file

@ -1,5 +1,5 @@
all: spprogs.dat
spprogs.dat: progs.src *.qc
qfcc -Werror -g --advanced
qfcc -Cvector-components -Werror -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h

View file

@ -121,6 +121,7 @@ FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil; //FIXME need noreturn
};
void ()
@ -567,6 +568,7 @@ ValidateUser =
return true;
*/
return 1;
};
/*

View file

@ -18,6 +18,7 @@ vector() SetMovedir =
}
self.angles = '0 0 0';
return nil;
};
/*

View file

@ -158,6 +158,7 @@ float() WizardAttackFinished =
self.attack_state = AS_SLIDING;
self.think = wiz_side1;
}
return 0;
};
// FAST ATTACKS ===============================================================

View file

@ -1,5 +1,5 @@
all: progs.dat
progs.dat: progs.src *.qc
qfcc -Werror -g --advanced
qfcc -Cvector-components -Werror -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h

View file

@ -30,7 +30,7 @@ float (string st) check_bot_name =
}
botname = find(botname, classname, "bot");
}
return FALSE;
};
string() bot_name =

View file

@ -99,6 +99,7 @@ entity() FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil;
};

View file

@ -22,6 +22,7 @@ vector() SetMovedir =
}
self.angles = '0 0 0';
return nil;
};
/*

View file

@ -1,5 +1,5 @@
all: qwprogs.dat
qwprogs.dat: progs.src *.qc
qfcc -Werror -g --advanced
qfcc -Cvector-components -Werror -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h

View file

@ -94,6 +94,7 @@ entity() FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil;
};
void() GotoNextMap =
@ -385,6 +386,7 @@ float(entity e) ValidateUser =
}
return true;
*/
return 1;
};
/*
===========

View file

@ -18,6 +18,7 @@ vector() SetMovedir =
}
self.angles = '0 0 0';
return nil;
};
/*
================

View file

@ -1,5 +1,5 @@
all: progs.dat
progs.dat: progs.src *.qc
qfcc -Nwarn -Wall -Werror -g --advanced
qfcc -Cvector-components -Nwarn -Wall -Werror -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h *.i? *.p

View file

@ -51,7 +51,7 @@
if (random() < 0.5)
{
//Not PO'd anymore.
self.enemy = NIL;
self.enemy = nil;
self.th_walk();
}
else

View file

@ -124,6 +124,7 @@ entity() FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil; //FIXME need noreturn
};
string nextmap;

View file

@ -491,8 +491,6 @@ float AS_MISSILE = 4;
.string mdl;
.vector mangle; // angle at start
.vector oldorigin; // only used by secret door
.float t_length, t_width;

View file

@ -22,6 +22,7 @@ vector() SetMovedir =
}
self.angles = '0 0 0';
return '0 0 0';
};
/*

View file

@ -177,6 +177,7 @@ float() WizardAttackFinished =
self.attack_state = AS_SLIDING;
self.think = wiz_side1;
}
return 0;
};
/*

View file

@ -1,5 +1,5 @@
all: qwprogs.dat
qwprogs.dat: progs.src *.qc
qfcc -Werror -Wall -g --advanced
qfcc -Cvector-components -Werror -Wall -g --advanced
clean:
rm -f core *.dat *.sym progdefs.h *.p *.i1 *.i2

View file

@ -113,6 +113,7 @@ FindIntermission =
return spot;
objerror ("FindIntermission: no spot");
return nil; //FIXME need noreturn
};
void ()
@ -378,8 +379,8 @@ ValidateUser =
return false;
}
return true;
*/
return 1;
};
void () DecodeLevelParms;

View file

@ -23,6 +23,7 @@ SetMovedir =
}
self.angles = '0 0 0';
return '0 0 0';
};
void ()