Commit graph

265 commits

Author SHA1 Message Date
Kp 07200620a1 Simplify test for weapon_info::homing_flag 2017-01-29 20:57:40 +00:00
Chris Taylor 30b5ef7c73 Create robot_create function and use it 4x
Contains 2 calls - to obj_create and init_ai_object. For safety reasons and tidiness compared to using obj_create directly. The call to init_ai_object in recreate_thief was already redundant.
2017-01-22 17:56:50 +08:00
Chris Taylor f2f6af5bf1 Always set hide_segment in init_ai_object
Fixes bug where in the editor, you insert a robot with normal behaviour then play the level - it fails the check on the hide_segment index in init_ai_objects(). This is because hide_segment was written as the poisoned value of 0xfdfd if the behaviour of the robot is AIB_NORMAL - because hide_segment wasn't initialised. Therefore, always setting hide_segment to suppress this exception (it's an inexpensive operation seldom called).
2017-01-21 13:47:27 +08:00
zico 03f5cbf3a4 Fixed issue in frame_animation_angle(): Due to deltaang.*a being usually small values and frametime getting smaller with higher FPS, the usual use of fixmul will have scaled_delta_angle result in 0 way too often and long, making the robot animation run circles around itself. So multiply deltaang by DELTA_ANG_SCALE when passed to fixmul. 2016-12-28 15:26:33 +01:00
Kp 83043ebd72 Pass player_info to compute_vis_and_vec 2016-12-10 17:51:10 +00:00
Kp e669e71dda Pass player_info to ai_fire_laser_at_player 2016-12-10 17:51:10 +00:00
Kp c60d93326c Propagate constant third parameter of create_n_segment_path_to_door 2016-12-05 00:26:08 +00:00
Kp d8a1428f13 Pass segidx_t to init_ai_object 2016-12-05 00:26:08 +00:00
Kp e95db4c269 Fold move_away_from_player switch cases 2016-10-29 23:16:17 +00:00
Kp 33bba1fa61 Map boss-gated robots across players 2016-10-29 23:16:16 +00:00
Kp 57196e8f9f Look up robot type in multi_send_boss_create_robot 2016-10-29 23:16:16 +00:00
Kp c45e441ecd Move map_objnum... into multi_send_boss_create_robot
Whenever a robot is sent to peers, it needs to be added to the local
mapping also.  Move the one use so far into multi_send_boss_create_robot
to simplify maintenance.
2016-10-29 23:16:16 +00:00
Kp c4cfe54010 Return literal object_none on object_none error path
gcc generates better code for:

	if (variable == magic_constant)
		return magic_constant;

than it does for:

	if (variable == magic_constant)
	    return variable;

even though the two have the same result.  Switch to the form which
generates slightly better code.
2016-10-29 23:16:15 +00:00
Kp 65b649bc75 Pass player_info to ai_do_actual_firing_stuff 2016-10-28 03:39:41 +00:00
Kp ca8fa9c3b6 Pass player_info to ai_move_relative_to_player 2016-10-28 03:39:41 +00:00
Kp 8341c88300 Move move_towards_vector division into helper
Mako88 reports that 2a19da88d4 changed
robot movement.  That commit reordered the operations in a way that
tends to truncate small values prematurely.  Restore the original order
of operations.

Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/247>
Fixes: 2a19da88d4 ("Pass object_base &to move_towards_vector")
2016-10-20 02:11:39 +00:00
Kp e4e74fe09c Pass vcsegptridx to pae_aux 2016-10-15 21:17:02 +00:00
Kp deeb7def6e Reuse zeroed *_rw structure during save 2016-10-13 03:14:11 +00:00
Kp 5114b8f8b6 Fix object corruption loading save game
Saved games dump robot ai_local state for all objects, regardless of
whether the object is a robot.  Loading a game restored all ai_local
values, regardless of whether the object was a robot on restore.  This
caused memory corruption in objects that were not robots when the
`ctype.`_T_ for that object was large enough to overlap
`ctype.ai_info.ail`.

Fix this by loading the ai_local into a junk buffer when the object is
not a robot.  It would be better to skip over the bogus ai_local
entirely, but the structure of ai_local_read_swap makes that difficult.
Use the easy fix for now.
2016-10-08 23:24:21 +00:00
Kp 815a26f32d Expand and cache various uses of get_local_plrobj() 2016-10-02 00:34:48 +00:00
Kp 6c7e64d871 Fold ai_do_actual_firing_stuff calls to ready_to_fire_weapon1 2016-10-02 00:34:48 +00:00
Kp 67e10d532b Pass player powerup_flags to init_ai_frame 2016-10-02 00:34:48 +00:00
Kp 13f751364d Pass player powerup_flags to make_nearby_robot_snipe 2016-10-02 00:34:48 +00:00
Kp dc7c718b66 Pass player powerup_flags to create_bfs_list 2016-10-02 00:34:47 +00:00
Kp e9eaf53c8a Pass player powerup_flags to ai_door_is_openable 2016-10-02 00:34:42 +00:00
Kp 89cec10270 Pass player powerup_flags to compute_vis_and_vec 2016-10-02 00:34:42 +00:00
Kp 5e30489943 Pass player powerup_flags to do_firing_stuff 2016-10-02 00:34:42 +00:00
Kp cae992db5b Factor out move_around_player multiplications 2016-10-02 00:34:42 +00:00
Kp c029d47825 Pass player powerup_flags to move_around_player 2016-10-02 00:34:41 +00:00
Kp bb65d3ce97 Pass player powerup_flags to ai_fire_laser_at_player 2016-10-02 00:34:41 +00:00
Kp 8cfa1508b6 Pass player powerup_flags to escort_set_goal_object 2016-10-02 00:34:41 +00:00
Kp ce65735c04 Expand get_local_player_flags
It was a convenient transition macro, but its presence was always
intended to be temporary.  Expand it to ease the conversion of usage
sites that already have access to local player data through a local
variable.
2016-10-02 00:34:40 +00:00
Kp 194d258e59 Condense buddy key check 2016-10-02 00:34:39 +00:00
Kp 6a3ded191f Move EDITOR to dxxsconf.h; rename to DXX_USE_EDITOR
Rename symbol EDITOR to DXX_USE_EDITOR to show that it is a DXX
symbol, not one inherited from a library.  Move it to dxxsconf.h to
shorten the command line.

This is a mostly automated transform, but the changes to SConstruct were
manual.

git grep -wl EDITOR -- '*.h' '*.cpp' | xargs sed -i -e 's/^\s*#ifdef \(EDITOR\)\>/#if DXX_USE_\1/' -e 's/\s*#\(el\)\?if \(.*\)defined(\(EDITOR\))/#\1if \2DXX_USE_\3/' -e 's/^\s*#ifndef \(EDITOR\)\>/#if !DXX_USE_\1/'
2016-09-11 18:49:16 +00:00
Kp 00ebdcec4a Cache Segment subscript operation in materialization handling 2016-09-04 00:02:50 +00:00
Kp f8568d1d5f Fold proximity mine calls to multi_send_robot_fire 2016-08-25 23:31:37 +00:00
Kp 0b781e021d Use ={} to clear robot velocity 2016-08-25 23:31:37 +00:00
Kp 35928f942c Unify robot-next-gun logic
Old code:

if (condition) {
	x;
	y;
} else {
	y;
}

Change it to be:

if (condition) {
	x;
}
y;
2016-08-25 23:31:37 +00:00
Kp ee1003f29f Move conditionally compiled code into namespace dsx 2016-08-25 04:05:32 +00:00
Kp f671e6781d Narrow scope of random vectors 2016-07-24 04:04:25 +00:00
Kp c636dc4b98 Convert various static const expressions to constexpr 2016-07-16 16:52:04 +00:00
Kp 6580c37b6e Propagate MAX_STOLEN_ITEMS 2016-07-10 04:11:34 +00:00
Kp 71ab00beb8 Propagate MAX_BOSS_TELEPORT_SEGS 2016-07-10 04:11:34 +00:00
Kp 1486a5a01b Move Robot_sound_volume to dcx 2016-07-09 17:58:36 +00:00
Kp 1dd60cc5be Rewrite simple fix64 casts from C style to static_cast<>
s/(\(fix\(64\)\?\))\s*\(\w\+\);/static_cast<\1>(\3);/g
2016-07-07 03:08:13 +00:00
Kp 9f76e9e97a Fix -Wshadow warnings in init_boss_segments 2016-05-22 17:49:31 +00:00
Kp c61a3d5e0f Fix -Wshadow warnings in do_ai_frame 2016-05-21 17:24:51 +00:00
zico 1e60e7f31a Disabled AI behavior switch to toggle AIM_CHASE_OBJECT if in AIB_STILL during a hit, fixing unwanted boss movements and hopefully not breaking anything else 2016-05-10 14:04:30 +02:00
Kp ebc0547837 Pass object_base &to boss_spew_robot 2016-04-23 17:59:47 +00:00
Kp fa1e0d309c Pass object_base &to add_awareness_event 2016-04-23 17:59:47 +00:00