Rename more propobj functions
This commit is contained in:
parent
b7c4828289
commit
8319a25c5a
|
@ -3559,7 +3559,7 @@ bool bg_test_line_intersects_bbox(struct coord *arg0, struct coord *arg1, struct
|
|||
return true;
|
||||
}
|
||||
|
||||
bool bg_test_hit_on_obj(struct coord *arg0, struct coord *arg1, struct coord *arg2, Gfx *gdl,
|
||||
bool bg_find_hitthing_by_gfx_tris(struct coord *arg0, struct coord *arg1, struct coord *arg2, Gfx *gdl,
|
||||
Gfx *gdl2, Vtx *vertices, struct hitthing *hitthing)
|
||||
{
|
||||
s16 stack;
|
||||
|
|
|
@ -345,7 +345,7 @@ void bbike0f0d2b40(struct defaultobj *bike, struct coord *arg1, f32 arg2, struct
|
|||
sp84.z += arg1->z / g_Vars.lvupdate60freal;
|
||||
}
|
||||
|
||||
func0f082e84(obstacle, &sp9c, &sp90, &sp84, false);
|
||||
obj_push(obstacle, &sp9c, &sp90, &sp84, false);
|
||||
|
||||
if (arg2) {
|
||||
f32 xdiff = sp9c.x - bike->prop->pos.x;
|
||||
|
|
|
@ -206,7 +206,7 @@ void bgrab0f0ccbf0(struct coord *delta, f32 angle, struct defaultobj *obj)
|
|||
spbc.y = 0.0f;
|
||||
spbc.z = (sp98.z - g_Vars.currentplayer->prop->pos.z) / g_Vars.lvupdate60freal;
|
||||
|
||||
func0f082e84(obj, &spd4, &spc8, &spbc, false);
|
||||
obj_push(obj, &spd4, &spc8, &spbc, false);
|
||||
} else {
|
||||
struct coord sp8c;
|
||||
struct coord sp80;
|
||||
|
@ -256,7 +256,7 @@ void bgrab0f0ccbf0(struct coord *delta, f32 angle, struct defaultobj *obj)
|
|||
sp74.z += delta->z / g_Vars.lvupdate60freal;
|
||||
}
|
||||
|
||||
func0f082e84(obj, &sp8c, &sp80, &sp74, false);
|
||||
obj_push(obj, &sp8c, &sp80, &sp74, false);
|
||||
|
||||
if (angle != 0.0f) {
|
||||
f32 sp40 = sp8c.x - g_Vars.currentplayer->prop->pos.x;
|
||||
|
|
|
@ -4134,7 +4134,7 @@ void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, RoomNum *rooms, M
|
|||
prop_activate(objprop);
|
||||
prop_enable(objprop);
|
||||
mtx00015f04(obj->model->scale, matrix1);
|
||||
func0f06a580(obj, coord, matrix1, rooms);
|
||||
obj_place(obj, coord, matrix1, rooms);
|
||||
|
||||
if (obj->type == OBJTYPE_WEAPON && ((struct weaponobj *) obj)->weaponnum == WEAPON_BOLT) {
|
||||
s32 beamnum = boltbeam_find_by_prop(objprop);
|
||||
|
@ -4507,7 +4507,7 @@ void bgun_update_held_rocket(s32 handnum)
|
|||
mtx.m[3][2] = 0;
|
||||
|
||||
mtx00015f04(obj->model->scale, &mtx);
|
||||
func0f06a580(obj, &hand->muzzlepos, &mtx, playerprop->rooms);
|
||||
obj_place(obj, &hand->muzzlepos, &mtx, playerprop->rooms);
|
||||
prop_deregister_rooms(objprop);
|
||||
}
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ void bwalk0f0c3b38(struct coord *reltarget, struct defaultobj *obj)
|
|||
tween.y = 0;
|
||||
tween.z = (abstarget.z - g_Vars.currentplayer->prop->pos.z) / g_Vars.lvupdate60freal;
|
||||
|
||||
func0f082e84(obj, &posunk, &vector, &tween, false);
|
||||
obj_push(obj, &posunk, &vector, &tween, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -506,7 +506,7 @@ bool bot_test_prop_for_pickup(struct prop *prop, struct chrdata *chr)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (func0f085194(obj) && obj->type != OBJTYPE_HAT) {
|
||||
if (obj_defaults_to_bounceable_invincible_pickupable(obj) && obj->type != OBJTYPE_HAT) {
|
||||
if (obj->flags & OBJFLAG_UNCOLLECTABLE) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -259,7 +259,7 @@ bool botact_shoot_farsight(struct chrdata *chr, s32 arg1, struct coord *vector,
|
|||
// chance of passing.
|
||||
if (oppchr != chr
|
||||
&& value > rand
|
||||
&& func0f06b39c(arg3, vector, &oppprop->pos, chr_get_hit_radius(oppchr))) {
|
||||
&& pos_is_facing_pos(arg3, vector, &oppprop->pos, chr_get_hit_radius(oppchr))) {
|
||||
bgun_play_prop_hit_sound(&gset, oppprop, -1);
|
||||
|
||||
if (oppchr->model && chr_get_shield(oppchr) > 0) {
|
||||
|
|
|
@ -594,7 +594,7 @@ bool cam_is_pos_in_screen_box(struct coord *pos, f32 arg1, struct drawslot *draw
|
|||
* correct address to cam_is_pos_in_screen_box so it can interpret the pointer as a
|
||||
* drawslot.
|
||||
*/
|
||||
bool cam_is_pos_in_fov_and_visible_room(RoomNum *rooms, struct coord *pos, f32 arg2)
|
||||
bool cam_is_pos_in_fov_and_visible_room(RoomNum *rooms, struct coord *pos, f32 modelscale)
|
||||
{
|
||||
s32 i;
|
||||
RoomNum room;
|
||||
|
@ -637,5 +637,5 @@ bool cam_is_pos_in_fov_and_visible_room(RoomNum *rooms, struct coord *pos, f32 a
|
|||
return false;
|
||||
}
|
||||
|
||||
return cam_is_pos_in_screen_box(pos, arg2, (struct drawslot *) &(((u8 *) &box)[-((uintptr_t) &(((struct drawslot *)0)->box))]));
|
||||
return cam_is_pos_in_screen_box(pos, modelscale, (struct drawslot *) &(((u8 *) &box)[-((uintptr_t) &(((struct drawslot *)0)->box))]));
|
||||
}
|
||||
|
|
|
@ -2009,7 +2009,7 @@ void chr_tick_child(struct chrdata *chr, struct prop *prop, bool fulltick)
|
|||
thing.unk10 = gfx_allocate(model->definition->nummatrices * sizeof(Mtxf));
|
||||
model_set_matrices(&thing, model);
|
||||
|
||||
func0f07063c(prop, fulltick);
|
||||
obj_child_tick_player(prop, fulltick);
|
||||
|
||||
child = prop->child;
|
||||
|
||||
|
@ -2024,13 +2024,13 @@ void chr_tick_child(struct chrdata *chr, struct prop *prop, bool fulltick)
|
|||
} else {
|
||||
prop->flags &= ~PROPFLAG_ONTHISSCREENTHISTICK;
|
||||
|
||||
func0f07063c(prop, fulltick);
|
||||
obj_child_tick_player(prop, fulltick);
|
||||
|
||||
child = prop->child;
|
||||
|
||||
while (child) {
|
||||
next = child->next;
|
||||
func0f0706f8(child, fulltick);
|
||||
obj_child_tick_player_offscreen(child, fulltick);
|
||||
child = next;
|
||||
}
|
||||
}
|
||||
|
@ -2481,7 +2481,7 @@ s32 chr_tick(struct prop *prop)
|
|||
if (eyespy == g_Vars.currentplayer->eyespy && eyespy->active) {
|
||||
needsupdate = false;
|
||||
} else {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
}
|
||||
|
||||
if (fulltick) {
|
||||
|
@ -2526,7 +2526,7 @@ s32 chr_tick(struct prop *prop)
|
|||
} else if (chr->actiontype == ACT_PATROL || chr->actiontype == ACT_GOPOS) {
|
||||
if ((chr->actiontype == ACT_PATROL && chr->act_patrol.waydata.mode == WAYMODE_MAGIC)
|
||||
|| (chr->actiontype == ACT_GOPOS && chr->act_gopos.waydata.mode == WAYMODE_MAGIC)) {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
|
||||
if (needsupdate) {
|
||||
model->anim->average = false;
|
||||
|
@ -2538,7 +2538,7 @@ s32 chr_tick(struct prop *prop)
|
|||
chr_update_anim(chr, lvupdate240, true);
|
||||
}
|
||||
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
|
||||
if (needsupdate) {
|
||||
if (chr->actiontype == ACT_PATROL) {
|
||||
|
@ -2552,7 +2552,7 @@ s32 chr_tick(struct prop *prop)
|
|||
&& !((prop->flags & (PROPFLAG_ONANYSCREENTHISTICK | PROPFLAG_ONANYSCREENPREVTICK)) != 0);
|
||||
}
|
||||
} else if (chr->actiontype == ACT_ANIM && !chr->act_anim.movewheninvis) {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
|
||||
if (fulltick) {
|
||||
model->anim->average = false;
|
||||
|
@ -2568,9 +2568,9 @@ s32 chr_tick(struct prop *prop)
|
|||
|
||||
if (chr->chrflags & CHRCFLAG_FORCETOGROUND) {
|
||||
chr_update_anim(chr, lvupdate240, true);
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
} else {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
|
||||
if (g_Vars.mplayerisrunning) {
|
||||
if (fulltick) {
|
||||
|
@ -2595,14 +2595,14 @@ s32 chr_tick(struct prop *prop)
|
|||
}
|
||||
}
|
||||
} else if (chr->actiontype == ACT_DEAD) {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
} else if (prop->type == PROPTYPE_PLAYER
|
||||
&& (g_Vars.mplayerisrunning
|
||||
|| (player = g_Vars.players[playermgr_get_player_num_by_prop(prop)], player->cameramode == CAMERAMODE_EYESPY)
|
||||
|| (player->cameramode == CAMERAMODE_THIRDPERSON && player->visionmode == VISIONMODE_SLAYERROCKET))) {
|
||||
model->anim->average = false;
|
||||
chr_update_anim(chr, lvupdate240, true);
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
} else {
|
||||
isrepeatframe2 = false;
|
||||
|
||||
|
@ -2622,7 +2622,7 @@ s32 chr_tick(struct prop *prop)
|
|||
if (isrepeatframe2) {
|
||||
needsupdate = false;
|
||||
} else {
|
||||
needsupdate = func0f08e8ac(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
needsupdate = pos_is_onscreen(prop, &prop->pos, model_get_effective_scale(model), true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2878,7 +2878,7 @@ s32 chr_tick(struct prop *prop)
|
|||
|
||||
while (child) {
|
||||
next = child->next;
|
||||
func0f0706f8(child, fulltick);
|
||||
obj_child_tick_player_offscreen(child, fulltick);
|
||||
child = next;
|
||||
}
|
||||
|
||||
|
@ -3451,7 +3451,7 @@ Gfx *chr_render(struct prop *prop, Gfx *gdl, bool xlupass)
|
|||
gdl = chr_render_cloak(gdl, chr->prop, chr->prop);
|
||||
}
|
||||
|
||||
if (func0f08e5a8(prop->rooms, &screenbox) > 0 && (chr->chrflags & CHRCFLAG_UNPLAYABLE) == 0) {
|
||||
if (rooms_get_cumulative_screenbox(prop->rooms, &screenbox) > 0 && (chr->chrflags & CHRCFLAG_UNPLAYABLE) == 0) {
|
||||
gdl = bg_scissor_within_viewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
|
||||
} else {
|
||||
gdl = bg_scissor_to_viewport(gdl);
|
||||
|
@ -3479,7 +3479,7 @@ Gfx *chr_render(struct prop *prop, Gfx *gdl, bool xlupass)
|
|||
}
|
||||
|
||||
if (!speb) {
|
||||
colour[3] = colour[3] - func0f068fc8(prop, true);
|
||||
colour[3] = colour[3] - obj_get_brightness(prop, true);
|
||||
|
||||
if (colour[3] > 0xff) {
|
||||
colour[3] = 0xff;
|
||||
|
@ -4520,7 +4520,7 @@ void chr_test_hit(struct prop *prop, struct shotdata *shotdata, bool isshooting,
|
|||
Mtxf *mtx;
|
||||
f32 sp68;
|
||||
|
||||
if (func0f06b39c(&shotdata->gunpos2d, &shotdata->gundir2d, (struct coord *)rootmtx->m[3], radius)) {
|
||||
if (pos_is_facing_pos(&shotdata->gunpos2d, &shotdata->gundir2d, (struct coord *)rootmtx->m[3], radius)) {
|
||||
spb8 = 1;
|
||||
hitpart = 1;
|
||||
}
|
||||
|
@ -4534,7 +4534,7 @@ void chr_test_hit(struct prop *prop, struct shotdata *shotdata, bool isshooting,
|
|||
|
||||
while (child) {
|
||||
next = child->next;
|
||||
func0f0859a0(child, shotdata);
|
||||
obj_attachment_test_hit(child, shotdata);
|
||||
child = next;
|
||||
}
|
||||
|
||||
|
@ -4542,7 +4542,7 @@ void chr_test_hit(struct prop *prop, struct shotdata *shotdata, bool isshooting,
|
|||
hitpart = model_test_for_hit(model, &shotdata->gunpos2d, &shotdata->gundir2d, &node);
|
||||
|
||||
while (hitpart > 0) {
|
||||
if (func0f084594(model, node, &shotdata->gunpos2d, &shotdata->gundir2d, &sp88, &sp84, &sp80)) {
|
||||
if (obj_find_hitthing_by_bboxrodata_mtx(model, node, &shotdata->gunpos2d, &shotdata->gundir2d, &sp88, &sp84, &sp80)) {
|
||||
mtx4_transform_vec(&model->matrices[sp84], &sp88.pos, &spdc);
|
||||
mtx4_transform_vec_in_place(cam_get_projection_mtxf(), &spdc);
|
||||
mtx4_rotate_vec(&model->matrices[sp84], &sp88.unk0c, &spd0);
|
||||
|
@ -4556,7 +4556,7 @@ void chr_test_hit(struct prop *prop, struct shotdata *shotdata, bool isshooting,
|
|||
hitpart = model_test_for_hit(model, &shotdata->gunpos2d, &shotdata->gundir2d, &node);
|
||||
|
||||
if (hitpart > 0) {
|
||||
if (func0f06bea0(model, model->definition->rootnode, model->definition->rootnode, &shotdata->gunpos2d,
|
||||
if (projectile_0f06bea0(model, model->definition->rootnode, model->definition->rootnode, &shotdata->gunpos2d,
|
||||
&shotdata->gundir2d, &sp88.pos, &sp70, &node, &hitpart, &sp84, &sp80)) {
|
||||
mtx4_transform_vec(cam_get_projection_mtxf(), &sp88.pos, &spdc);
|
||||
mtx4_rotate_vec(cam_get_projection_mtxf(), &sp88.unk0c, &spd0);
|
||||
|
|
|
@ -10390,7 +10390,7 @@ void chr_tick_shoot(struct chrdata *chr, s32 handnum)
|
|||
&& (hitobj->flags2 & OBJFLAG2_IMMUNETOANTI)) {
|
||||
// Co-op can't damage mission critical objects
|
||||
} else {
|
||||
obj_take_gunfire(hitobj, gset_get_damage(&gset), &hitpos, gset.weaponnum, playernum);
|
||||
obj_damage_by_gunfire(hitobj, gset_get_damage(&gset), &hitpos, gset.weaponnum, playernum);
|
||||
}
|
||||
}
|
||||
} else if (hitsomething) {
|
||||
|
@ -14459,16 +14459,16 @@ bool chr_is_target_aiming_at_me(struct chrdata *chr)
|
|||
CDTYPE_OBJS | CDTYPE_DOORS | CDTYPE_PATHBLOCKER | CDTYPE_BG,
|
||||
GEOFLAG_BLOCK_SIGHT))) {
|
||||
struct model *model = chr->model;
|
||||
struct coord sp68;
|
||||
struct coord sp56;
|
||||
struct coord sp44;
|
||||
f32 somefloat = model_get_effective_scale(model) * 0.8f;
|
||||
struct coord playerpos;
|
||||
struct coord playeraimdir;
|
||||
struct coord mypos;
|
||||
f32 myradius = model_get_effective_scale(model) * 0.8f;
|
||||
|
||||
bgun0f0a0c08(&sp68, &sp56);
|
||||
model_get_root_position(model, &sp44);
|
||||
mtx4_transform_vec_in_place(cam_get_world_to_screen_mtxf(), &sp44);
|
||||
bgun0f0a0c08(&playerpos, &playeraimdir);
|
||||
model_get_root_position(model, &mypos);
|
||||
mtx4_transform_vec_in_place(cam_get_world_to_screen_mtxf(), &mypos);
|
||||
|
||||
if (func0f06b39c(&sp68, &sp56, &sp44, somefloat)) {
|
||||
if (pos_is_facing_pos(&playerpos, &playeraimdir, &mypos, myradius)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2376,7 +2376,7 @@ bool ai_object_move_to_pad(void)
|
|||
|
||||
rooms[0] = pad.room;
|
||||
rooms[1] = -1;
|
||||
func0f06a730(obj, &pad.pos, &matrix, rooms, &pad.pos);
|
||||
obj_place_3d(obj, &pad.pos, &matrix, rooms, &pad.pos);
|
||||
}
|
||||
|
||||
g_Vars.aioffset += 5;
|
||||
|
|
|
@ -417,12 +417,11 @@ bool env_is_pos_in_fog_max_distance(struct coord *pos, f32 tolerance)
|
|||
return true;
|
||||
}
|
||||
|
||||
campos = &g_Vars.currentplayer->cam_pos;
|
||||
|
||||
if (g_Vars.currentplayer->visionmode == VISIONMODE_XRAY) {
|
||||
return true;
|
||||
}
|
||||
|
||||
campos = &g_Vars.currentplayer->cam_pos;
|
||||
mtx = cam_get_world_to_screen_mtxf();
|
||||
|
||||
sp24.x = pos->x - campos->x;
|
||||
|
|
|
@ -853,7 +853,7 @@ void explosion_inflict_damage(struct prop *expprop)
|
|||
// Damage the object
|
||||
if ((obj->hidden & OBJHFLAG_00001000) == 0
|
||||
&& (obj->flags2 & (OBJFLAG2_LINKEDTOSAFE | OBJFLAG2_IMMUNETOEXPLOSIONS)) == 0) {
|
||||
func0f085050(prop, (RANDOMFRAC() * 0.5f + 1.0f) * minfrac, &prop->pos, 0x22, exp->owner);
|
||||
obj_damage_by_explosion(prop, (RANDOMFRAC() * 0.5f + 1.0f) * minfrac, &prop->pos, WEAPON_REMOTEMINE, exp->owner);
|
||||
}
|
||||
|
||||
// Give object momentum if it's a hover obj
|
||||
|
@ -884,8 +884,8 @@ void explosion_inflict_damage(struct prop *expprop)
|
|||
|
||||
if ((obj->hidden & OBJHFLAG_00001000) == 0
|
||||
&& (obj->flags2 & (OBJFLAG2_LINKEDTOSAFE | OBJFLAG2_IMMUNETOEXPLOSIONS)) == 0) {
|
||||
func0f085050(prop, (RANDOMFRAC() * 0.5f + 1.0f) * minfrac,
|
||||
&prop->pos, 0x22, exp->owner);
|
||||
obj_damage_by_explosion(prop, (RANDOMFRAC() * 0.5f + 1.0f) * minfrac,
|
||||
&prop->pos, WEAPON_REMOTEMINE, exp->owner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1294,7 +1294,7 @@ Gfx *explosion_render(struct prop *prop, Gfx *gdl, bool xlupass)
|
|||
Col *colours;
|
||||
s32 tmp;
|
||||
|
||||
if (func0f08e5a8(prop->rooms, &screenbox) > 0) {
|
||||
if (rooms_get_cumulative_screenbox(prop->rooms, &screenbox) > 0) {
|
||||
gdl = bg_scissor_within_viewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
|
||||
} else {
|
||||
gdl = bg_scissor_to_viewport(gdl);
|
||||
|
|
|
@ -1373,7 +1373,7 @@ void scenario_handle_dropped_token(struct chrdata *chr, struct prop *prop)
|
|||
rooms[0] = pad.room;
|
||||
rooms[1] = -1;
|
||||
|
||||
func0f06a730(obj, &pad.pos, &mtx, rooms, &pad.pos);
|
||||
obj_place_3d(obj, &pad.pos, &mtx, rooms, &pad.pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -506,10 +506,10 @@ void objective_check_holograph(f32 maxdist)
|
|||
maxdist = maxdist * maxdist;
|
||||
}
|
||||
|
||||
if (dist < maxdist && func0f0899dc(obj->prop, &sp9c, xrange, yrange)) {
|
||||
if (dist < maxdist && prop_get_screen_coords(obj->prop, &sp9c, xrange, yrange)) {
|
||||
f32 sp78[2];
|
||||
f32 sp70[2];
|
||||
func0f06803c(&sp9c, xrange, yrange, sp78, sp70);
|
||||
obj_get_screeninfo(&sp9c, xrange, yrange, sp78, sp70);
|
||||
|
||||
if (sp78[0] > cam_get_screen_left()
|
||||
&& sp78[0] < cam_get_screen_left() + cam_get_screen_width()
|
||||
|
|
|
@ -1014,7 +1014,7 @@ void player_spawn(void)
|
|||
|
||||
if (g_Vars.lvframenum > 0
|
||||
&& (g_ChrSlots[i].hidden & CHRHFLAG_ONBONDSSCREEN)
|
||||
&& func0f06b39c(&sp78, &sp90, &g_ChrSlots[i].prop->pos, model_get_effective_scale(g_ChrSlots[i].model))
|
||||
&& pos_is_facing_pos(&sp78, &sp90, &g_ChrSlots[i].prop->pos, model_get_effective_scale(g_ChrSlots[i].model))
|
||||
&& (random() % 8)) {
|
||||
sqdist += 1000 * 1000;
|
||||
}
|
||||
|
|
|
@ -1212,7 +1212,7 @@ void hand_inflict_melee_damage(s32 handnum, struct gset *gset, bool arg2)
|
|||
model = chr->model;
|
||||
}
|
||||
|
||||
if (func0f0679ac(model, &distance, &sp110, spfc, spf4)
|
||||
if (obj_is_any_node_in_range(model, &distance, &sp110, spfc, spf4)
|
||||
&& sp110 <= 0
|
||||
&& distance >= -rangelimit) {
|
||||
cdtypes = CDTYPE_OBJS | CDTYPE_DOORS | CDTYPE_PATHBLOCKER | CDTYPE_BG;
|
||||
|
@ -1234,7 +1234,7 @@ void hand_inflict_melee_damage(s32 handnum, struct gset *gset, bool arg2)
|
|||
f32 damage = gset_get_damage(gset) * 2.5f;
|
||||
skipthething = true;
|
||||
bgun_play_glass_hit_sound(&playerprop->pos, playerprop->rooms, -1);
|
||||
obj_take_gunfire(obj, damage, &prop->pos, gset->weaponnum, g_Vars.currentplayernum);
|
||||
obj_damage_by_gunfire(obj, damage, &prop->pos, gset->weaponnum, g_Vars.currentplayernum);
|
||||
obj_drop_recursively(prop, false);
|
||||
}
|
||||
} else if (arg2) {
|
||||
|
@ -1637,7 +1637,7 @@ u8 g_PausableObjs[] = {
|
|||
0, // OBJECTIVETYPE_1F
|
||||
0, // OBJECTIVETYPE_ENTERROOM
|
||||
0, // OBJECTIVETYPE_THROWINROOM
|
||||
0, // OBJTYPE_22
|
||||
0, // OBJECTIVETYPE_COPYGOLDENEYE
|
||||
0, // OBJTYPE_BRIEFING
|
||||
1, // OBJTYPE_GASBOTTLE
|
||||
1, // OBJTYPE_RENAMEOBJ
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -63,7 +63,7 @@ void objs_stop(void)
|
|||
case OBJECTIVETYPE_1F:
|
||||
case OBJECTIVETYPE_ENTERROOM:
|
||||
case OBJECTIVETYPE_THROWINROOM:
|
||||
case OBJTYPE_22:
|
||||
case OBJECTIVETYPE_COPYGOLDENEYE:
|
||||
case OBJTYPE_BRIEFING:
|
||||
case OBJTYPE_RENAMEOBJ:
|
||||
case OBJTYPE_PADLOCKEDDOOR:
|
||||
|
|
|
@ -448,8 +448,10 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
|
|||
if (bbox->xmax == bbox->xmin) {
|
||||
xscale = maxscale;
|
||||
}
|
||||
} else if (bbox->xmax == bbox->xmin) {
|
||||
xscale = maxscale;
|
||||
} else {
|
||||
if (bbox->xmax == bbox->xmin) {
|
||||
xscale = maxscale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -458,8 +460,10 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
|
|||
if (bbox->ymax == bbox->ymin) {
|
||||
zscale = maxscale;
|
||||
}
|
||||
} else if (bbox->ymax == bbox->ymin) {
|
||||
yscale = maxscale;
|
||||
} else {
|
||||
if (bbox->ymax == bbox->ymin) {
|
||||
yscale = maxscale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -468,8 +472,10 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
|
|||
if (bbox->zmax == bbox->zmin) {
|
||||
yscale = maxscale;
|
||||
}
|
||||
} else if (bbox->zmax == bbox->zmin) {
|
||||
zscale = maxscale;
|
||||
} else {
|
||||
if (bbox->zmax == bbox->zmin) {
|
||||
zscale = maxscale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -497,9 +503,9 @@ void setup_create_object(struct defaultobj *obj, s32 cmdindex)
|
|||
}
|
||||
|
||||
if (obj->flags & OBJFLAG_00000002) {
|
||||
func0f06ab60(obj, &pos, &mtx, rooms, ¢re);
|
||||
obj_place_2d(obj, &pos, &mtx, rooms, ¢re);
|
||||
} else {
|
||||
func0f06a730(obj, &pos, &mtx, rooms, ¢re);
|
||||
obj_place_3d(obj, &pos, &mtx, rooms, ¢re);
|
||||
}
|
||||
|
||||
if (obj->hidden & OBJHFLAG_00008000) {
|
||||
|
@ -534,18 +540,18 @@ void setup_place_weapon(struct weaponobj *weapon, s32 cmdindex)
|
|||
weapon->base.flags &= ~OBJFLAG_DEACTIVATED;
|
||||
weapon->base.flags |= OBJFLAG_WEAPON_AICANNOTUSE;
|
||||
modelmgr_load_projectile_modeldefs(weapon->weaponnum);
|
||||
func0f08b25c(weapon, chr);
|
||||
weapon_assign_to_chr(weapon, chr);
|
||||
#else
|
||||
if (g_Vars.stagenum == STAGE_INVESTIGATION
|
||||
&& lv_get_difficulty() == DIFF_PA
|
||||
&& weapon->weaponnum == WEAPON_K7AVENGER) {
|
||||
modelmgr_load_projectile_modeldefs(weapon->weaponnum);
|
||||
func0f08b25c(weapon, chr);
|
||||
weapon_assign_to_chr(weapon, chr);
|
||||
} else if (g_Vars.stagenum == STAGE_ATTACKSHIP) {
|
||||
weapon->base.flags &= ~OBJFLAG_DEACTIVATED;
|
||||
weapon->base.flags |= OBJFLAG_WEAPON_AICANNOTUSE;
|
||||
modelmgr_load_projectile_modeldefs(weapon->weaponnum);
|
||||
func0f08b25c(weapon, chr);
|
||||
weapon_assign_to_chr(weapon, chr);
|
||||
} else {
|
||||
weapon->weaponnum = WEAPON_NONE;
|
||||
}
|
||||
|
@ -602,7 +608,7 @@ void setup_place_weapon(struct weaponobj *weapon, s32 cmdindex)
|
|||
}
|
||||
|
||||
modelmgr_load_projectile_modeldefs(weapon->weaponnum);
|
||||
func0f08b25c(weapon, chr);
|
||||
weapon_assign_to_chr(weapon, chr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -24,62 +24,62 @@ u32 setup_get_cmd_length(u32 *cmd)
|
|||
#endif
|
||||
|
||||
switch ((u8)cmd[0]) {
|
||||
case OBJTYPE_CHR: return sizeof(struct packedchr) / sizeof(u32);
|
||||
case OBJTYPE_DOOR: return sizeof(struct doorobj) / sizeof(u32);
|
||||
case OBJTYPE_DOORSCALE: return sizeof(struct doorscaleobj) / sizeof(u32);
|
||||
case OBJTYPE_BASIC: return sizeof(struct defaultobj) / sizeof(u32);
|
||||
case OBJTYPE_DEBRIS: return sizeof(struct debrisobj) / sizeof(u32);
|
||||
case OBJTYPE_GLASS: return sizeof(struct glassobj) / sizeof(u32);
|
||||
case OBJTYPE_TINTEDGLASS: return sizeof(struct tintedglassobj) / sizeof(u32);
|
||||
case OBJTYPE_SAFE: return sizeof(struct safeobj) / sizeof(u32);
|
||||
case OBJTYPE_GASBOTTLE: return sizeof(struct gasbottleobj) / sizeof(u32);
|
||||
case OBJTYPE_KEY: return sizeof(struct keyobj) / sizeof(u32);
|
||||
case OBJTYPE_ALARM: return sizeof(struct alarmobj) / sizeof(u32);
|
||||
case OBJTYPE_CCTV: return sizeof(struct cctvobj) / sizeof(u32);
|
||||
case OBJTYPE_AMMOCRATE: return sizeof(struct ammocrateobj) / sizeof(u32);
|
||||
case OBJTYPE_WEAPON: return sizeof(struct weaponobj) / sizeof(u32);
|
||||
case OBJTYPE_SINGLEMONITOR: return sizeof(struct singlemonitorobj) / sizeof(u32);
|
||||
case OBJTYPE_MULTIMONITOR: return sizeof(struct multimonitorobj) / sizeof(u32);
|
||||
case OBJTYPE_HANGINGMONITORS: return sizeof(struct hangingmonitorsobj) / sizeof(u32);
|
||||
case OBJTYPE_AUTOGUN: return sizeof(struct autogunobj) / sizeof(u32);
|
||||
case OBJTYPE_LINKGUNS: return sizeof(struct linkgunsobj) / sizeof(u32);
|
||||
case OBJTYPE_HAT: return sizeof(struct hatobj) / sizeof(u32);
|
||||
case OBJTYPE_GRENADEPROB: return sizeof(struct grenadeprobobj) / sizeof(u32);
|
||||
case OBJTYPE_LINKLIFTDOOR: return sizeof(struct linkliftdoorobj) / sizeof(u32);
|
||||
case OBJTYPE_SAFEITEM: return sizeof(struct safeitemobj) / sizeof(u32);
|
||||
case OBJTYPE_MULTIAMMOCRATE: return sizeof(struct multiammocrateobj) / sizeof(u32);
|
||||
case OBJTYPE_SHIELD: return sizeof(struct shieldobj) / sizeof(u32);
|
||||
case OBJTYPE_TAG: return sizeof(struct tag) / sizeof(u32);
|
||||
case OBJTYPE_RENAMEOBJ: return sizeof(struct textoverride) / sizeof(u32);
|
||||
case OBJTYPE_BEGINOBJECTIVE: return sizeof(struct objective) / sizeof(u32);
|
||||
case OBJTYPE_ENDOBJECTIVE: return 1;
|
||||
case OBJECTIVETYPE_DESTROYOBJ: return 2;
|
||||
case OBJECTIVETYPE_COMPFLAGS: return 2;
|
||||
case OBJECTIVETYPE_FAILFLAGS: return 2;
|
||||
case OBJECTIVETYPE_COLLECTOBJ: return 2;
|
||||
case OBJECTIVETYPE_THROWOBJ: return 2;
|
||||
case OBJECTIVETYPE_HOLOGRAPH: return sizeof(struct criteria_holograph) / sizeof(u32);
|
||||
case OBJECTIVETYPE_1F: return 1;
|
||||
case OBJECTIVETYPE_ENTERROOM: return sizeof(struct criteria_roomentered) / sizeof(u32);
|
||||
case OBJECTIVETYPE_THROWINROOM: return sizeof(struct criteria_throwinroom) / sizeof(u32);
|
||||
case OBJTYPE_22: return 1;
|
||||
case OBJTYPE_BRIEFING: return sizeof(struct briefingobj) / sizeof(u32);
|
||||
case OBJTYPE_PADLOCKEDDOOR: return sizeof(struct padlockeddoorobj) / sizeof(u32);
|
||||
case OBJTYPE_TRUCK: return sizeof(struct truckobj) / sizeof(u32);
|
||||
case OBJTYPE_HELI: return sizeof(struct heliobj) / sizeof(u32);
|
||||
case OBJTYPE_TANK: return 32;
|
||||
case OBJTYPE_CAMERAPRESET: return sizeof(struct camerapresetobj) / sizeof(u32);
|
||||
case OBJTYPE_LIFT: return sizeof(struct liftobj) / sizeof(u32);
|
||||
case OBJTYPE_CONDITIONALSCENERY: return sizeof(struct linksceneryobj) / sizeof(u32);
|
||||
case OBJTYPE_BLOCKEDPATH: return sizeof(struct blockedpathobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERBIKE: return sizeof(struct hoverbikeobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERPROP: return sizeof(struct hoverpropobj) / sizeof(u32);
|
||||
case OBJTYPE_FAN: return sizeof(struct fanobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERCAR: return sizeof(struct hovercarobj) / sizeof(u32);
|
||||
case OBJTYPE_CHOPPER: return sizeof(struct chopperobj) / sizeof(u32);
|
||||
case OBJTYPE_PADEFFECT: return sizeof(struct padeffectobj) / sizeof(u32);
|
||||
case OBJTYPE_MINE: return sizeof(struct weaponobj) / sizeof(u32);
|
||||
case OBJTYPE_ESCASTEP: return sizeof(struct escalatorobj) / sizeof(u32);
|
||||
case OBJTYPE_CHR: return sizeof(struct packedchr) / sizeof(u32);
|
||||
case OBJTYPE_DOOR: return sizeof(struct doorobj) / sizeof(u32);
|
||||
case OBJTYPE_DOORSCALE: return sizeof(struct doorscaleobj) / sizeof(u32);
|
||||
case OBJTYPE_BASIC: return sizeof(struct defaultobj) / sizeof(u32);
|
||||
case OBJTYPE_DEBRIS: return sizeof(struct debrisobj) / sizeof(u32);
|
||||
case OBJTYPE_GLASS: return sizeof(struct glassobj) / sizeof(u32);
|
||||
case OBJTYPE_TINTEDGLASS: return sizeof(struct tintedglassobj) / sizeof(u32);
|
||||
case OBJTYPE_SAFE: return sizeof(struct safeobj) / sizeof(u32);
|
||||
case OBJTYPE_GASBOTTLE: return sizeof(struct gasbottleobj) / sizeof(u32);
|
||||
case OBJTYPE_KEY: return sizeof(struct keyobj) / sizeof(u32);
|
||||
case OBJTYPE_ALARM: return sizeof(struct alarmobj) / sizeof(u32);
|
||||
case OBJTYPE_CCTV: return sizeof(struct cctvobj) / sizeof(u32);
|
||||
case OBJTYPE_AMMOCRATE: return sizeof(struct ammocrateobj) / sizeof(u32);
|
||||
case OBJTYPE_WEAPON: return sizeof(struct weaponobj) / sizeof(u32);
|
||||
case OBJTYPE_SINGLEMONITOR: return sizeof(struct singlemonitorobj) / sizeof(u32);
|
||||
case OBJTYPE_MULTIMONITOR: return sizeof(struct multimonitorobj) / sizeof(u32);
|
||||
case OBJTYPE_HANGINGMONITORS: return sizeof(struct hangingmonitorsobj) / sizeof(u32);
|
||||
case OBJTYPE_AUTOGUN: return sizeof(struct autogunobj) / sizeof(u32);
|
||||
case OBJTYPE_LINKGUNS: return sizeof(struct linkgunsobj) / sizeof(u32);
|
||||
case OBJTYPE_HAT: return sizeof(struct hatobj) / sizeof(u32);
|
||||
case OBJTYPE_GRENADEPROB: return sizeof(struct grenadeprobobj) / sizeof(u32);
|
||||
case OBJTYPE_LINKLIFTDOOR: return sizeof(struct linkliftdoorobj) / sizeof(u32);
|
||||
case OBJTYPE_SAFEITEM: return sizeof(struct safeitemobj) / sizeof(u32);
|
||||
case OBJTYPE_MULTIAMMOCRATE: return sizeof(struct multiammocrateobj) / sizeof(u32);
|
||||
case OBJTYPE_SHIELD: return sizeof(struct shieldobj) / sizeof(u32);
|
||||
case OBJTYPE_TAG: return sizeof(struct tag) / sizeof(u32);
|
||||
case OBJTYPE_RENAMEOBJ: return sizeof(struct textoverride) / sizeof(u32);
|
||||
case OBJTYPE_BEGINOBJECTIVE: return sizeof(struct objective) / sizeof(u32);
|
||||
case OBJTYPE_ENDOBJECTIVE: return 1;
|
||||
case OBJECTIVETYPE_DESTROYOBJ: return 2;
|
||||
case OBJECTIVETYPE_COMPFLAGS: return 2;
|
||||
case OBJECTIVETYPE_FAILFLAGS: return 2;
|
||||
case OBJECTIVETYPE_COLLECTOBJ: return 2;
|
||||
case OBJECTIVETYPE_THROWOBJ: return 2;
|
||||
case OBJECTIVETYPE_HOLOGRAPH: return sizeof(struct criteria_holograph) / sizeof(u32);
|
||||
case OBJECTIVETYPE_1F: return 1;
|
||||
case OBJECTIVETYPE_ENTERROOM: return sizeof(struct criteria_roomentered) / sizeof(u32);
|
||||
case OBJECTIVETYPE_THROWINROOM: return sizeof(struct criteria_throwinroom) / sizeof(u32);
|
||||
case OBJECTIVETYPE_COPYGOLDENEYE: return 1;
|
||||
case OBJTYPE_BRIEFING: return sizeof(struct briefingobj) / sizeof(u32);
|
||||
case OBJTYPE_PADLOCKEDDOOR: return sizeof(struct padlockeddoorobj) / sizeof(u32);
|
||||
case OBJTYPE_TRUCK: return sizeof(struct truckobj) / sizeof(u32);
|
||||
case OBJTYPE_HELI: return sizeof(struct heliobj) / sizeof(u32);
|
||||
case OBJTYPE_TANK: return 32;
|
||||
case OBJTYPE_CAMERAPRESET: return sizeof(struct camerapresetobj) / sizeof(u32);
|
||||
case OBJTYPE_LIFT: return sizeof(struct liftobj) / sizeof(u32);
|
||||
case OBJTYPE_CONDITIONALSCENERY: return sizeof(struct linksceneryobj) / sizeof(u32);
|
||||
case OBJTYPE_BLOCKEDPATH: return sizeof(struct blockedpathobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERBIKE: return sizeof(struct hoverbikeobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERPROP: return sizeof(struct hoverpropobj) / sizeof(u32);
|
||||
case OBJTYPE_FAN: return sizeof(struct fanobj) / sizeof(u32);
|
||||
case OBJTYPE_HOVERCAR: return sizeof(struct hovercarobj) / sizeof(u32);
|
||||
case OBJTYPE_CHOPPER: return sizeof(struct chopperobj) / sizeof(u32);
|
||||
case OBJTYPE_PADEFFECT: return sizeof(struct padeffectobj) / sizeof(u32);
|
||||
case OBJTYPE_MINE: return sizeof(struct weaponobj) / sizeof(u32);
|
||||
case OBJTYPE_ESCASTEP: return sizeof(struct escalatorobj) / sizeof(u32);
|
||||
}
|
||||
|
||||
#if VERSION < VERSION_NTSC_1_0
|
||||
|
@ -265,7 +265,7 @@ struct defaultobj *setup_get_obj_by_cmd_index(u32 cmdindex)
|
|||
case OBJECTIVETYPE_1F:
|
||||
case OBJECTIVETYPE_ENTERROOM:
|
||||
case OBJECTIVETYPE_THROWINROOM:
|
||||
case OBJTYPE_22:
|
||||
case OBJECTIVETYPE_COPYGOLDENEYE:
|
||||
case OBJTYPE_BRIEFING:
|
||||
case OBJTYPE_RENAMEOBJ:
|
||||
case OBJTYPE_PADLOCKEDDOOR:
|
||||
|
|
|
@ -646,7 +646,7 @@ Gfx *smoke_render(struct prop *prop, Gfx *gdl, bool xlupass)
|
|||
}
|
||||
}
|
||||
|
||||
if (func0f08e5a8(prop->rooms, &screenbox) > 0) {
|
||||
if (rooms_get_cumulative_screenbox(prop->rooms, &screenbox) > 0) {
|
||||
gdl = bg_scissor_within_viewport(gdl, screenbox.xmin, screenbox.ymin, screenbox.xmax, screenbox.ymax);
|
||||
} else {
|
||||
gdl = bg_scissor_to_viewport(gdl);
|
||||
|
|
|
@ -3013,7 +3013,7 @@
|
|||
#define OBJFLAG_XTOPADBOUNDS 0x00000020
|
||||
#define OBJFLAG_YTOPADBOUNDS 0x00000040
|
||||
#define OBJFLAG_ZTOPADBOUNDS 0x00000080
|
||||
#define OBJFLAG_CORE_GEO_INUSE 0x00000100 // G5 mines, Air Base brown door, AF1 grate and escape door, Defense shuttle, Ruins mines, MBR lift door. Editor suggests "Force Collisions" but this seems wrong
|
||||
#define OBJFLAG_CORE_GEO_INUSE 0x00000100 // G5 mines, Air Base brown door, AF1 grate and escape door, Defense shuttle, Ruins mines, MBR lift door. Editor suggests "Force Collisions" but this seems wrong
|
||||
#define OBJFLAG_ORTHOGONAL 0x00000200
|
||||
#define OBJFLAG_IGNOREFLOORCOLOUR 0x00000400
|
||||
#define OBJFLAG_PATHBLOCKER 0x00000800 // Glass and explodable scenery which may be blocking a path segment
|
||||
|
@ -3106,38 +3106,38 @@
|
|||
#define OBJFLAG2_WEAPON_HUGEEXP 0x80000000
|
||||
|
||||
// obj->flags3
|
||||
#define OBJFLAG3_PUSHABLE 0x00000001
|
||||
#define OBJFLAG3_GRABBABLE 0x00000002
|
||||
#define OBJFLAG3_DOOR_STICKY 0x00000004 // eg. Skedar Ruins
|
||||
#define OBJFLAG3_00000008 0x00000008 // Not used in scripts
|
||||
#define OBJFLAG3_FINDROOMSFAST 0x00000010 // Can use if obj never goes out of bounds or in overlapping rooms
|
||||
#define OBJFLAG3_AUTOCUTSCENESOUNDS 0x00000020 // For doors and objs - play default open/close noises
|
||||
#define OBJFLAG3_RTRACKED_YELLOW 0x00000040
|
||||
#define OBJFLAG3_CANHARDFREE 0x00000080 // Can free prop while on screen (MP weapons only)
|
||||
#define OBJFLAG3_HARDFREEING 0x00000100
|
||||
#define OBJFLAG3_00000200 0x00000200 // Not used in scripts
|
||||
#define OBJFLAG3_WALKTHROUGH 0x00000400
|
||||
#define OBJFLAG3_RTRACKED_BLUE 0x00000800
|
||||
#define OBJFLAG3_SHOWSHIELD 0x00001000 // Show shield effect around object (always)
|
||||
#define OBJFLAG3_HTMTERMINAL 0x00002000 // Terminal for Hacker Central scenario (HTM = Hack That Mac)
|
||||
#define OBJFLAG3_ISFETCHTARGET 0x00004000 // AI bot is fetching this obj
|
||||
#define OBJFLAG3_REACTTOSIGHT 0x00008000 // Turn sight blue or red when targeted with R
|
||||
#define OBJFLAG3_INTERACTABLE 0x00010000
|
||||
#define OBJFLAG3_SHIELDHIT 0x00020000 // Turns off when shield no longer visible
|
||||
#define OBJFLAG3_RENDERPOSTBG 0x00040000
|
||||
#define OBJFLAG3_DRAWONTOP 0x00080000
|
||||
#define OBJFLAG3_HOVERBEDSHIELD 0x00100000
|
||||
#define OBJFLAG3_INTERACTSHORTRANGE 0x00200000
|
||||
#define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead
|
||||
#define OBJFLAG3_LONGPUSHRANGE 0x00800000 // Not used in scripts
|
||||
#define OBJFLAG3_PUSHFREELY 0x01000000 // Not used in scripts
|
||||
#define OBJFLAG3_GEOCYL 0x02000000 // Use cylinder geometry rather than block
|
||||
#define OBJFLAG3_04000000 0x04000000 // Not used in scripts
|
||||
#define OBJFLAG3_08000000 0x08000000 // Not used in scripts
|
||||
#define OBJFLAG3_10000000 0x10000000 // Editor: "Keep Collisions After Fully Destroyed"
|
||||
#define OBJFLAG3_ONSHELF 0x20000000 // Obj is on a shelf - use bigger pickup range for Small Jo and Play as Elvis cheats and skip line of sight checks
|
||||
#define OBJFLAG3_INFRARED 0x40000000 // Obj is highlighted on IR scanner
|
||||
#define OBJFLAG3_80000000 0x80000000 // Not used in scripts
|
||||
#define OBJFLAG3_PUSHABLE 0x00000001
|
||||
#define OBJFLAG3_GRABBABLE 0x00000002
|
||||
#define OBJFLAG3_DOOR_STICKY 0x00000004 // eg. Skedar Ruins
|
||||
#define OBJFLAG3_00000008 0x00000008 // Not used in scripts
|
||||
#define OBJFLAG3_FINDROOMSFAST 0x00000010 // Can use if obj never goes out of bounds or in overlapping rooms
|
||||
#define OBJFLAG3_AUTOCUTSCENESOUNDS 0x00000020 // For doors and objs - play default open/close noises
|
||||
#define OBJFLAG3_RTRACKED_YELLOW 0x00000040
|
||||
#define OBJFLAG3_CANHARDFREE 0x00000080 // Can free prop while on screen (MP weapons only)
|
||||
#define OBJFLAG3_HARDFREEING 0x00000100
|
||||
#define OBJFLAG3_00000200 0x00000200 // Not used in scripts
|
||||
#define OBJFLAG3_WALKTHROUGH 0x00000400
|
||||
#define OBJFLAG3_RTRACKED_BLUE 0x00000800
|
||||
#define OBJFLAG3_SHOWSHIELD 0x00001000 // Show shield effect around object (always)
|
||||
#define OBJFLAG3_HTMTERMINAL 0x00002000 // Terminal for Hacker Central scenario (HTM = Hack That Mac)
|
||||
#define OBJFLAG3_ISFETCHTARGET 0x00004000 // AI bot is fetching this obj
|
||||
#define OBJFLAG3_REACTTOSIGHT 0x00008000 // Turn sight blue or red when targeted with R
|
||||
#define OBJFLAG3_INTERACTABLE 0x00010000
|
||||
#define OBJFLAG3_SHIELDHIT 0x00020000 // Turns off when shield no longer visible
|
||||
#define OBJFLAG3_RENDERPOSTBG 0x00040000
|
||||
#define OBJFLAG3_DRAWONTOP 0x00080000
|
||||
#define OBJFLAG3_HOVERBEDSHIELD 0x00100000
|
||||
#define OBJFLAG3_INTERACTSHORTRANGE 0x00200000
|
||||
#define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead
|
||||
#define OBJFLAG3_LONGPUSHRANGE 0x00800000 // Not used in scripts
|
||||
#define OBJFLAG3_PUSHFREELY 0x01000000 // Not used in scripts
|
||||
#define OBJFLAG3_GEOCYL 0x02000000 // Use cylinder geometry rather than block
|
||||
#define OBJFLAG3_04000000 0x04000000 // Not used in scripts
|
||||
#define OBJFLAG3_08000000 0x08000000 // Not used in scripts
|
||||
#define OBJFLAG3_KEEPGEOWHENDESTROYED 0x10000000
|
||||
#define OBJFLAG3_ONSHELF 0x20000000 // Obj is on a shelf - use bigger pickup range for Small Jo and Play as Elvis cheats and skip line of sight checks
|
||||
#define OBJFLAG3_INFRARED 0x40000000 // Obj is highlighted on IR scanner
|
||||
#define OBJFLAG3_80000000 0x80000000 // Not used in scripts
|
||||
|
||||
// obj->hidden
|
||||
#define OBJHFLAG_LIFTDOOR 0x00000001
|
||||
|
@ -3178,65 +3178,65 @@
|
|||
#define OBJH2FLAG_DESTROYED 0x40
|
||||
#define OBJH2FLAG_DEFORMED 0x80
|
||||
|
||||
#define OBJTYPE_DOOR 0x01
|
||||
#define OBJTYPE_DOORSCALE 0x02
|
||||
#define OBJTYPE_BASIC 0x03
|
||||
#define OBJTYPE_KEY 0x04
|
||||
#define OBJTYPE_ALARM 0x05
|
||||
#define OBJTYPE_CCTV 0x06
|
||||
#define OBJTYPE_AMMOCRATE 0x07
|
||||
#define OBJTYPE_WEAPON 0x08
|
||||
#define OBJTYPE_CHR 0x09
|
||||
#define OBJTYPE_SINGLEMONITOR 0x0a
|
||||
#define OBJTYPE_MULTIMONITOR 0x0b
|
||||
#define OBJTYPE_HANGINGMONITORS 0x0c
|
||||
#define OBJTYPE_AUTOGUN 0x0d
|
||||
#define OBJTYPE_LINKGUNS 0x0e
|
||||
#define OBJTYPE_DEBRIS 0x0f
|
||||
#define OBJTYPE_10 0x10
|
||||
#define OBJTYPE_HAT 0x11
|
||||
#define OBJTYPE_GRENADEPROB 0x12
|
||||
#define OBJTYPE_LINKLIFTDOOR 0x13
|
||||
#define OBJTYPE_MULTIAMMOCRATE 0x14
|
||||
#define OBJTYPE_SHIELD 0x15
|
||||
#define OBJTYPE_TAG 0x16
|
||||
#define OBJTYPE_BEGINOBJECTIVE 0x17
|
||||
#define OBJTYPE_ENDOBJECTIVE 0x18
|
||||
#define OBJECTIVETYPE_DESTROYOBJ 0x19
|
||||
#define OBJECTIVETYPE_COMPFLAGS 0x1a
|
||||
#define OBJECTIVETYPE_FAILFLAGS 0x1b
|
||||
#define OBJECTIVETYPE_COLLECTOBJ 0x1c
|
||||
#define OBJECTIVETYPE_THROWOBJ 0x1d
|
||||
#define OBJECTIVETYPE_HOLOGRAPH 0x1e
|
||||
#define OBJECTIVETYPE_1F 0x1f
|
||||
#define OBJECTIVETYPE_ENTERROOM 0x20
|
||||
#define OBJECTIVETYPE_THROWINROOM 0x21
|
||||
#define OBJTYPE_22 0x22
|
||||
#define OBJTYPE_BRIEFING 0x23
|
||||
#define OBJTYPE_GASBOTTLE 0x24
|
||||
#define OBJTYPE_RENAMEOBJ 0x25
|
||||
#define OBJTYPE_PADLOCKEDDOOR 0x26
|
||||
#define OBJTYPE_TRUCK 0x27
|
||||
#define OBJTYPE_HELI 0x28
|
||||
#define OBJTYPE_29 0x29
|
||||
#define OBJTYPE_GLASS 0x2a
|
||||
#define OBJTYPE_SAFE 0x2b
|
||||
#define OBJTYPE_SAFEITEM 0x2c
|
||||
#define OBJTYPE_TANK 0x2d
|
||||
#define OBJTYPE_CAMERAPRESET 0x2e
|
||||
#define OBJTYPE_TINTEDGLASS 0x2f
|
||||
#define OBJTYPE_LIFT 0x30
|
||||
#define OBJTYPE_CONDITIONALSCENERY 0x31
|
||||
#define OBJTYPE_BLOCKEDPATH 0x32
|
||||
#define OBJTYPE_HOVERBIKE 0x33
|
||||
#define OBJTYPE_END 0x34
|
||||
#define OBJTYPE_HOVERPROP 0x35 // Hovercrates and hoverbeds
|
||||
#define OBJTYPE_FAN 0x36
|
||||
#define OBJTYPE_HOVERCAR 0x37 // Datadyne cars, Chicago taxi and limo, and hoverbots
|
||||
#define OBJTYPE_PADEFFECT 0x38
|
||||
#define OBJTYPE_CHOPPER 0x39 // Extraction hovercopter and A51 interceptors
|
||||
#define OBJTYPE_MINE 0x3a
|
||||
#define OBJTYPE_ESCASTEP 0x3b
|
||||
#define OBJTYPE_DOOR 0x01
|
||||
#define OBJTYPE_DOORSCALE 0x02
|
||||
#define OBJTYPE_BASIC 0x03
|
||||
#define OBJTYPE_KEY 0x04
|
||||
#define OBJTYPE_ALARM 0x05
|
||||
#define OBJTYPE_CCTV 0x06
|
||||
#define OBJTYPE_AMMOCRATE 0x07
|
||||
#define OBJTYPE_WEAPON 0x08
|
||||
#define OBJTYPE_CHR 0x09
|
||||
#define OBJTYPE_SINGLEMONITOR 0x0a
|
||||
#define OBJTYPE_MULTIMONITOR 0x0b
|
||||
#define OBJTYPE_HANGINGMONITORS 0x0c
|
||||
#define OBJTYPE_AUTOGUN 0x0d
|
||||
#define OBJTYPE_LINKGUNS 0x0e
|
||||
#define OBJTYPE_DEBRIS 0x0f
|
||||
#define OBJTYPE_10 0x10
|
||||
#define OBJTYPE_HAT 0x11
|
||||
#define OBJTYPE_GRENADEPROB 0x12
|
||||
#define OBJTYPE_LINKLIFTDOOR 0x13
|
||||
#define OBJTYPE_MULTIAMMOCRATE 0x14
|
||||
#define OBJTYPE_SHIELD 0x15
|
||||
#define OBJTYPE_TAG 0x16
|
||||
#define OBJTYPE_BEGINOBJECTIVE 0x17
|
||||
#define OBJTYPE_ENDOBJECTIVE 0x18
|
||||
#define OBJECTIVETYPE_DESTROYOBJ 0x19
|
||||
#define OBJECTIVETYPE_COMPFLAGS 0x1a
|
||||
#define OBJECTIVETYPE_FAILFLAGS 0x1b
|
||||
#define OBJECTIVETYPE_COLLECTOBJ 0x1c
|
||||
#define OBJECTIVETYPE_THROWOBJ 0x1d
|
||||
#define OBJECTIVETYPE_HOLOGRAPH 0x1e
|
||||
#define OBJECTIVETYPE_1F 0x1f
|
||||
#define OBJECTIVETYPE_ENTERROOM 0x20
|
||||
#define OBJECTIVETYPE_THROWINROOM 0x21
|
||||
#define OBJECTIVETYPE_COPYGOLDENEYE 0x22
|
||||
#define OBJTYPE_BRIEFING 0x23
|
||||
#define OBJTYPE_GASBOTTLE 0x24
|
||||
#define OBJTYPE_RENAMEOBJ 0x25
|
||||
#define OBJTYPE_PADLOCKEDDOOR 0x26
|
||||
#define OBJTYPE_TRUCK 0x27
|
||||
#define OBJTYPE_HELI 0x28
|
||||
#define OBJTYPE_29 0x29
|
||||
#define OBJTYPE_GLASS 0x2a
|
||||
#define OBJTYPE_SAFE 0x2b
|
||||
#define OBJTYPE_SAFEITEM 0x2c
|
||||
#define OBJTYPE_TANK 0x2d
|
||||
#define OBJTYPE_CAMERAPRESET 0x2e
|
||||
#define OBJTYPE_TINTEDGLASS 0x2f
|
||||
#define OBJTYPE_LIFT 0x30
|
||||
#define OBJTYPE_CONDITIONALSCENERY 0x31
|
||||
#define OBJTYPE_BLOCKEDPATH 0x32
|
||||
#define OBJTYPE_HOVERBIKE 0x33
|
||||
#define OBJTYPE_END 0x34
|
||||
#define OBJTYPE_HOVERPROP 0x35 // Hovercrates and hoverbeds
|
||||
#define OBJTYPE_FAN 0x36
|
||||
#define OBJTYPE_HOVERCAR 0x37 // Datadyne cars, Chicago taxi and limo, and hoverbots
|
||||
#define OBJTYPE_PADEFFECT 0x38
|
||||
#define OBJTYPE_CHOPPER 0x39 // Extraction hovercopter and A51 interceptors
|
||||
#define OBJTYPE_MINE 0x3a
|
||||
#define OBJTYPE_ESCASTEP 0x3b
|
||||
|
||||
#define OPERATOR_LESS_THAN 0
|
||||
#define OPERATOR_GREATER_THAN 1
|
||||
|
|
|
@ -27,7 +27,7 @@ bool bg_room_is_on_player_standby(s32 room, u32 aibotindex);
|
|||
void bg_garbage_collect_rooms(s32 bytesneeded, bool desparate);
|
||||
bool bg_test_line_intersects_int_bbox(struct coord *arg0, struct coord *arg1, s32 *arg2, s32 *arg3);
|
||||
bool bg_test_line_intersects_bbox(struct coord *arg0, struct coord *arg1, struct coord *arg2, struct coord *arg3);
|
||||
bool bg_test_hit_on_obj(struct coord *arg0, struct coord *arg1, struct coord *arg2, Gfx *gdl, Gfx *gdl2, Vtx *vertices, struct hitthing *hitthing);
|
||||
bool bg_find_hitthing_by_gfx_tris(struct coord *arg0, struct coord *arg1, struct coord *arg2, Gfx *gdl, Gfx *gdl2, Vtx *vertices, struct hitthing *hitthing);
|
||||
bool bg_test_hit_on_chr(struct model *model, struct coord *arg1, struct coord *arg2, struct coord *arg3, Gfx *arg4, Gfx *arg5, Vtx *vertices, f32 *arg7, struct hitthing *hitthing);
|
||||
bool bg_test_hit_in_room(struct coord *frompos, struct coord *topos, s32 roomnum, struct hitthing *hitthing);
|
||||
bool bg_room_is_loaded(s32 room);
|
||||
|
|
|
@ -43,6 +43,6 @@ f32 cam_get_persp_aspect(void);
|
|||
void cam0f0b5838(void);
|
||||
bool cam0f0b5b9c(struct coord *arg0, f32 arg1);
|
||||
bool cam_is_pos_in_screen_box(struct coord *pos, f32 arg1, struct drawslot *drawslot);
|
||||
bool cam_is_pos_in_fov_and_visible_room(RoomNum *rooms, struct coord *pos, f32 arg2);
|
||||
bool cam_is_pos_in_fov_and_visible_room(RoomNum *rooms, struct coord *pos, f32 modelscale);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,10 +33,10 @@ f32 obj_get_rotated_local_y_min_by_mtx3(struct modelrodata_bbox *bbox, f32 realr
|
|||
f32 obj_get_rotated_local_y_max_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
|
||||
f32 obj_get_rotated_local_z_min_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
|
||||
f32 obj_get_rotated_local_z_max_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
|
||||
bool func0f0679ac(struct model *model, f32 *max, f32 *min, f32 arg3[2], f32 arg4[2]);
|
||||
bool obj_is_any_node_in_range(struct model *model, f32 *max, f32 *min, f32 arg3[2], f32 arg4[2]);
|
||||
void model_get_screen_coords3(struct model *model, f32 *xmax, f32 *xmin, f32 *ymax, f32 *ymin);
|
||||
bool model_get_screen_coords(struct model *model, f32 *x2, f32 *x1, f32 *y2, f32 *y1);
|
||||
void func0f06803c(struct coord *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4);
|
||||
void obj_get_screeninfo(struct coord *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4);
|
||||
struct defaultobj *obj_find_by_pad_num(s32 padnum);
|
||||
void projectiles_unref_owner(struct prop *owner);
|
||||
void func0f0685e4(struct prop *prop);
|
||||
|
@ -46,27 +46,27 @@ s32 obj_get_destroyed_level(struct defaultobj *obj);
|
|||
struct modelrodata_bbox *modeldef_find_bbox_rodata(struct modeldef *modeldef);
|
||||
struct modelrodata_bbox *model_find_bbox_rodata(struct model *model);
|
||||
struct modelrodata_bbox *obj_find_bbox_rodata(struct defaultobj *obj);
|
||||
s32 func0f068fc8(struct prop *prop, bool arg1);
|
||||
s32 obj_get_brightness(struct prop *prop, s32 type);
|
||||
void prop_calculate_shade_colour(struct prop *prop, u8 *nextcol, u16 floorcol);
|
||||
void colour_tween(u8 *col, u8 *nextcol);
|
||||
void obj_merge_colour_fracs(s32 *colour, s32 shademode, f32 fracs[4]);
|
||||
void obj_onmoved(struct defaultobj *obj, bool update_geometry, bool update_rooms);
|
||||
struct prop *obj_init_with_modeldef(struct defaultobj *obj, struct modeldef *modeldef);
|
||||
struct prop *obj_init_with_auto_model(struct defaultobj *obj);
|
||||
void func0f06a580(struct defaultobj *obj, struct coord *pos, Mtxf *matrix, RoomNum *rooms);
|
||||
void func0f06a730(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
|
||||
void func0f06ab60(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
|
||||
void obj_place(struct defaultobj *obj, struct coord *pos, Mtxf *rotmtx, RoomNum *rooms);
|
||||
void obj_place_3d(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
|
||||
void obj_place_2d(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
|
||||
void obj_free_projectile(struct defaultobj *obj);
|
||||
void obj_free_embedment_or_projectile(struct prop *prop);
|
||||
void obj_free(struct defaultobj *obj, bool freeprop, bool canregen);
|
||||
void obj_free_permanently(struct defaultobj *obj, bool freeprop);
|
||||
bool func0f06b39c(struct coord *pos, struct coord *dir, struct coord *aimpos, f32 arg3);
|
||||
bool func0f06bea0(struct model *model, struct modelnode *arg1, struct modelnode *arg2, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10);
|
||||
bool pos_is_facing_pos(struct coord *pos, struct coord *dir, struct coord *aimpos, f32 arg3);
|
||||
bool projectile_0f06bea0(struct model *model, struct modelnode *arg1, struct modelnode *arg2, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10);
|
||||
void apply_speed(f32 *distdone, f32 maxdist, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
|
||||
void apply_rotation(f32 *angle, f32 maxrot, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
|
||||
void func0f07063c(struct prop *prop, bool fulltick);
|
||||
void obj_child_tick_player(struct prop *prop, bool fulltick);
|
||||
void obj_drop_recursively(struct prop *prop, bool arg1);
|
||||
void func0f0706f8(struct prop *prop, bool fulltick);
|
||||
void obj_child_tick_player_offscreen(struct prop *prop, bool fulltick);
|
||||
void lift_activate(struct prop *prop, u8 liftnum);
|
||||
struct prop *lift_find_by_pad(s16 padnum);
|
||||
f32 lift_get_y(struct liftobj *lift);
|
||||
|
@ -102,17 +102,17 @@ Gfx *obj_render(struct prop *prop, Gfx *gdl, bool xlupass);
|
|||
void obj_set_dropped(struct prop *prop, u32 droptype);
|
||||
void obj_apply_momentum(struct defaultobj *obj, struct coord *speed, f32 rotation, bool addspeed, bool addrotation);
|
||||
void piracy_restore(void);
|
||||
void func0f082e84(struct defaultobj *obj, struct coord *pos, struct coord *dir, struct coord *tween, bool addrotation);
|
||||
void obj_push(struct defaultobj *obj, struct coord *pos, struct coord *dir, struct coord *tween, bool addrotation);
|
||||
void obj_detach(struct prop *prop);
|
||||
bool obj_drop(struct prop *prop, bool lazy);
|
||||
bool func0f084594(struct model *model, struct modelnode *node, struct coord *arg2, struct coord *arg3, struct hitthing *arg4, s32 *arg5, struct modelnode **arg6);
|
||||
bool obj_find_hitthing_by_bboxrodata_mtx(struct model *model, struct modelnode *node, struct coord *arg2, struct coord *arg3, struct hitthing *arg4, s32 *arg5, struct modelnode **arg6);
|
||||
void glass_destroy(struct defaultobj *obj);
|
||||
void door_destroy_glass(struct doorobj *door);
|
||||
void func0f085050(struct prop *prop, f32 damage, struct coord *pos, s32 arg3, s32 playernum);
|
||||
bool func0f085194(struct defaultobj *obj);
|
||||
void obj_take_gunfire(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
|
||||
void obj_damage_by_explosion(struct prop *prop, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
|
||||
bool obj_defaults_to_bounceable_invincible_pickupable(struct defaultobj *obj);
|
||||
void obj_damage_by_gunfire(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
|
||||
void obj_damage(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
|
||||
void func0f0859a0(struct prop *prop, struct shotdata *shotdata);
|
||||
void obj_attachment_test_hit(struct prop *prop, struct shotdata *shotdata);
|
||||
void obj_test_hit(struct prop *prop, struct shotdata *shotdata);
|
||||
void obj_hit(struct shotdata *shotdata, struct hit *hit);
|
||||
bool obj_is_healthy(struct defaultobj *obj);
|
||||
|
@ -129,7 +129,7 @@ s32 weapon_get_pickup_ammo_qty(struct weaponobj *weapon);
|
|||
void current_player_queue_pickup_weapon_hudmsg(u32 weaponnum, bool dual);
|
||||
s32 prop_pickup_by_player(struct prop *prop, bool showhudmsg);
|
||||
s32 obj_test_for_pickup(struct prop *prop);
|
||||
bool func0f0899dc(struct prop *prop, struct coord *arg1, f32 *xrange, f32 *yrange);
|
||||
bool prop_get_screen_coords(struct prop *prop, struct coord *arg1, f32 xrange[2], f32 yrange[2]);
|
||||
void model_free_vtxstores(s32 vtxstoretype, struct model *model);
|
||||
void hat_assign_to_chr(struct hatobj *hat, struct chrdata *chr);
|
||||
struct prop *hat_create_for_chr(struct chrdata *chr, s32 modelnum, u32 flags);
|
||||
|
@ -139,7 +139,7 @@ void coord_trigger_proxies(struct coord *pos, bool arg1);
|
|||
void weapon_set_dual(struct weaponobj *weapon1, struct weaponobj *weapon2);
|
||||
struct prop *weapon_init_with_modeldef(struct weaponobj *weapon, struct modeldef *modeldef);
|
||||
bool chr_equip_weapon(struct weaponobj *weapon, struct chrdata *chr);
|
||||
void func0f08b25c(struct weaponobj *weapon, struct chrdata *chr);
|
||||
void weapon_assign_to_chr(struct weaponobj *weapon, struct chrdata *chr);
|
||||
struct autogunobj *laptop_deploy(s32 modelnum, struct gset *gset, struct chrdata *chr);
|
||||
struct weaponobj *weapon_create_projectile_from_gset(s32 modelnum, struct gset *gset, struct chrdata *chr);
|
||||
struct weaponobj *weapon_create_projectile_from_weapon_num(s32 modelnum, s32 weaponnum, struct chrdata *chr);
|
||||
|
@ -158,9 +158,9 @@ struct prop *door_init(struct doorobj *door, struct coord *pos, Mtxf *mtx, RoomN
|
|||
void door_finish_close(struct doorobj *door);
|
||||
void door_set_mode(struct doorobj *door, s32 newmode);
|
||||
void doors_request_mode(struct doorobj *door, s32 newmode);
|
||||
s32 func0f08e5a8(RoomNum *rooms, struct screenbox *box);
|
||||
s32 rooms_get_cumulative_screenbox(RoomNum *rooms, struct screenbox *box);
|
||||
f32 obj_calculate_fade_dist_opacity_frac(struct prop *prop, f32 modelscale);
|
||||
bool func0f08e8ac(struct prop *prop, struct coord *pos, f32 arg2, bool arg3);
|
||||
bool pos_is_onscreen(struct prop *prop, struct coord *pos, f32 modelscale, bool arg3);
|
||||
bool pos_is_in_draw_distance(struct coord *arg);
|
||||
bool door_test_for_interact(struct prop *prop);
|
||||
void doors_activate(struct prop *prop, bool allowliftclose);
|
||||
|
|
|
@ -17,7 +17,7 @@ void cd_get_obstacle_normal(struct coord *normal);
|
|||
u32 cd_get_geo_flags(void);
|
||||
void cd_set_saved_pos(struct coord *pos1, struct coord *pos2);
|
||||
bool cd_get_saved_pos(struct coord *arg0, struct coord *arg1);
|
||||
bool cd_000266a4(f32 x, f32 z, struct geo *tile);
|
||||
bool cd_is_2d_point_in_geo(f32 x, f32 z, struct geo *tile);
|
||||
void cd_get_props_on_platform(struct prop *platform, s16 *propnums, s32 len);
|
||||
s32 cd_000274e0_block(struct geoblock *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collision *collision);
|
||||
bool cd_000276c8_cyl(struct geocyl *tile, f32 x, f32 z, f32 width, struct prop *prop, struct collision *collision);
|
||||
|
|
|
@ -738,7 +738,7 @@ bool cd_is2d_point_in_flt_tile(struct geotilef *tile, f32 x, f32 z)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool cd_is2d_point_in_block(struct geoblock *tile, f32 x, f32 z)
|
||||
bool cd_is_2d_point_in_block(struct geoblock *tile, f32 x, f32 z)
|
||||
{
|
||||
s32 result = -1;
|
||||
s32 numvertices = tile->header.numvertices;
|
||||
|
@ -772,7 +772,7 @@ bool cd_is2d_point_in_block(struct geoblock *tile, f32 x, f32 z)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool cd_is2d_point_in_cyl(struct geocyl *cyl, f32 x, f32 z)
|
||||
bool cd_is_2d_point_in_cyl(struct geocyl *cyl, f32 x, f32 z)
|
||||
{
|
||||
f32 xdiff = x - cyl->x;
|
||||
f32 zdiff = z - cyl->z;
|
||||
|
@ -780,18 +780,18 @@ bool cd_is2d_point_in_cyl(struct geocyl *cyl, f32 x, f32 z)
|
|||
return xdiff * xdiff + zdiff * zdiff <= cyl->radius * cyl->radius;
|
||||
}
|
||||
|
||||
bool cd_000266a4(f32 x, f32 z, struct geo *geo)
|
||||
bool cd_is_2d_point_in_geo(f32 x, f32 z, struct geo *geo)
|
||||
{
|
||||
if (geo == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (geo->type == GEOTYPE_BLOCK) {
|
||||
return cd_is2d_point_in_block((struct geoblock *) geo, x, z);
|
||||
return cd_is_2d_point_in_block((struct geoblock *) geo, x, z);
|
||||
}
|
||||
|
||||
if (geo->type == GEOTYPE_CYL) {
|
||||
return cd_is2d_point_in_cyl((struct geocyl *) geo, x, z);
|
||||
return cd_is_2d_point_in_cyl((struct geocyl *) geo, x, z);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -1099,7 +1099,7 @@ s32 cd_000274e0_block(struct geoblock *tile, f32 x, f32 z, f32 radius, struct pr
|
|||
{
|
||||
bool result = false;
|
||||
|
||||
if (cd_is2d_point_in_block(tile, x, z)) {
|
||||
if (cd_is_2d_point_in_block(tile, x, z)) {
|
||||
if (collision) {
|
||||
collision->geo = &tile->header;
|
||||
collision->vertexindex = 0;
|
||||
|
@ -3701,7 +3701,7 @@ bool cd_block_excludes_block_laterally(struct geoblock *block1, struct geoblock
|
|||
diff2 = block1->vertices[i][0] - (f64)block1->vertices[next][0];
|
||||
|
||||
if (diff1 == zero && diff2 == zero) {
|
||||
if (cd_is2d_point_in_block(block2, block1->vertices[i][0], block1->vertices[i][1])) {
|
||||
if (cd_is_2d_point_in_block(block2, block1->vertices[i][0], block1->vertices[i][1])) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
|
@ -3766,13 +3766,13 @@ s32 cd_test_block_overlaps_geolist(u8 *start, u8 *end, struct geoblock *block, u
|
|||
s32 i;
|
||||
|
||||
for (i = 0; i < block->header.numvertices; i++) {
|
||||
if (cd_is2d_point_in_block(thisblock, block->vertices[i][0], block->vertices[i][1])) {
|
||||
if (cd_is_2d_point_in_block(thisblock, block->vertices[i][0], block->vertices[i][1])) {
|
||||
return CDRESULT_COLLISION;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < thisblock->header.numvertices; i++) {
|
||||
if (cd_is2d_point_in_block(block, thisblock->vertices[i][0], thisblock->vertices[i][1])) {
|
||||
if (cd_is_2d_point_in_block(block, thisblock->vertices[i][0], thisblock->vertices[i][1])) {
|
||||
return CDRESULT_COLLISION;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -233,9 +233,9 @@ u32 props[] = {
|
|||
tag(0x1f, 1)
|
||||
stdobject(0x0100, MODEL_CHRBRIEFCASE, PAD_PETE_009C, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_BOUNCEIFSHOT | OBJFLAG_01000000, OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_INVISIBLE, 0, 1000)
|
||||
tag(0x0a, 1)
|
||||
hovercar(0x0100, MODEL_TAXICAB, PAD_PETE_00A3, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_HOVERCAR_INIT, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_10000000, 700, 0x040c)
|
||||
hovercar(0x0100, MODEL_TAXICAB, PAD_PETE_00A3, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_HOVERCAR_INIT, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_KEEPGEOWHENDESTROYED, 700, 0x040c)
|
||||
tag(0x0c, 1)
|
||||
hovercar(0x00cc, MODEL_LIMO, PAD_PETE_00A4, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_HOVERCAR_INIT, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_10000000, 700, 0x040d)
|
||||
hovercar(0x00cc, MODEL_LIMO, PAD_PETE_00A4, OBJFLAG_00000008 | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_HOVERCAR_INIT, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_KEEPGEOWHENDESTROYED, 700, 0x040d)
|
||||
tag(0x21, 1)
|
||||
stdobject(0x0100, MODEL_WIREFENCE, -1, OBJFLAG_FALL | OBJFLAG_CORE_GEO_INUSE | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, OBJFLAG2_SHOOTTHROUGH, 0, 1000)
|
||||
tag(0x08, 1)
|
||||
|
|
Loading…
Reference in New Issue