Vanilla List Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

patch: true wall wrap support, custom wall behaviour, custom orbits



I don't know which format is best, so I'm including the patch in two
formats, the unified format, and the contextual format.

The patch is relative to Vanilla-2.9pl5.

I've placed the patches at the following URL's because it seems EZLM
doesn't like "messages longer than 40,000 bytes"... grrr...

    http://mark.mielke.cc/netrek/vanilla-2.9pl5/context_diff.patch
    http://mark.mielke.cc/netrek/vanilla-2.9pl5/unified_diff.patch

High level summary of patch:

- true wall wrap support:
  + continuous wrap instead of rounding to the nearest GWIDTH for
    ships, torps, plasmatorps.
  + PFSEEN (as well as the alert statuses), tractor beams, torpedo tracking,
    torpedo proximity explosion, damage from exploding torpedoes,
    damage from planets, ship explosions, detonate others, orbit planets,
    phasers, and player/planet locks all work across borders.
  + client updating for players, torpedoes, plasmas, and phasers on the other
    side of the border, but visible from my tactical occurs properly. This
    requires client side support.
  + torpedoes, using short packets, get displayed at the correct pixel
    locations even without client side support.
  + the robots understand galaxy wrap and try to be smart about it.

- custom wall behaviour for torpedoes and ships:
  + wall behaviour only has effect when wrap_galaxy == 0.
  + when ship_wall_behaviour requires a ship to explode (16 + ?), the
    "reason" for death is KPROVIDENCE.
  + addition of the following define in config.h.in:
        #define CUSTOM_WALL_BEHAVIOUR
                                 /* CUSTOM_WALL_BEHAVIOUR - Enable code
                                 that will allow .sysdef configurable changes
                                 to the wall collision code when show_galaxy
                                 is turned off.
                                 */
  + addition of the following lines to the end of docs/sample_sysdef:
        # CUSTOM_WALL_BEHAVIOUR:
        #
        # For both of the following, the following actions can be defined:
        #    0 = Traditional  (whatever is the traditional behaviour)
        #    1 = Bounce       (for ships, this is a smarter bounce)
        #    2 = Pass Through (allow object to go outside bounds)
        #
        # You can also add 16 to the value to set an "explode" flag. Usually
        # torpedoes should explode when they hit the wall,
        #
        SHIP_WALL_BEHAVIOUR=0
        TORP_WALL_BEHAVIOUR=0
  + smarter bounce for ships means that the p_desdir gets bounced separate
    from the p_dir. The effect is more predictable. Previously, the bounce
    would lose the p_desdir information.

- custom orbits:
  + addition of the following define in config.h.in:
        #define CUSTOM_ORBITS
                                 /* CUSTOM_ORBITS - Enable code that will
                                 allow .sysdef configurable changes to the
                                 orbit code for ships orbitting planets.
                                 */
  + addition of the following lines to the end of docs/sample_sysdef:
        # CUSTOM_ORBITS:
        #
        #    0 = Traditional (clockwise only)
        #    1 = Counter clockwise only
        #    2 = Random
        #    3 = Intelligent
        #
        ORBIT_BEHAVIOUR=0
  + this takes up PFORBITREVERSE=0x20000000 in player.p_flags... is this bad?
    it would likely be possible to guess the orbit direction based on the
    offset from the planet quite efficiently... but i didn't do it that way
    right now.

- tractor beam code re-written, but no change in effect right now as was
  previously proposed.

I hope these changes are in a satisfactory format. There were a very small
amount of random code fixes as well included in here. All quite minor.

mark

-- 
mark@mielke.cc/markm@ncf.ca/markm@nortelnetworks.com __________________________
.  .  _  ._  . .   .__    .  . ._. .__ .   . . .__  | Neighbourhood Coder
|\/| |_| |_| |/    |_     |\/|  |  |_  |   |/  |_   | 
|  | | | | \ | \   |__ .  |  | .|. |__ |__ | \ |__  | Ottawa, Ontario, Canada

  One ring to rule them all, one ring to find them, one ring to bring them all
                       and in the darkness bind them...

                           http://mark.mielke.cc/

message/external-body

message/external-body