Warsow Content License

Assets that are property of Chasseur de bots, use the following Warsow Content License.

TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION

   1. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this Warsow Content License.

   2. Terms defined in this Article, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions:

      The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law.

      "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement.

      Each licensee is addressed as "you".

   3. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the Chasseur de bots team.

   4. You may freely distribute the Warsow archive/installer unmodified on any media. You may re-compress using different archival formats suitable for your OS (i.e. zip/tgz/rpm/deb/dmg), any changes beyond that require explicit permission of the Chasseur de bots association.

   5. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU.

   6. IN NO EVENT SHALL Chasseur de bots BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL.


END OF TERMS AND CONDITIONS
