Commit graph

9119 commits

Author SHA1 Message Date
Kp 0fb59c225c Move add_points_to_score into namespace dsx 2016-12-05 00:26:10 +00:00
Kp f3ebdca557 Return segidx from escort_get_goal_segment 2016-12-05 00:26:10 +00:00
Kp e0f6077afa Pass vcsegidx to render_mine 2016-12-05 00:26:10 +00:00
Kp d7ea84aa36 Pass vcsegidx to multi_send_boss_teleport 2016-12-05 00:26:10 +00:00
Kp 31f330c0ff Pass vcsegidx to multi_send_door_open_specific 2016-12-05 00:26:10 +00:00
Kp fe44705d2d Pass vcsegidx to multi_send_effect_blowup 2016-12-05 00:26:10 +00:00
Kp 6bffe9949e Pass vcsegidx to multi_send_create_powerup 2016-12-05 00:26:09 +00:00
Kp 82b068bf9c Pass vsegidx to multi_send_door_open 2016-12-05 00:26:09 +00:00
Kp 67afde75e3 Fold net_udp_send_door_updates calls to multi_send_door_open 2016-12-05 00:26:09 +00:00
Kp b5be5f2099 Pass vcwallptridx to multi_send_hostage_door_status
Avoid recomputing the wall pointer that the caller already had.
2016-12-05 00:26:09 +00:00
Kp 3fc128607c Pass vsegidx_t to disable_flicker 2016-12-05 00:26:09 +00:00
Kp c035f5e93f Pass segidx_t to create_path_points 2016-12-05 00:26:09 +00:00
Kp c60d93326c Propagate constant third parameter of create_n_segment_path_to_door 2016-12-05 00:26:08 +00:00
Kp b696d8cf22 Pass segidx_t to create_n_segment_path 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 aaea5411e1 Only set -Wunused if __attribute__((unused)) works 2016-12-05 00:26:08 +00:00
zico bfe6149cdb Fixed regression from 6e20d86941 in which flag OF_PLAYER_DROPPED in drop_powerup would only be set for OBJ_ROBOT but not OBJ_POWERUP, making the Guidebot unable to locate player spew 2016-12-04 21:39:03 +01:00
zico 34b24c0d69 Fixed regression from d1x-rebirth 0.57.3: Properly read out flat poly color for morph models from model data 2016-12-04 21:21:49 +01:00
zico ffb68756e3 Changed handling of scrape_player_on_wall(), preventing it to occur multiple times per frame. 2016-12-02 13:37:08 +01:00
zico ad5a5047d4 Improved handling for Guidebot goals that are not objects: Set object_none to Escort_goal_index for ESCORT_GOAL_EXIT, ESCORT_GOAL_ENERGYCEN and ESCORT_GOAL_SCRAM. Changed handling for ESCORT_GOAL_EXIT to work like ESCORT_GOALFUELCEN (without needing Escort_goal_index). Let detect_escort_goal_accomplished() bail if Escort_goal_index == object_none (replacing case ahndling for ESCORT_GOAL_SCRAM). Minor formatting improvements of detect_escort_goal_accomplished() and removal of stub case of ESCORT_GOAL_FUELCEN. 2016-11-29 19:30:16 +01:00
Kp f8cc32a4af Merge pull #272 into master 2016-11-26 22:51:49 +00:00
Kp 6153fc6f8d Recharge omega cannon on entering new level 2016-11-26 22:51:49 +00:00
Kp 6226e5fbbf Remove obsolete operator-(wall *, array<wall, N> &) 2016-11-26 22:51:49 +00:00
Kp 329ff67718 Raise D1 MAX_DOORS to match D2 2016-11-26 22:51:49 +00:00
Kp 66d946f5f7 Use std::find_if in wall_close_door to search ActiveDoors 2016-11-26 22:51:48 +00:00
Kp ecdefd93ad Use std::find_if in wall_open_door to search ActiveDoors 2016-11-26 22:51:48 +00:00
Kp ad806a8251 Reorder newmenu length test to skip key_ascii() call 2016-11-26 22:51:48 +00:00
Kp 46ffb9d3f8 Use remove_if to remove obsolete open doors 2016-11-26 22:51:48 +00:00
Kp ac5ccf0c08 Pass active_door &to wall_close_door_num 2016-11-26 22:51:48 +00:00
Kp 1acee2d4f4 Remove unused wall_close_door 2016-11-26 22:51:48 +00:00
Kp 5c62f63606 Factor out active_door removal 2016-11-26 22:51:47 +00:00
Kp be706e190e Move wall_close_door_num copy loop up
There are two callers for wall_close_door_num.  The editor calls it in a
loop for all doors, so copying each active_door is wasteful since none
will survive the end of the loop.  Move the copy loop into the caller
that removes elements selectively.

This makes no attempt to fix the bugs associated with changing
Num_open_doors while iterating with Num_open_doors as an upper bound.
2016-11-26 22:51:47 +00:00
Kp 16d2a3f866 Fix pch build
Move DXX_VERSION_SEQ from DXXProgram to DXXCommon to make it visible to
DXXArchive.configure_environment().  If pch is enabled, define
DXX_VERSION_SEQ in dxxsconf.h and remove it from the command line.  This
fixes a build failure where gcc ignored ownpch.cpp.gch because it was
built without DXX_VERSION_SEQ, but some files were built with
DXX_VERSION_SEQ.
2016-11-26 22:51:47 +00:00
Kp da50b79fb9 Fix syspch build 2016-11-26 22:51:47 +00:00
Kp 64ac7028e6 Pass active_door &to do_door_{open,close} 2016-11-26 22:51:47 +00:00
Kp 8bd9ec6360 Use range_for in do_door_close 2016-11-26 22:51:47 +00:00
Kp a129a0d570 Add ID for robot earthshaker secondary missile
Reported-by: kreatordxx <https://github.com/dxx-rebirth/dxx-rebirth/issues/273>
2016-11-26 22:51:47 +00:00
Kp bf662e0bcc Initialize track_goal for homing weapons
Kreator reported an uninitialized value crash when robots fired homing
weapons.  No path assigned a value for track_goal, so it had a default
value of 0 (non-poison builds) or 0xfdfd (poison builds).  Assign it a
value of object_none when the created weapon is a homing weapon.  Leave
it unassigned for non-homing weapons, since those should never examine
track_goal.

Reported-by: kreatordxx <https://github.com/dxx-rebirth/dxx-rebirth/issues/274>
2016-11-26 22:51:46 +00:00
Kp e56160a021 Print warning for unhandled weapon types 2016-11-26 22:51:46 +00:00
Kp 48ac006c59 Remove obsolete and broken DOOR_DEBUGGING code
This code has been #ifdef'd out since 2002, relied on implicit-int in
its declaration (deprecated in C, forbidden in C++), and has been broken
for years due to vms_vector changes.  Remove it.
2016-11-26 22:51:46 +00:00
Chris Taylor bf6eb99d7a When switching to the editor in a game, use a proper saved game
This preserves virtually all game information, including active fire. The saved game 'gamesave.sge' can also be loaded with File->Restore Game State. The level can still be saved as usual (but it warns the user if there's an unsaved game state). This functionality may be useful for testing (or cheating! ;) )
2016-11-21 15:22:11 +08:00
Chris Taylor 2995cb628c Never set Current_level_num to 0
This will be required when proper game state editing is implemented. Also remove hacks that check Current_level_num == 0.
2016-11-21 15:22:11 +08:00
Kp f4b7b958cb Revert "Fold escort_set_goal_object calls to exists_in_mine"
This reverts commit 03b0222896.

Commit 03b0222 caused the guidebot to skip over later key goals if an
earlier key goal was unnecessary.  This is incorrect.  Revert it.

Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/271>
2016-11-21 01:57:08 +00:00
Kp 8817307f23 Create duplicate powerups with movement MT_NONE
zicodxx reported an assertion failure when powerup duplication was
enabled.  Local debugging shows that some levels give preplaced powerups
a movement type of MT_NONE rather than MT_PHYSICS.  Such powerups have
undefined data in their mtype.phys_info branch, which confuses the
physics simulation code.  Powerups only need MT_PHYSICS to bounce away
from their spawn site.  Preplaced powerups never move.

Add assertions that preplaced powerups are MT_NONE.  Change the
duplication call to create the duplicates with movement MT_NONE.

Reported-by: zicodxx <https://github.com/dxx-rebirth/dxx-rebirth/issues/268>
2016-11-20 23:12:01 +00:00
Kp 0c219e596e Use enum for object movement type 2016-11-20 23:12:00 +00:00
Kp 4497812674 Use enum for object type 2016-11-20 23:12:00 +00:00
Kp e4afb78124 Fix undefined access to ai_info of non-robots
Only robots have ctype.ai_info.  Skip the sniper special case for
objects that are not robots.
2016-11-19 18:09:26 +00:00
Kp 118ba7698a Always initialize Omega_charge in init_player_stats_new_ship
Some gauges views show the current Omega_charge even when the player
does not have an Omega cannon.  Initialize Omega_charge to 0 if the
Omega cannon is not granted.
2016-11-19 18:09:26 +00:00
Kp a70d1ac646 Pass player_info &to omega_charge_frame 2016-11-19 18:09:26 +00:00
Kp 85338cba5e Fix memory corruption starting multiplayer game
Various points in the game code call `hide_menus()`, then later use
`show_menus()` to reverse the effect.  If the forcibly hidden window is
deleted before `show_menus()` is called, the attempt to show it would
write to freed memory.  Add a hook to forget those windows when they are
deleted, so that `show_menus()` does not try to make them visible later.
2016-11-19 18:09:26 +00:00