Codebase list iortcw / 8162b7f
Import upstream version 1.51.c+dfsg1+git20211114.1.d91019d Debian Janitor 2 years ago
88 changed file(s) with 25228 addition(s) and 2038 deletion(s). Raw diff Collapse all Expand all
0 GNU GENERAL PUBLIC LICENSE
1 Version 3, 29 June 2007
2
3 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
4 Everyone is permitted to copy and distribute verbatim copies
5 of this license document, but changing it is not allowed.
6
7 Preamble
8
9 The GNU General Public License is a free, copyleft license for
10 software and other kinds of works.
11
12 The licenses for most software and other practical works are designed
13 to take away your freedom to share and change the works. By contrast,
14 the GNU General Public License is intended to guarantee your freedom to
15 share and change all versions of a program--to make sure it remains free
16 software for all its users. We, the Free Software Foundation, use the
17 GNU General Public License for most of our software; it applies also to
18 any other work released this way by its authors. You can apply it to
19 your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22 price. Our General Public Licenses are designed to make sure that you
23 have the freedom to distribute copies of free software (and charge for
24 them if you wish), that you receive source code or can get it if you
25 want it, that you can change the software or use pieces of it in new
26 free programs, and that you know you can do these things.
27
28 To protect your rights, we need to prevent others from denying you
29 these rights or asking you to surrender the rights. Therefore, you have
30 certain responsibilities if you distribute copies of the software, or if
31 you modify it: responsibilities to respect the freedom of others.
32
33 For example, if you distribute copies of such a program, whether
34 gratis or for a fee, you must pass on to the recipients the same
35 freedoms that you received. You must make sure that they, too, receive
36 or can get the source code. And you must show them these terms so they
37 know their rights.
38
39 Developers that use the GNU GPL protect your rights with two steps:
40 (1) assert copyright on the software, and (2) offer you this License
41 giving you legal permission to copy, distribute and/or modify it.
42
43 For the developers' and authors' protection, the GPL clearly explains
44 that there is no warranty for this free software. For both users' and
45 authors' sake, the GPL requires that modified versions be marked as
46 changed, so that their problems will not be attributed erroneously to
47 authors of previous versions.
48
49 Some devices are designed to deny users access to install or run
50 modified versions of the software inside them, although the manufacturer
51 can do so. This is fundamentally incompatible with the aim of
52 protecting users' freedom to change the software. The systematic
53 pattern of such abuse occurs in the area of products for individuals to
54 use, which is precisely where it is most unacceptable. Therefore, we
55 have designed this version of the GPL to prohibit the practice for those
56 products. If such problems arise substantially in other domains, we
57 stand ready to extend this provision to those domains in future versions
58 of the GPL, as needed to protect the freedom of users.
59
60 Finally, every program is threatened constantly by software patents.
61 States should not allow patents to restrict development and use of
62 software on general-purpose computers, but in those that do, we wish to
63 avoid the special danger that patents applied to a free program could
64 make it effectively proprietary. To prevent this, the GPL assures that
65 patents cannot be used to render the program non-free.
66
67 The precise terms and conditions for copying, distribution and
68 modification follow.
69
70 TERMS AND CONDITIONS
71
72 0. Definitions.
73
74 "This License" refers to version 3 of the GNU General Public License.
75
76 "Copyright" also means copyright-like laws that apply to other kinds of
77 works, such as semiconductor masks.
78
79 "The Program" refers to any copyrightable work licensed under this
80 License. Each licensee is addressed as "you". "Licensees" and
81 "recipients" may be individuals or organizations.
82
83 To "modify" a work means to copy from or adapt all or part of the work
84 in a fashion requiring copyright permission, other than the making of an
85 exact copy. The resulting work is called a "modified version" of the
86 earlier work or a work "based on" the earlier work.
87
88 A "covered work" means either the unmodified Program or a work based
89 on the Program.
90
91 To "propagate" a work means to do anything with it that, without
92 permission, would make you directly or secondarily liable for
93 infringement under applicable copyright law, except executing it on a
94 computer or modifying a private copy. Propagation includes copying,
95 distribution (with or without modification), making available to the
96 public, and in some countries other activities as well.
97
98 To "convey" a work means any kind of propagation that enables other
99 parties to make or receive copies. Mere interaction with a user through
100 a computer network, with no transfer of a copy, is not conveying.
101
102 An interactive user interface displays "Appropriate Legal Notices"
103 to the extent that it includes a convenient and prominently visible
104 feature that (1) displays an appropriate copyright notice, and (2)
105 tells the user that there is no warranty for the work (except to the
106 extent that warranties are provided), that licensees may convey the
107 work under this License, and how to view a copy of this License. If
108 the interface presents a list of user commands or options, such as a
109 menu, a prominent item in the list meets this criterion.
110
111 1. Source Code.
112
113 The "source code" for a work means the preferred form of the work
114 for making modifications to it. "Object code" means any non-source
115 form of a work.
116
117 A "Standard Interface" means an interface that either is an official
118 standard defined by a recognized standards body, or, in the case of
119 interfaces specified for a particular programming language, one that
120 is widely used among developers working in that language.
121
122 The "System Libraries" of an executable work include anything, other
123 than the work as a whole, that (a) is included in the normal form of
124 packaging a Major Component, but which is not part of that Major
125 Component, and (b) serves only to enable use of the work with that
126 Major Component, or to implement a Standard Interface for which an
127 implementation is available to the public in source code form. A
128 "Major Component", in this context, means a major essential component
129 (kernel, window system, and so on) of the specific operating system
130 (if any) on which the executable work runs, or a compiler used to
131 produce the work, or an object code interpreter used to run it.
132
133 The "Corresponding Source" for a work in object code form means all
134 the source code needed to generate, install, and (for an executable
135 work) run the object code and to modify the work, including scripts to
136 control those activities. However, it does not include the work's
137 System Libraries, or general-purpose tools or generally available free
138 programs which are used unmodified in performing those activities but
139 which are not part of the work. For example, Corresponding Source
140 includes interface definition files associated with source files for
141 the work, and the source code for shared libraries and dynamically
142 linked subprograms that the work is specifically designed to require,
143 such as by intimate data communication or control flow between those
144 subprograms and other parts of the work.
145
146 The Corresponding Source need not include anything that users
147 can regenerate automatically from other parts of the Corresponding
148 Source.
149
150 The Corresponding Source for a work in source code form is that
151 same work.
152
153 2. Basic Permissions.
154
155 All rights granted under this License are granted for the term of
156 copyright on the Program, and are irrevocable provided the stated
157 conditions are met. This License explicitly affirms your unlimited
158 permission to run the unmodified Program. The output from running a
159 covered work is covered by this License only if the output, given its
160 content, constitutes a covered work. This License acknowledges your
161 rights of fair use or other equivalent, as provided by copyright law.
162
163 You may make, run and propagate covered works that you do not
164 convey, without conditions so long as your license otherwise remains
165 in force. You may convey covered works to others for the sole purpose
166 of having them make modifications exclusively for you, or provide you
167 with facilities for running those works, provided that you comply with
168 the terms of this License in conveying all material for which you do
169 not control copyright. Those thus making or running the covered works
170 for you must do so exclusively on your behalf, under your direction
171 and control, on terms that prohibit them from making any copies of
172 your copyrighted material outside their relationship with you.
173
174 Conveying under any other circumstances is permitted solely under
175 the conditions stated below. Sublicensing is not allowed; section 10
176 makes it unnecessary.
177
178 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
179
180 No covered work shall be deemed part of an effective technological
181 measure under any applicable law fulfilling obligations under article
182 11 of the WIPO copyright treaty adopted on 20 December 1996, or
183 similar laws prohibiting or restricting circumvention of such
184 measures.
185
186 When you convey a covered work, you waive any legal power to forbid
187 circumvention of technological measures to the extent such circumvention
188 is effected by exercising rights under this License with respect to
189 the covered work, and you disclaim any intention to limit operation or
190 modification of the work as a means of enforcing, against the work's
191 users, your or third parties' legal rights to forbid circumvention of
192 technological measures.
193
194 4. Conveying Verbatim Copies.
195
196 You may convey verbatim copies of the Program's source code as you
197 receive it, in any medium, provided that you conspicuously and
198 appropriately publish on each copy an appropriate copyright notice;
199 keep intact all notices stating that this License and any
200 non-permissive terms added in accord with section 7 apply to the code;
201 keep intact all notices of the absence of any warranty; and give all
202 recipients a copy of this License along with the Program.
203
204 You may charge any price or no price for each copy that you convey,
205 and you may offer support or warranty protection for a fee.
206
207 5. Conveying Modified Source Versions.
208
209 You may convey a work based on the Program, or the modifications to
210 produce it from the Program, in the form of source code under the
211 terms of section 4, provided that you also meet all of these conditions:
212
213 a) The work must carry prominent notices stating that you modified
214 it, and giving a relevant date.
215
216 b) The work must carry prominent notices stating that it is
217 released under this License and any conditions added under section
218 7. This requirement modifies the requirement in section 4 to
219 "keep intact all notices".
220
221 c) You must license the entire work, as a whole, under this
222 License to anyone who comes into possession of a copy. This
223 License will therefore apply, along with any applicable section 7
224 additional terms, to the whole of the work, and all its parts,
225 regardless of how they are packaged. This License gives no
226 permission to license the work in any other way, but it does not
227 invalidate such permission if you have separately received it.
228
229 d) If the work has interactive user interfaces, each must display
230 Appropriate Legal Notices; however, if the Program has interactive
231 interfaces that do not display Appropriate Legal Notices, your
232 work need not make them do so.
233
234 A compilation of a covered work with other separate and independent
235 works, which are not by their nature extensions of the covered work,
236 and which are not combined with it such as to form a larger program,
237 in or on a volume of a storage or distribution medium, is called an
238 "aggregate" if the compilation and its resulting copyright are not
239 used to limit the access or legal rights of the compilation's users
240 beyond what the individual works permit. Inclusion of a covered work
241 in an aggregate does not cause this License to apply to the other
242 parts of the aggregate.
243
244 6. Conveying Non-Source Forms.
245
246 You may convey a covered work in object code form under the terms
247 of sections 4 and 5, provided that you also convey the
248 machine-readable Corresponding Source under the terms of this License,
249 in one of these ways:
250
251 a) Convey the object code in, or embodied in, a physical product
252 (including a physical distribution medium), accompanied by the
253 Corresponding Source fixed on a durable physical medium
254 customarily used for software interchange.
255
256 b) Convey the object code in, or embodied in, a physical product
257 (including a physical distribution medium), accompanied by a
258 written offer, valid for at least three years and valid for as
259 long as you offer spare parts or customer support for that product
260 model, to give anyone who possesses the object code either (1) a
261 copy of the Corresponding Source for all the software in the
262 product that is covered by this License, on a durable physical
263 medium customarily used for software interchange, for a price no
264 more than your reasonable cost of physically performing this
265 conveying of source, or (2) access to copy the
266 Corresponding Source from a network server at no charge.
267
268 c) Convey individual copies of the object code with a copy of the
269 written offer to provide the Corresponding Source. This
270 alternative is allowed only occasionally and noncommercially, and
271 only if you received the object code with such an offer, in accord
272 with subsection 6b.
273
274 d) Convey the object code by offering access from a designated
275 place (gratis or for a charge), and offer equivalent access to the
276 Corresponding Source in the same way through the same place at no
277 further charge. You need not require recipients to copy the
278 Corresponding Source along with the object code. If the place to
279 copy the object code is a network server, the Corresponding Source
280 may be on a different server (operated by you or a third party)
281 that supports equivalent copying facilities, provided you maintain
282 clear directions next to the object code saying where to find the
283 Corresponding Source. Regardless of what server hosts the
284 Corresponding Source, you remain obligated to ensure that it is
285 available for as long as needed to satisfy these requirements.
286
287 e) Convey the object code using peer-to-peer transmission, provided
288 you inform other peers where the object code and Corresponding
289 Source of the work are being offered to the general public at no
290 charge under subsection 6d.
291
292 A separable portion of the object code, whose source code is excluded
293 from the Corresponding Source as a System Library, need not be
294 included in conveying the object code work.
295
296 A "User Product" is either (1) a "consumer product", which means any
297 tangible personal property which is normally used for personal, family,
298 or household purposes, or (2) anything designed or sold for incorporation
299 into a dwelling. In determining whether a product is a consumer product,
300 doubtful cases shall be resolved in favor of coverage. For a particular
301 product received by a particular user, "normally used" refers to a
302 typical or common use of that class of product, regardless of the status
303 of the particular user or of the way in which the particular user
304 actually uses, or expects or is expected to use, the product. A product
305 is a consumer product regardless of whether the product has substantial
306 commercial, industrial or non-consumer uses, unless such uses represent
307 the only significant mode of use of the product.
308
309 "Installation Information" for a User Product means any methods,
310 procedures, authorization keys, or other information required to install
311 and execute modified versions of a covered work in that User Product from
312 a modified version of its Corresponding Source. The information must
313 suffice to ensure that the continued functioning of the modified object
314 code is in no case prevented or interfered with solely because
315 modification has been made.
316
317 If you convey an object code work under this section in, or with, or
318 specifically for use in, a User Product, and the conveying occurs as
319 part of a transaction in which the right of possession and use of the
320 User Product is transferred to the recipient in perpetuity or for a
321 fixed term (regardless of how the transaction is characterized), the
322 Corresponding Source conveyed under this section must be accompanied
323 by the Installation Information. But this requirement does not apply
324 if neither you nor any third party retains the ability to install
325 modified object code on the User Product (for example, the work has
326 been installed in ROM).
327
328 The requirement to provide Installation Information does not include a
329 requirement to continue to provide support service, warranty, or updates
330 for a work that has been modified or installed by the recipient, or for
331 the User Product in which it has been modified or installed. Access to a
332 network may be denied when the modification itself materially and
333 adversely affects the operation of the network or violates the rules and
334 protocols for communication across the network.
335
336 Corresponding Source conveyed, and Installation Information provided,
337 in accord with this section must be in a format that is publicly
338 documented (and with an implementation available to the public in
339 source code form), and must require no special password or key for
340 unpacking, reading or copying.
341
342 7. Additional Terms.
343
344 "Additional permissions" are terms that supplement the terms of this
345 License by making exceptions from one or more of its conditions.
346 Additional permissions that are applicable to the entire Program shall
347 be treated as though they were included in this License, to the extent
348 that they are valid under applicable law. If additional permissions
349 apply only to part of the Program, that part may be used separately
350 under those permissions, but the entire Program remains governed by
351 this License without regard to the additional permissions.
352
353 When you convey a copy of a covered work, you may at your option
354 remove any additional permissions from that copy, or from any part of
355 it. (Additional permissions may be written to require their own
356 removal in certain cases when you modify the work.) You may place
357 additional permissions on material, added by you to a covered work,
358 for which you have or can give appropriate copyright permission.
359
360 Notwithstanding any other provision of this License, for material you
361 add to a covered work, you may (if authorized by the copyright holders of
362 that material) supplement the terms of this License with terms:
363
364 a) Disclaiming warranty or limiting liability differently from the
365 terms of sections 15 and 16 of this License; or
366
367 b) Requiring preservation of specified reasonable legal notices or
368 author attributions in that material or in the Appropriate Legal
369 Notices displayed by works containing it; or
370
371 c) Prohibiting misrepresentation of the origin of that material, or
372 requiring that modified versions of such material be marked in
373 reasonable ways as different from the original version; or
374
375 d) Limiting the use for publicity purposes of names of licensors or
376 authors of the material; or
377
378 e) Declining to grant rights under trademark law for use of some
379 trade names, trademarks, or service marks; or
380
381 f) Requiring indemnification of licensors and authors of that
382 material by anyone who conveys the material (or modified versions of
383 it) with contractual assumptions of liability to the recipient, for
384 any liability that these contractual assumptions directly impose on
385 those licensors and authors.
386
387 All other non-permissive additional terms are considered "further
388 restrictions" within the meaning of section 10. If the Program as you
389 received it, or any part of it, contains a notice stating that it is
390 governed by this License along with a term that is a further
391 restriction, you may remove that term. If a license document contains
392 a further restriction but permits relicensing or conveying under this
393 License, you may add to a covered work material governed by the terms
394 of that license document, provided that the further restriction does
395 not survive such relicensing or conveying.
396
397 If you add terms to a covered work in accord with this section, you
398 must place, in the relevant source files, a statement of the
399 additional terms that apply to those files, or a notice indicating
400 where to find the applicable terms.
401
402 Additional terms, permissive or non-permissive, may be stated in the
403 form of a separately written license, or stated as exceptions;
404 the above requirements apply either way.
405
406 8. Termination.
407
408 You may not propagate or modify a covered work except as expressly
409 provided under this License. Any attempt otherwise to propagate or
410 modify it is void, and will automatically terminate your rights under
411 this License (including any patent licenses granted under the third
412 paragraph of section 11).
413
414 However, if you cease all violation of this License, then your
415 license from a particular copyright holder is reinstated (a)
416 provisionally, unless and until the copyright holder explicitly and
417 finally terminates your license, and (b) permanently, if the copyright
418 holder fails to notify you of the violation by some reasonable means
419 prior to 60 days after the cessation.
420
421 Moreover, your license from a particular copyright holder is
422 reinstated permanently if the copyright holder notifies you of the
423 violation by some reasonable means, this is the first time you have
424 received notice of violation of this License (for any work) from that
425 copyright holder, and you cure the violation prior to 30 days after
426 your receipt of the notice.
427
428 Termination of your rights under this section does not terminate the
429 licenses of parties who have received copies or rights from you under
430 this License. If your rights have been terminated and not permanently
431 reinstated, you do not qualify to receive new licenses for the same
432 material under section 10.
433
434 9. Acceptance Not Required for Having Copies.
435
436 You are not required to accept this License in order to receive or
437 run a copy of the Program. Ancillary propagation of a covered work
438 occurring solely as a consequence of using peer-to-peer transmission
439 to receive a copy likewise does not require acceptance. However,
440 nothing other than this License grants you permission to propagate or
441 modify any covered work. These actions infringe copyright if you do
442 not accept this License. Therefore, by modifying or propagating a
443 covered work, you indicate your acceptance of this License to do so.
444
445 10. Automatic Licensing of Downstream Recipients.
446
447 Each time you convey a covered work, the recipient automatically
448 receives a license from the original licensors, to run, modify and
449 propagate that work, subject to this License. You are not responsible
450 for enforcing compliance by third parties with this License.
451
452 An "entity transaction" is a transaction transferring control of an
453 organization, or substantially all assets of one, or subdividing an
454 organization, or merging organizations. If propagation of a covered
455 work results from an entity transaction, each party to that
456 transaction who receives a copy of the work also receives whatever
457 licenses to the work the party's predecessor in interest had or could
458 give under the previous paragraph, plus a right to possession of the
459 Corresponding Source of the work from the predecessor in interest, if
460 the predecessor has it or can get it with reasonable efforts.
461
462 You may not impose any further restrictions on the exercise of the
463 rights granted or affirmed under this License. For example, you may
464 not impose a license fee, royalty, or other charge for exercise of
465 rights granted under this License, and you may not initiate litigation
466 (including a cross-claim or counterclaim in a lawsuit) alleging that
467 any patent claim is infringed by making, using, selling, offering for
468 sale, or importing the Program or any portion of it.
469
470 11. Patents.
471
472 A "contributor" is a copyright holder who authorizes use under this
473 License of the Program or a work on which the Program is based. The
474 work thus licensed is called the contributor's "contributor version".
475
476 A contributor's "essential patent claims" are all patent claims
477 owned or controlled by the contributor, whether already acquired or
478 hereafter acquired, that would be infringed by some manner, permitted
479 by this License, of making, using, or selling its contributor version,
480 but do not include claims that would be infringed only as a
481 consequence of further modification of the contributor version. For
482 purposes of this definition, "control" includes the right to grant
483 patent sublicenses in a manner consistent with the requirements of
484 this License.
485
486 Each contributor grants you a non-exclusive, worldwide, royalty-free
487 patent license under the contributor's essential patent claims, to
488 make, use, sell, offer for sale, import and otherwise run, modify and
489 propagate the contents of its contributor version.
490
491 In the following three paragraphs, a "patent license" is any express
492 agreement or commitment, however denominated, not to enforce a patent
493 (such as an express permission to practice a patent or covenant not to
494 sue for patent infringement). To "grant" such a patent license to a
495 party means to make such an agreement or commitment not to enforce a
496 patent against the party.
497
498 If you convey a covered work, knowingly relying on a patent license,
499 and the Corresponding Source of the work is not available for anyone
500 to copy, free of charge and under the terms of this License, through a
501 publicly available network server or other readily accessible means,
502 then you must either (1) cause the Corresponding Source to be so
503 available, or (2) arrange to deprive yourself of the benefit of the
504 patent license for this particular work, or (3) arrange, in a manner
505 consistent with the requirements of this License, to extend the patent
506 license to downstream recipients. "Knowingly relying" means you have
507 actual knowledge that, but for the patent license, your conveying the
508 covered work in a country, or your recipient's use of the covered work
509 in a country, would infringe one or more identifiable patents in that
510 country that you have reason to believe are valid.
511
512 If, pursuant to or in connection with a single transaction or
513 arrangement, you convey, or propagate by procuring conveyance of, a
514 covered work, and grant a patent license to some of the parties
515 receiving the covered work authorizing them to use, propagate, modify
516 or convey a specific copy of the covered work, then the patent license
517 you grant is automatically extended to all recipients of the covered
518 work and works based on it.
519
520 A patent license is "discriminatory" if it does not include within
521 the scope of its coverage, prohibits the exercise of, or is
522 conditioned on the non-exercise of one or more of the rights that are
523 specifically granted under this License. You may not convey a covered
524 work if you are a party to an arrangement with a third party that is
525 in the business of distributing software, under which you make payment
526 to the third party based on the extent of your activity of conveying
527 the work, and under which the third party grants, to any of the
528 parties who would receive the covered work from you, a discriminatory
529 patent license (a) in connection with copies of the covered work
530 conveyed by you (or copies made from those copies), or (b) primarily
531 for and in connection with specific products or compilations that
532 contain the covered work, unless you entered into that arrangement,
533 or that patent license was granted, prior to 28 March 2007.
534
535 Nothing in this License shall be construed as excluding or limiting
536 any implied license or other defenses to infringement that may
537 otherwise be available to you under applicable patent law.
538
539 12. No Surrender of Others' Freedom.
540
541 If conditions are imposed on you (whether by court order, agreement or
542 otherwise) that contradict the conditions of this License, they do not
543 excuse you from the conditions of this License. If you cannot convey a
544 covered work so as to satisfy simultaneously your obligations under this
545 License and any other pertinent obligations, then as a consequence you may
546 not convey it at all. For example, if you agree to terms that obligate you
547 to collect a royalty for further conveying from those to whom you convey
548 the Program, the only way you could satisfy both those terms and this
549 License would be to refrain entirely from conveying the Program.
550
551 13. Use with the GNU Affero General Public License.
552
553 Notwithstanding any other provision of this License, you have
554 permission to link or combine any covered work with a work licensed
555 under version 3 of the GNU Affero General Public License into a single
556 combined work, and to convey the resulting work. The terms of this
557 License will continue to apply to the part which is the covered work,
558 but the special requirements of the GNU Affero General Public License,
559 section 13, concerning interaction through a network will apply to the
560 combination as such.
561
562 14. Revised Versions of this License.
563
564 The Free Software Foundation may publish revised and/or new versions of
565 the GNU General Public License from time to time. Such new versions will
566 be similar in spirit to the present version, but may differ in detail to
567 address new problems or concerns.
568
569 Each version is given a distinguishing version number. If the
570 Program specifies that a certain numbered version of the GNU General
571 Public License "or any later version" applies to it, you have the
572 option of following the terms and conditions either of that numbered
573 version or of any later version published by the Free Software
574 Foundation. If the Program does not specify a version number of the
575 GNU General Public License, you may choose any version ever published
576 by the Free Software Foundation.
577
578 If the Program specifies that a proxy can decide which future
579 versions of the GNU General Public License can be used, that proxy's
580 public statement of acceptance of a version permanently authorizes you
581 to choose that version for the Program.
582
583 Later license versions may give you additional or different
584 permissions. However, no additional obligations are imposed on any
585 author or copyright holder as a result of your choosing to follow a
586 later version.
587
588 15. Disclaimer of Warranty.
589
590 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
591 APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
592 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
593 OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
594 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
595 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
596 IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
597 ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
598
599 16. Limitation of Liability.
600
601 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
602 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
603 THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
604 GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
605 USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
606 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
607 PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
608 EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
609 SUCH DAMAGES.
610
611 17. Interpretation of Sections 15 and 16.
612
613 If the disclaimer of warranty and limitation of liability provided
614 above cannot be given local legal effect according to their terms,
615 reviewing courts shall apply local law that most closely approximates
616 an absolute waiver of all civil liability in connection with the
617 Program, unless a warranty or assumption of liability accompanies a
618 copy of the Program in return for a fee.
619
620 END OF TERMS AND CONDITIONS
621
622
623
624 ADDITIONAL TERMS APPLICABLE TO THE RETURN TO CASTLE WOLFENSTEIN GPL SOURCE CODE.
625
626 The following additional terms (“Additional Terms”) supplement and modify the GNU General Public License, Version 3 (“GPL”) applicable to the Return to Castle Wolfenstein GPL Source Code (“RTCW Source Code”). In addition to the terms and conditions of the GPL, the RTCW Source Code is subject to the further restrictions below.
627
628 1. Replacement of Section 15. Section 15 of the GPL shall be deleted in its entirety and replaced with the following:
629
630 “15. Disclaimer of Warranty.
631
632 THE PROGRAM IS PROVIDED WITHOUT ANY WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, TITLE AND MERCHANTABILITY. THE PROGRAM IS BEING DELIVERED OR MADE AVAILABLE “AS IS”, “WITH ALL FAULTS” AND WITHOUT WARRANTY OR REPRESENTATION. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.”
633
634 2. Replacement of Section 16. Section 16 of the GPL shall be deleted in its entirety and replaced with the following:
635
636 “16. LIMITATION OF LIABILITY.
637
638 UNDER NO CIRCUMSTANCES SHALL ANY COPYRIGHT HOLDER OR ITS AFFILIATES, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, FOR ANY DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR PUNITIVE DAMAGES ARISING FROM, OUT OF OR IN CONNECTION WITH THE USE OR INABILITY TO USE THE PROGRAM OR OTHER DEALINGS WITH THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), WHETHER OR NOT ANY COPYRIGHT HOLDER OR SUCH OTHER PARTY RECEIVES NOTICE OF ANY SUCH DAMAGES AND WHETHER OR NOT SUCH DAMAGES COULD HAVE BEEN FORESEEN.”
639
640 3. LEGAL NOTICES; NO TRADEMARK LICENSE; ORIGIN. You must reproduce faithfully all trademark, copyright and other proprietary and legal notices on any copies of the Program or any other required author attributions. This license does not grant you rights to use any copyright holder or any other party’s name, logo, or trademarks. Neither the name of the copyright holder or its affiliates, or any other party who modifies and/or conveys the Program may be used to endorse or promote products derived from this software without specific prior written permission. The origin of the Program must not be misrepresented; you must not claim that you wrote the original Program. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original Program.
641
642 4. INDEMNIFICATION. IF YOU CONVEY A COVERED WORK AND AGREE WITH ANY RECIPIENT OF THAT COVERED WORK THAT YOU WILL ASSUME ANY LIABILITY FOR THAT COVERED WORK, YOU HEREBY AGREE TO INDEMNIFY, DEFEND AND HOLD HARMLESS THE OTHER LICENSORS AND AUTHORS OF THAT COVERED WORK FOR ANY DAMAEGS, DEMANDS, CLAIMS, LOSSES, CAUSES OF ACTION, LAWSUITS, JUDGMENTS EXPENSES (INCLUDING WITHOUT LIMITATION REASONABLE ATTORNEYS' FEES AND EXPENSES) OR ANY OTHER LIABLITY ARISING FROM, RELATED TO OR IN CONNECTION WITH YOUR ASSUMPTIONS OF LIABILITY.
3636 # Microsoft Visual Studio
3737 ####################
3838 *.sdf
39 *.opensdf
40 *.suo
22 #
33 # GNU Make required
44 #
5
65 COMPILE_PLATFORM=$(shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g')
76 COMPILE_ARCH=$(shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/')
8 ARM_VER_CHECK=$(shell uname -m)
97
108 ifeq ($(COMPILE_PLATFORM),sunos)
119 # Solaris uname and GNU uname differ
125123 export CROSS_COMPILING
126124
127125 ifndef VERSION
128 VERSION=1.51c-MP
126 VERSION=1.51d-MP
129127 endif
130128
131129 ifndef CLIENTBIN
261259 endif
262260
263261 ifndef DEBUG_CFLAGS
264 DEBUG_CFLAGS=-g -O0
262 DEBUG_CFLAGS=-ggdb -O0
265263 endif
266264
267265 ifndef USE_ANTIWALLHACK
310308 ZDIR=$(MOUNT_DIR)/zlib-1.2.11
311309 FTDIR=$(MOUNT_DIR)/freetype-2.9
312310 SPLDIR=$(MOUNT_DIR)/splines
311 TOOLSDIR=$(MOUNT_DIR)/tools
313312 Q3ASMDIR=$(MOUNT_DIR)/tools/asm
314313 LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg
315314 Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp
358357 endif
359358 endif
360359
360 # Add git version info
361 USE_GIT=
362 ifeq ($(wildcard ../.git),../.git)
363 GIT_REV=$(shell git show -s --pretty=format:%h-%ad --date=short)
364 ifneq ($(GIT_REV),)
365 VERSION:=$(VERSION)_GIT_$(GIT_REV)
366 USE_GIT=1
367 endif
368 endif
369
370
361371 #############################################################################
362372 # SETUP AND BUILD -- LINUX
363373 #############################################################################
364374
365 ## Defaults
366375 INSTALL=install
367376 MKDIR=mkdir -p
368377 EXTRA_FILES=
373382 endif
374383
375384 ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu" "gnu"))
376
377385 BASE_CFLAGS = -Wall -fno-strict-aliasing \
378386 -pipe -DUSE_ICON -DARCH_STRING=\\\"$(FILE_ARCH)\\\"
379387 CLIENT_CFLAGS += $(SDL_CFLAGS)
384392 ifeq ($(ARCH),x86_64)
385393 OPTIMIZEVM = -O3
386394 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
387 endif
395 else
388396 ifeq ($(ARCH),x86)
389397 OPTIMIZEVM = -O3 -march=i586
390398 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
391 endif
399 else
392400 ifeq ($(ARCH),ppc)
393401 ALTIVEC_CFLAGS = -maltivec
394402 endif
408416 # -ffast-math will cause the client to die with SIGFPE on Alpha
409417 OPTIMIZE = $(OPTIMIZEVM)
410418 endif
419 endif
420 endif
411421
412422 SHLIBEXT=so
413423 SHLIBCFLAGS=-fPIC -fvisibility=hidden
424434 ifeq ($(CROSS_COMPILING),1)
425435 ifeq ($(ARCH),x86)
426436 SDL_LIBS = $(LIBSDIR)/linux32/libSDL2main.a \
427 $(LIBSDIR)/linux32/libSDL2-2.0.so.0.9.0
437 $(LIBSDIR)/linux32/libSDL2-2.0.so.0.12.0
428438 endif
429439 ifeq ($(ARCH),x86_64)
430440 SDL_LIBS = $(LIBSDIR)/linux64/libSDL2main.a \
431 $(LIBSDIR)/linux64/libSDL2-2.0.so.0.9.0
441 $(LIBSDIR)/linux64/libSDL2-2.0.so.0.12.0
432442 endif
433443 endif
434444 endif
473483 LIBS = -framework Cocoa
474484 CLIENT_LIBS=
475485 RENDERER_LIBS=
476 OPTIMIZEVM= -O3
477
478 BASE_CFLAGS = -Wall
486 OPTIMIZEVM = -O3
487
488 # Default minimum Mac OS X version
489 ifeq ($(MACOSX_VERSION_MIN),)
490 MACOSX_VERSION_MIN=10.7
491 endif
492
493 MACOSX_MAJOR=$(shell echo $(MACOSX_VERSION_MIN) | cut -d. -f1)
494 MACOSX_MINOR=$(shell echo $(MACOSX_VERSION_MIN) | cut -d. -f2)
495 ifeq ($(shell test $(MACOSX_MINOR) -gt 9; echo $$?),0)
496 # Multiply and then remove decimal. 10.10 -> 101000.0 -> 101000
497 MAC_OS_X_VERSION_MIN_REQUIRED=$(shell echo "$(MACOSX_MAJOR) * 10000 + $(MACOSX_MINOR) * 100" | bc | cut -d. -f1)
498 else
499 # Multiply by 100 and then remove decimal. 10.7 -> 1070.0 -> 1070
500 MAC_OS_X_VERSION_MIN_REQUIRED=$(shell echo "$(MACOSX_VERSION_MIN) * 100" | bc | cut -d. -f1)
501 endif
502
503 LDFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)
504 BASE_CFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN) \
505 -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED)
479506
480507 ifeq ($(ARCH),ppc)
481 BASE_CFLAGS += -arch ppc -mmacosx-version-min=10.5 \
482 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060
508 BASE_CFLAGS += -arch ppc
483509 ALTIVEC_CFLAGS = -faltivec
484510 endif
485511 ifeq ($(ARCH),ppc64)
486 BASE_CFLAGS += -arch ppc64 -mmacosx-version-min=10.5 \
487 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060
512 BASE_CFLAGS += -arch ppc64
488513 ALTIVEC_CFLAGS = -faltivec
489514 endif
490515 ifeq ($(ARCH),x86)
491516 OPTIMIZEVM += -march=prescott -mfpmath=sse
492517 # x86 vm will crash without -mstackrealign since MMX instructions will be
493518 # used no matter what and they corrupt the frame pointer in VM calls
494 BASE_CFLAGS += -arch i386 -mstackrealign -mmacosx-version-min=10.6 \
495 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060
519 BASE_CFLAGS += -arch i386 -m32 -mstackrealign
496520 endif
497521 ifeq ($(ARCH),x86_64)
498522 OPTIMIZEVM += -mfpmath=sse
499 BASE_CFLAGS += -arch x86_64 -mmacosx-version-min=10.6 \
500 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060
523 BASE_CFLAGS += -arch x86_64
501524 endif
502525
503526 # When compiling on OSX for OSX, we're not cross compiling as far as the
508531 endif
509532
510533 ifeq ($(CROSS_COMPILING),1)
511 ifeq ($(ARCH),ppc)
512 CC=powerpc-apple-darwin10-gcc
513 RANLIB=powerpc-apple-darwin10-ranlib
534 ifeq ($(ARCH),x86_64)
535 CC=x86_64-apple-darwin13-cc
536 RANLIB=x86_64-apple-darwin13-ranlib
514537 else
515538 ifeq ($(ARCH),x86)
516 CC=i686-apple-darwin10-gcc
517 RANLIB=i686-apple-darwin10-ranlib
539 CC=i386-apple-darwin13-cc
540 RANLIB=i386-apple-darwin13-ranlib
518541 else
519542 $(error Architecture $(ARCH) is not supported when cross compiling)
520543 endif
524547 BASE_CFLAGS += -fno-strict-aliasing -fno-common -pipe
525548
526549 ifeq ($(USE_OPENAL),1)
550 ifneq ($(USE_LOCAL_HEADERS),1)
551 CLIENT_CFLAGS += -I/System/Library/Frameworks/OpenAL.framework/Headers
552 endif
527553 ifneq ($(USE_OPENAL_DLOPEN),1)
528554 ifneq ($(USE_INTERNAL_LIBS),1)
529555 CLIENT_CFLAGS += $(OPENAL_CFLAGS)
530556 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS)
557 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libopenal.dylib
531558 else
532559 CLIENT_LIBS += -framework OpenAL
533560 endif
543570
544571 BASE_CFLAGS += -D_THREAD_SAFE=1
545572
573 CLIENT_LIBS += -framework IOKit
574 RENDERER_LIBS += -framework OpenGL
575
546576 ifeq ($(USE_LOCAL_HEADERS),1)
577 # libSDL2-2.0.0.dylib for PPC is SDL 2.0.1 + changes to compile
547578 ifneq ($(findstring $(ARCH),ppc ppc64),)
548 CLIENT_CFLAGS += -I$(SDLHDIR)/include-2.0.1
579 BASE_CFLAGS += -I$(SDLHDIR)/include-2.0.1
549580 else
550 CLIENT_CFLAGS += -I$(SDLHDIR)/include
551 endif
552 else
553 CLIENT_CFLAGS += $(SDL_CFLAGS)
554 endif
555
556 # We copy sdlmain before ranlib'ing it so that subversion doesn't think
557 # the file has been modified by each build.
558 ifeq ($(USE_INTERNAL_LIBS),1)
581 BASE_CFLAGS += -I$(SDLHDIR)/include
582 endif
583
584 # We copy sdlmain before ranlib'ing it so that subversion doesn't think
585 # the file has been modified by each build.
559586 LIBSDLMAIN=$(B)/libSDL2main.a
560587 LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDL2main.a
561 CLIENT_LIBS += -framework IOKit $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
562 RENDERER_LIBS += -framework OpenGL $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
588 CLIENT_LIBS += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
589 RENDERER_LIBS += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
590 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
563591 else
564 CLIENT_LIBS += -framework IOKit $(SDL_LIBS)
565 RENDERER_LIBS += -framework OpenGL $(SDL_LIBS)
566 endif
567
568 ifeq ($(USE_INTERNAL_LIBS),1)
569 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib $(LIBSDIR)/macosx/libopenal.dylib
592 BASE_CFLAGS += -I/Library/Frameworks/SDL2.framework/Headers
593 CLIENT_LIBS += -framework SDL2
594 RENDERER_LIBS += -framework SDL2
570595 endif
571596
572597 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
634659 # using generic windres if specific one is not present
635660 ifndef WINDRES
636661 WINDRES=windres
637 endif
662 endif
638663
639664 ifeq ($(CC),)
640665 $(error Cannot find a suitable cross compiler for $(PLATFORM))
677702
678703 ifeq ($(COMPILE_PLATFORM),cygwin)
679704 TOOLS_BINEXT=.exe
680 TOOLS_CC=$(CC)
705
706 # Under cygwin the default of using gcc for TOOLS_CC won't work, so
707 # we need to figure out the appropriate compiler to use, based on the
708 # host architecture that we're running under (as tools run on the host)
709 ifeq ($(COMPILE_ARCH),x86_64)
710 TOOLS_MINGW_PREFIXES=x86_64-w64-mingw32 amd64-mingw32msvc
711 endif
712 ifeq ($(COMPILE_ARCH),x86)
713 TOOLS_MINGW_PREFIXES=i686-w64-mingw32 i586-mingw32msvc i686-pc-mingw32
714 endif
715
716 TOOLS_CC=$(firstword $(strip $(foreach TOOLS_MINGW_PREFIX, $(TOOLS_MINGW_PREFIXES), \
717 $(call bin_path, $(TOOLS_MINGW_PREFIX)-gcc))))
681718 endif
682719
683720 LIBS= -lws2_32 -lwinmm -lpsapi
710747 endif
711748 endif
712749
750
713751 # libmingw32 must be linked before libSDLmain
714752 CLIENT_LIBS += -lmingw32
715753 RENDERER_LIBS += -lmingw32
716754
717755 ifeq ($(USE_LOCAL_HEADERS),1)
718756 CLIENT_CFLAGS += -I$(SDLHDIR)/include
719 endif
720
721 ifeq ($(USE_INTERNAL_LIBS),1)
722757 ifeq ($(ARCH),x86)
723758 CLIENT_LIBS += $(LIBSDIR)/win32/libSDL2main.a \
724 $(LIBSDIR)/win32/libSDL2.dll.a
759 $(LIBSDIR)/win32/libSDL2.dll.a
725760 RENDERER_LIBS += $(LIBSDIR)/win32/libSDL2main.a \
726 $(LIBSDIR)/win32/libSDL2.dll.a
761 $(LIBSDIR)/win32/libSDL2.dll.a
727762 SDLDLL=SDL2.dll
728763 CLIENT_EXTRA_FILES += $(LIBSDIR)/win32/SDL2.dll $(LIBSDIR)/win32/OpenAL32.dll
729 endif
730 ifeq ($(ARCH),x86_64)
764 else
731765 CLIENT_LIBS += $(LIBSDIR)/win64/libSDL264main.a \
732 $(LIBSDIR)/win64/libSDL264.dll.a
766 $(LIBSDIR)/win64/libSDL264.dll.a
733767 RENDERER_LIBS += $(LIBSDIR)/win64/libSDL264main.a \
734 $(LIBSDIR)/win64/libSDL264.dll.a
768 $(LIBSDIR)/win64/libSDL264.dll.a
735769 SDLDLL=SDL264.dll
736770 CLIENT_EXTRA_FILES += $(LIBSDIR)/win64/SDL264.dll $(LIBSDIR)/win64/OpenAL64.dll
737771 endif
745779 else # ifdef MINGW
746780
747781 #############################################################################
748 # SETUP AND BUILD -- *BSD (is dying)
749 #############################################################################
750
751 ifneq (,$(findstring "$(PLATFORM)", "freebsd" "openbsd" "netbsd"))
752
753 BASE_CFLAGS = -Wall -fno-strict-aliasing \
782 # SETUP AND BUILD -- FREEBSD
783 #############################################################################
784
785 ifeq ($(PLATFORM),freebsd)
786
787 # flags
788 BASE_CFLAGS = \
789 -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
790 -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON
791 CLIENT_CFLAGS += $(SDL_CFLAGS)
792
793 OPTIMIZEVM =
794 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
795
796 SHLIBEXT=so
797 SHLIBCFLAGS=-fPIC
798 SHLIBLDFLAGS=-shared $(LDFLAGS)
799
800 THREAD_LIBS=-lpthread
801 # don't need -ldl (FreeBSD)
802 LIBS=-lm
803
804 CLIENT_LIBS =
805
806 CLIENT_LIBS += $(SDL_LIBS)
807 RENDERER_LIBS = $(SDL_LIBS)
808
809 # optional features/libraries
810 ifeq ($(USE_OPENAL),1)
811 ifeq ($(USE_OPENAL_DLOPEN),1)
812 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS)
813 endif
814 endif
815
816 ifeq ($(USE_CURL),1)
817 CLIENT_CFLAGS += $(CURL_CFLAGS)
818 ifeq ($(USE_CURL_DLOPEN),1)
819 CLIENT_LIBS += $(CURL_LIBS)
820 endif
821 endif
822
823 # cross-compiling tweaks
824 ifeq ($(ARCH),x86)
825 ifeq ($(CROSS_COMPILING),1)
826 BASE_CFLAGS += -m32
827 endif
828 endif
829 ifeq ($(ARCH),x86_64)
830 ifeq ($(CROSS_COMPILING),1)
831 BASE_CFLAGS += -m64
832 endif
833 endif
834 else # ifeq freebsd
835
836 #############################################################################
837 # SETUP AND BUILD -- OPENBSD
838 #############################################################################
839
840 ifeq ($(PLATFORM),openbsd)
841
842 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
754843 -pipe -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON
755844 CLIENT_CFLAGS += $(SDL_CFLAGS)
756845
760849 ifeq ($(ARCH),x86_64)
761850 OPTIMIZEVM = -O3
762851 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
763 FILE_ARCH = amd64
764 endif
852 else
765853 ifeq ($(ARCH),x86)
766854 OPTIMIZEVM = -O3 -march=i586
767855 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
768 endif
856 else
769857 ifeq ($(ARCH),ppc)
770858 ALTIVEC_CFLAGS = -maltivec
771859 endif
772860 ifeq ($(ARCH),ppc64)
773861 ALTIVEC_CFLAGS = -maltivec
774 endif
775 ifeq ($(ARCH),sparc)
776 OPTIMIZE += -mtune=ultrasparc3 -mv8plus
777 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus
778862 endif
779863 ifeq ($(ARCH),sparc64)
780864 OPTIMIZE += -mtune=ultrasparc3 -mv8plus
785869 # -ffast-math will cause the client to die with SIGFPE on Alpha
786870 OPTIMIZE = $(OPTIMIZEVM)
787871 endif
872 endif
873 endif
788874
789875 ifeq ($(USE_CURL),1)
790876 CLIENT_CFLAGS += $(CURL_CFLAGS)
791877 USE_CURL_DLOPEN=0
792878 endif
793879
880 # no shm_open on OpenBSD
881 USE_MUMBLE=0
882
794883 SHLIBEXT=so
795884 SHLIBCFLAGS=-fPIC
796885 SHLIBLDFLAGS=-shared $(LDFLAGS)
814903 CLIENT_LIBS += $(CURL_LIBS)
815904 endif
816905 endif
817 else # ifeq *BSD
906 else # ifeq openbsd
907
908 #############################################################################
909 # SETUP AND BUILD -- NETBSD
910 #############################################################################
911
912 ifeq ($(PLATFORM),netbsd)
913
914 LIBS=-lm
915 SHLIBEXT=so
916 SHLIBCFLAGS=-fPIC
917 SHLIBLDFLAGS=-shared $(LDFLAGS)
918 THREAD_LIBS=-lpthread
919
920 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
921
922 ifeq ($(ARCH),x86)
923 HAVE_VM_COMPILED=true
924 endif
925
926 BUILD_CLIENT = 0
927 else # ifeq netbsd
818928
819929 #############################################################################
820930 # SETUP AND BUILD -- IRIX
865975 -pipe -DUSE_ICON
866976 CLIENT_CFLAGS += $(SDL_CFLAGS)
867977
868 OPTIMIZEVM = -O3
978 OPTIMIZEVM = -O3 -funroll-loops
869979
870980 ifeq ($(ARCH),sparc)
871 OPTIMIZEVM += -O3 -mtune=ultrasparc3 -mv8plus -mno-faster-structs
872 endif
981 OPTIMIZEVM += -O3 \
982 -fstrength-reduce -falign-functions=2 \
983 -mtune=ultrasparc3 -mv8plus -mno-faster-structs
984 else
873985 ifeq ($(ARCH),x86)
874 OPTIMIZEVM += -march=i586
986 OPTIMIZEVM += -march=i586 -fomit-frame-pointer \
987 -falign-functions=2 -fstrength-reduce
988 BASE_CFLAGS += -m32
875989 CLIENT_CFLAGS += -I/usr/X11/include/NVIDIA
876990 CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
991 endif
877992 endif
878993
879994 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
8951010 #############################################################################
8961011 # SETUP AND BUILD -- GENERIC
8971012 #############################################################################
898 BASE_CFLAGS =
1013 BASE_CFLAGS=
8991014 OPTIMIZE = -O3
9001015
9011016 SHLIBEXT=so
9051020 endif #Linux
9061021 endif #darwin
9071022 endif #MINGW
908 endif #*BSD
1023 endif #FreeBSD
1024 endif #OpenBSD
1025 endif #NetBSD
9091026 endif #IRIX
9101027 endif #SunOS
9111028
9441061 HAVE_VM_COMPILED=false
9451062 endif
9461063
947 ifneq ($(findstring $(ARCH),x86 x86_64 ppc ppc64 sparc sparc64),)
948 HAVE_VM_COMPILED=true
949 endif
950
951 ifeq ($(ARM_VER_CHECK),armv7l)
1064 ifneq ($(findstring $(ARCH),armv7l x86 x86_64 ppc ppc64 sparc sparc64),)
9521065 HAVE_VM_COMPILED=true
9531066 endif
9541067
10451158
10461159 ifeq ($(NEED_OPUS),1)
10471160 ifeq ($(USE_INTERNAL_OPUS),1)
1048 OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOAT_APPROX -DUSE_ALLOCA \
1161 OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA \
10491162 -I$(OPUSDIR)/include -I$(OPUSDIR)/celt -I$(OPUSDIR)/silk \
10501163 -I$(OPUSDIR)/silk/float -I$(OPUSFILEDIR)/include
10511164 else
11071220 BASE_CFLAGS += -DUSE_INTERNAL_JPEG
11081221 BASE_CFLAGS += -I$(JPDIR)
11091222 else
1110 # IJG libjpeg doesn't have $(PKG_CONFIG), but libjpeg-turbo uses libjpeg.pc;
1223 # IJG libjpeg doesn't have pkg-config, but libjpeg-turbo uses libjpeg.pc;
11111224 # we fall back to hard-coded answers if libjpeg.pc is unavailable
11121225 JPEG_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags libjpeg || true)
11131226 JPEG_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs libjpeg || echo -ljpeg)
12151328 define DO_REF_STR
12161329 $(echo_cmd) "REF_STR $<"
12171330 $(Q)rm -f $@
1218 $(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@
1219 $(Q)cat $< | sed -e 's/^/\"/;s/$$/\\n\"/' | tr -d '\r' >> $@
1220 $(Q)echo ";" >> $@
1331 $(Q)$(STRINGIFY) $< $@
12211332 endef
12221333
12231334 define DO_BOT_CC
13471458 @echo " PKG_CONFIG: $(PKG_CONFIG)"
13481459 @echo " CC: $(CC)"
13491460 @echo " CXX: $(CXX)"
1350 ifdef MINGW
1461 ifeq ($(PLATFORM),mingw32)
13511462 @echo " WINDRES: $(WINDRES)"
13521463 endif
13531464 @echo ""
13601471 @echo " SERVER_CFLAGS:"
13611472 $(call print_wrapped, $(SERVER_CFLAGS))
13621473 @echo ""
1474 @echo " TOOLS_CFLAGS:"
1475 $(call print_wrapped, $(TOOLS_CFLAGS))
1476 @echo ""
13631477 @echo " LDFLAGS:"
1364 ifneq ($(LDFLAGS),)
13651478 $(call print_wrapped, $(LDFLAGS))
1366 endif
13671479 @echo ""
13681480 @echo " LIBS:"
13691481 $(call print_wrapped, $(LIBS))
13891501 endif
13901502
13911503 $(B).zip: $(TARGETS)
1504 ifeq ($(PLATFORM),darwin)
1505 ifdef ARCHIVE
1506 @("./make-macosx-app.sh" release $(ARCH); if [ "$$?" -eq 0 ] && [ -d "$(B)/iowolfmp.app" ]; then rm -f $@; cd $(B) && zip --symlinks -r9 ../../$@ `find "iowolfmp.app" -print | sed -e "s!$(B)/!!g"`; else rm -f $@; cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS); fi)
1507 endif
1508 endif
1509 ifneq ($(PLATFORM),darwin)
1510 ifdef ARCHIVE
13921511 @rm -f $@
13931512 @(cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS))
1513 endif
1514 endif
13941515
13951516 makedirs:
13961517 @$(MKDIR) $(B)/splines
14581579 Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT)
14591580 Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT)
14601581 Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT)
1582 STRINGIFY = $(B)/tools/stringify$(TOOLS_BINEXT)
14611583
14621584 LBURGOBJ= \
14631585 $(B)/tools/lburg/lburg.o \
15501672 $(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP)
15511673 $(echo_cmd) "LD $@"
15521674 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS)
1675
1676 $(STRINGIFY): $(TOOLSDIR)/stringify.c
1677 $(echo_cmd) "TOOLS_CC $@"
1678 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(TOOLSDIR)/stringify.c $(TOOLS_LIBS)
15531679
15541680 define DO_Q3LCC
15551681 $(echo_cmd) "Q3LCC $<"
21492275
21502276 ifeq ($(HAVE_VM_COMPILED),true)
21512277 ifneq ($(findstring $(ARCH),x86 x86_64),)
2152 Q3OBJ += $(B)/client/vm_x86.o
2278 Q3OBJ += \
2279 $(B)/client/vm_x86.o
21532280 endif
21542281 ifneq ($(findstring $(ARCH),ppc ppc64),)
21552282 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o
21572284 ifneq ($(findstring $(ARCH),sparc sparc64),)
21582285 Q3OBJ += $(B)/client/vm_sparc.o
21592286 endif
2160 ifeq ($(ARM_VER_CHECK),armv7l)
2287 ifeq ($(ARCH),armv7l)
21612288 Q3OBJ += $(B)/client/vm_armv7l.o
21622289 endif
21632290 endif
23242451
23252452 ifeq ($(HAVE_VM_COMPILED),true)
23262453 ifneq ($(findstring $(ARCH),x86 x86_64),)
2327 Q3DOBJ += $(B)/ded/vm_x86.o
2454 Q3DOBJ += \
2455 $(B)/ded/vm_x86.o
23282456 endif
23292457 ifneq ($(findstring $(ARCH),ppc ppc64),)
23302458 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o
23322460 ifneq ($(findstring $(ARCH),sparc sparc64),)
23332461 Q3DOBJ += $(B)/ded/vm_sparc.o
23342462 endif
2335 ifeq ($(ARM_VER_CHECK),armv7l)
2463 ifeq ($(ARCH),armv7l)
23362464 Q3DOBJ += $(B)/ded/vm_armv7l.o
23372465 endif
23382466 endif
24042532 ifdef MINGW
24052533 $(B)/$(BASEGAME)/cgame_mp_$(SHLIBNAME): $(Q3CGOBJ)
24062534 $(echo_cmd) "LD $@"
2407 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
2535 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) $(LIBS)
24082536 else
24092537 $(B)/$(BASEGAME)/cgame.mp.$(SHLIBNAME): $(Q3CGOBJ)
24102538 $(echo_cmd) "LD $@"
2411 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
2539 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) $(LIBS)
24122540 endif
24132541 $(B)/$(BASEGAME)/vm/cgame.mp.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
24142542 $(echo_cmd) "Q3ASM $@"
24792607 ifdef MINGW
24802608 $(B)/$(BASEGAME)/qagame_mp_$(SHLIBNAME): $(Q3GOBJ)
24812609 $(echo_cmd) "LD $@"
2482 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
2610 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) $(LIBS)
24832611 else
24842612 $(B)/$(BASEGAME)/qagame.mp.$(SHLIBNAME): $(Q3GOBJ)
24852613 $(echo_cmd) "LD $@"
2486 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
2614 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) $(LIBS)
24872615 endif
24882616 $(B)/$(BASEGAME)/vm/qagame.mp.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
24892617 $(echo_cmd) "Q3ASM $@"
25132641 ifdef MINGW
25142642 $(B)/$(BASEGAME)/ui_mp_$(SHLIBNAME): $(Q3UIOBJ)
25152643 $(echo_cmd) "LD $@"
2516 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
2644 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(LIBS)
25172645 else
25182646 $(B)/$(BASEGAME)/ui.mp.$(SHLIBNAME): $(Q3UIOBJ)
25192647 $(echo_cmd) "LD $@"
2520 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
2648 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(LIBS)
25212649 endif
25222650 $(B)/$(BASEGAME)/vm/ui.mp.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
25232651 $(echo_cmd) "Q3ASM $@"
26042732 $(B)/renderer/tr_altivec.o: $(RDIR)/tr_altivec.c
26052733 $(DO_REF_CC_ALTIVEC)
26062734
2607 $(B)/rend2/glsl/%.c: $(R2DIR)/glsl/%.glsl
2735 $(B)/rend2/glsl/%.c: $(R2DIR)/glsl/%.glsl $(STRINGIFY)
26082736 $(DO_REF_STR)
26092737
26102738 $(B)/rend2/glsl/%.o: $(B)/rend2/glsl/%.c
27162844 $(B)/ded/%.o: $(NDIR)/%.c
27172845 $(DO_DED_CC)
27182846
2847 # Extra dependencies to ensure the git version is incorporated
2848 ifeq ($(USE_GIT),1)
2849 $(B)/client/cl_console.o : ../.git
2850 $(B)/client/common.o : ../.git
2851 $(B)/ded/common.o : ../.git
2852 endif
2853
2854
27192855 #############################################################################
27202856 ## GAME MODULE RULES
27212857 #############################################################################
27662902 $(Q3GVMOBJ) $(Q3CGVMOBJ) $(Q3UIVMOBJ)
27672903 TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ)
27682904 STRINGOBJ = $(Q3R2STRINGOBJ)
2905
27692906
27702907 copyfiles: release
27712908 @if [ ! -d $(COPYDIR)/$(BASEGAME) ]; then echo "You need to set COPYDIR to where your RTCW data is!"; fi
28332970 @echo "TOOLS_CLEAN $(B)"
28342971 @rm -f $(TOOLSOBJ)
28352972 @rm -f $(TOOLSOBJ_D_FILES)
2836 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM)
2973 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) $(STRINGIFY)
28372974
28382975 distclean: clean toolsclean
28392976 @rm -rf $(BUILD_DIR)
2727 ; Call to compiled code after setting up the register environment for the VM
2828 ; prototype:
2929 ; uint8_t qvmcall64(int *programStack, int *opStack, intptr_t *instructionPointers, byte *dataBase);
30 ;
31 ; This call-stub has its own custom calling convention due to pushing all non-volatile registers
32 ; to the stack. The game uses set/longjmp which on Windows uses "RtlUnwindEx" to unwind the callstack.
33 ; This function cannot be unwound by default due to the custom calling convention.
34 ; To allow unwinding, we need to add custom SEH unwind data to the function.
3035
31 qvmcall64 PROC
32 push rsi ; push non-volatile registers to stack
36 qvmcall64 PROC FRAME
37 push r12 ; push all non-volatile registers to stack
38 .pushreg r12
39 push r13
40 .pushreg r13
41 push r14
42 .pushreg r14
43 push r15
44 .pushreg r15
3345 push rdi
46 .pushreg rdi
47 push rsi
48 .pushreg rsi
3449 push rbx
50 .pushreg rbx
51 push rbp
52 .pushreg rbp
53
3554 ; need to save pointer in rcx so we can write back the programData value to caller
3655 push rcx
56 .pushreg rcx
57
58 .endprolog ; custom unwind data ends here
3759
3860 ; registers r8 and r9 have correct value already thanx to __fastcall
3961 xor rbx, rbx ; opStackOfs starts out being 0
4769 mov dword ptr [rcx], esi ; write back the programStack value
4870 mov al, bl ; return opStack offset
4971
72 pop rbp ; restore all non-volatile registers after the call
5073 pop rbx
74 pop rsi
5175 pop rdi
52 pop rsi
76 pop r15
77 pop r14
78 pop r13
79 pop r12
5380
5481 ret
5582 qvmcall64 ENDP
640640 for ( li = levelitems; li; li = li->next )
641641 {
642642 if ( li->number == number ) {
643 strncpy( name, itemconfig->iteminfo[li->iteminfo].name, size - 1 );
644 name[size - 1] = '\0';
643 Q_strncpyz( name, itemconfig->iteminfo[li->iteminfo].name, size );
645644 return;
646645 } //end for
647646 } //end for
25462546
25472547
25482548 // make sure we aren't looking at cg.predictedPlayerEntity for LG
2549 nonPredictedCent = &cg_entities[cent->currentState.clientNum];
2549 nonPredictedCent = &cg_entities[cent->currentState.number];
25502550
25512551 // if the index of the nonPredictedCent is not the same as the clientNum
25522552 // then this is a fake player (like on the single player podiums), so
34403440 Com_Printf( "%s", msg );
34413441 } else if ( print_level == PRINT_WARNING ) {
34423442 Com_Printf( S_COLOR_YELLOW "%s", msg ); // yellow
3443 } else if ( print_level == PRINT_ERROR ) {
3444 Com_Printf (S_COLOR_RED "%s", msg); // red
34433445 } else if ( print_level == PRINT_DEVELOPER ) {
3444 Com_DPrintf( S_COLOR_RED "%s", msg ); // red
3446 Com_DPrintf( S_COLOR_RED "%s", msg ); // red - developer only
34453447 }
34463448 }
34473449
53925394 memset( t, 0, sizeof( trans_t ) );
53935395
53945396 if ( original ) {
5395 strncpy( t->original, original, MAX_TRANS_STRING );
5397 Q_strncpyz( t->original, original, MAX_TRANS_STRING );
53965398 }
53975399
53985400 if ( translated ) {
53995401 for ( i = 0; i < MAX_LANGUAGES; i++ )
5400 strncpy( t->translated[i], translated[i], MAX_TRANS_STRING );
5402 Q_strncpyz( t->translated[i], translated[i], MAX_TRANS_STRING );
54015403 }
54025404
54035405 return t;
57565758 t->fromFile = qtrue;
57575759
57585760 for ( i = 0; i < MAX_LANGUAGES; i++ )
5759 strncpy( t->translated[i], translated[i], MAX_TRANS_STRING );
5761 Q_strncpyz( t->translated[i], translated[i], MAX_TRANS_STRING );
57605762 }
57615763
57625764 token = COM_Parse( &text_p );
196196 else if (val < -32767) /* clamp to one less than max to make division max out at -1.0f. */
197197 val = -32767;
198198 out[out_idx] = ((float) val) / 32767.0f;
199 out_idx = (out_idx + 1) % dma.samples;
199200 }
200201 }
201202 else if (dma.samplebits == 16)
549550 // paint in the channels.
550551 ch = s_channels;
551552 for ( i = 0; i < MAX_CHANNELS ; i++, ch++ ) {
552 if ( !ch->thesfx || (ch->leftvol<0.25 && ch->rightvol<0.25 )) {
553 if ( ch->startSample == START_SAMPLE_IMMEDIATE || !ch->thesfx || (ch->leftvol<0.25 && ch->rightvol<0.25 )) {
553554 continue;
554555 }
555556
19891989 if ( BotSameTeam( bs, i ) ) {
19901990 shootbutton = qfalse;
19911991 break;
1992 } else if (bs->enemy == i) {
1992 } else if (gametype < GT_CTF || bs->enemy == i) {
19931993 shootbutton = qtrue;
19941994 }
19951995 }
19031903 return;
19041904 }
19051905
1906 traceEnt = &g_entities[ tr.entityNum ];
1907
1908 if ( traceEnt->classname && Q_stricmp( traceEnt->classname, "trigger_hurt" ) == 0 ) {
1909 // ignore trigger_hurt so it's possible to pickup chalice (-1472 -3472 284) at the end of map crypt2
1910 trap_Trace( &tr, tr.endpos, NULL, NULL, end, tr.entityNum, ( CONTENTS_SOLID | CONTENTS_BODY | CONTENTS_CORPSE | CONTENTS_TRIGGER ) );
1911
1912 // muzzle and trigger_hurt are in player bbox?
1913 if ( tr.entityNum == ent->s.number ) {
1914 return;
1915 }
1916 }
1917
1918 if ( tr.surfaceFlags & SURF_NOIMPACT ) {
1919 return;
1920 }
1921
19061922 if ( tr.entityNum == ENTITYNUM_WORLD ) {
19071923 return;
19081924 }
491491
492492 trap_Trace( tr, offset, NULL, NULL, end, ps->clientNum, trace_contents );
493493 // dhm - end
494
495 traceEnt = &g_entities[tr->entityNum];
496
497 if ( traceEnt->classname && Q_stricmp( traceEnt->classname, "trigger_hurt" ) == 0 ) {
498 // ignore trigger_hurt so it's possible to pickup chalice (-1472 -3472 284) at the end of map crypt2
499 trap_Trace( tr, tr->endpos, NULL, NULL, end, tr->entityNum, trace_contents );
500
501 // muzzle and trigger_hurt are in player bbox?
502 if ( tr->entityNum == ps->clientNum ) {
503 tr->entityNum = ENTITYNUM_NONE;
504 tr->fraction = 1;
505 }
506 }
494507
495508 // reset all
496509 hintType = ps->serverCursorHint = HINT_NONE;
24992499
25002500 FS_SV_FOpenFileRead( fbuffer, &f );
25012501 if ( !f ) {
2502 Q_strncpyz( cl_cdkey, " ", 17 );
2502 Com_Memset( cl_cdkey, '\0', 17 );
25032503 return;
25042504 }
25052505
25112511 if ( CL_CDKeyValidate( buffer, NULL ) ) {
25122512 Q_strncpyz( cl_cdkey, buffer, 17 );
25132513 } else {
2514 Q_strncpyz( cl_cdkey, " ", 17 );
2514 Com_Memset( cl_cdkey, '\0', 17 );
25152515 }
25162516 }
25172517
25292529
25302530 FS_SV_FOpenFileRead( fbuffer, &f );
25312531 if ( !f ) {
2532 Q_strncpyz( &cl_cdkey[16], " ", 17 );
2532 Com_Memset( &cl_cdkey[16], '\0', 17 );
25332533 return;
25342534 }
25352535
25412541 if ( CL_CDKeyValidate( buffer, NULL ) ) {
25422542 strcat( &cl_cdkey[16], buffer );
25432543 } else {
2544 Q_strncpyz( &cl_cdkey[16], " ", 17 );
2544 Com_Memset( &cl_cdkey[16], '\0', 17 );
25452545 }
25462546 }
25472547
32283228 numfiles = MAX_PAKFILES;
32293229 }
32303230 for ( i = 0 ; i < numfiles ; i++ ) {
3231 sorted[i] = pakfiles[i];
3232 // JPW NERVE KLUDGE: sorry, temp mod mp_* to _p_* so "mp_pak*" gets alphabetically sorted before "pak*"
3233
3234 if ( !Q_strncmp( sorted[i],"mp_",3 ) ) {
3235 memcpy( sorted[i],"zz",2 );
3236 }
3237
3238 // jpw
3231 if ( pakfiles ) {
3232 sorted[i] = pakfiles[i];
3233
3234 // JPW NERVE KLUDGE: sorry, temp mod mp_* to _p_* so "mp_pak*" gets alphabetically sorted before "pak*"
3235 if ( !Q_strncmp( sorted[i],"mp_",3 ) ) {
3236 memcpy( sorted[i],"zz",2 );
3237 }
3238 // jpw
3239 }
32393240 }
32403241
32413242 qsort( sorted, numfiles, sizeof(char*), paksort );
32423243
32433244 for ( i = 0 ; i < numfiles ; i++ ) {
32443245 if ( Q_strncmp( sorted[i],"sp_",3 ) ) { // JPW NERVE -- exclude sp_*
3245 // JPW NERVE KLUDGE: fix filenames broken in mp/sp/pak sort above
3246
3246 // JPW NERVE KLUDGE: fix filenames broken in mp/sp/pak sort above
32473247 if ( !Q_strncmp( sorted[i],"zz_",3 ) ) {
32483248 memcpy( sorted[i],"mp",2 );
32493249 }
3250
3251 // jpw
3250 // jpw
32523251 pakfile = FS_BuildOSPath( path, dir, sorted[i] );
32533252 if ( ( pak = FS_LoadZipFile( pakfile, sorted[i] ) ) == 0 ) {
32543253 continue;
228228 #define ARCH_STRING "amd64"
229229 #elif defined __axp__
230230 #define ARCH_STRING "alpha"
231 #elif defined __powerpc64__
232 #define ARCH_STRING "powerpc64"
233 #elif defined __powerpc__
234 #define ARCH_STRING "powerpc"
231235 #endif
232236
233237 #if BYTE_ORDER == BIG_ENDIAN
139139 *out = 0;
140140 }
141141
142 /*
143 ============
144 COM_StripFilename
145 ============
146 */
142147 void COM_StripFilename( char *in, char *out ) {
143148 char *end;
144 Q_strncpyz( out, in, strlen( in ) );
149 memcpy( out, in, strlen( in ) );
145150 end = COM_SkipPath( out );
146151 *end = 0;
147152 }
8787 #define LEGACY_HEARTBEAT_FOR_MASTER "Wolfenstein-1"
8888
8989 #ifndef PRODUCT_VERSION
90 #define PRODUCT_VERSION "1.51c-MP"
90 #define PRODUCT_VERSION "1.51d-MP"
9191 #endif
9292
9393 #ifndef OLD_PRODUCT_VERSION
415415 typedef vec_t vec4_t[4];
416416 typedef vec_t vec5_t[5];
417417
418 typedef vec_t quat_t[4];
419
418420 typedef int fixed4_t;
419421 typedef int fixed8_t;
420422 typedef int fixed16_t;
641643 #define Vector4Average( v, b, s, o ) ( ( o )[0] = ( ( v )[0] * ( 1 - ( s ) ) ) + ( ( b )[0] * ( s ) ),( o )[1] = ( ( v )[1] * ( 1 - ( s ) ) ) + ( ( b )[1] * ( s ) ),( o )[2] = ( ( v )[2] * ( 1 - ( s ) ) ) + ( ( b )[2] * ( s ) ),( o )[3] = ( ( v )[3] * ( 1 - ( s ) ) ) + ( ( b )[3] * ( s ) ) )
642644
643645 #define Byte4Copy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3])
646
647 #define QuatCopy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3])
644648
645649 #define SnapVector( v ) {v[0] = ( (int)( v[0] ) ); v[1] = ( (int)( v[1] ) ); v[2] = ( (int)( v[2] ) );}
646650
8787
8888 // current size of search window
8989 float size = 1.0 / float(linearSearchSteps);
90
91 // adjust position if offset above surface
92 dp -= ds * r_parallaxMapOffset;
9093
9194 // current depth position
9295 float depth = 0.0;
140143 }
141144 #endif
142145
143 return bestDepth;
146 return bestDepth - r_parallaxMapOffset;
144147 }
145148
146149 float LightRay(vec2 dp, vec2 ds, sampler2D normalMap)
200203 float rr = roughness*roughness;
201204 float rrrr = rr*rr;
202205 float d = (NH * NH) * (rrrr - 1.0) + 1.0;
203 float v = (EH * EH) * (roughness + 0.5);
206 float v = (EH * EH) * (roughness + 0.5) + EPSILON;
204207 return specular * (rrrr / (4.0 * d * d * v));
205208 }
206209
221224 return attenuation;
222225 }
223226
224 #if defined(USE_BOX_CUBEMAP_PARALLAX) && __VERSION__ >= 130
227 #if defined(USE_BOX_CUBEMAP_PARALLAX)
225228 vec4 hitCube(vec3 ray, vec3 pos, vec3 invSize, float lod, samplerCube tex)
226229 {
227230 // find any hits on cubemap faces facing the camera
260263 float NL, NH, NE, EH, attenuation;
261264
262265 #if defined(USE_LIGHT) && !defined(USE_FAST_LIGHT)
263 mat3 tangentToWorld = mat3(var_Tangent.xyz, var_Bitangent.xyz, var_Normal.xyz);
266 vec3 surfNormal = (!gl_FrontFacing ? var_Normal : -var_Normal).xyz;
267 mat3 tangentToWorld = mat3(var_Tangent.xyz, var_Bitangent.xyz, surfNormal);
264268 viewDir = vec3(var_Normal.w, var_Tangent.w, var_Bitangent.w);
265269 E = normalize(viewDir);
266270 #endif
331335 N.z = sqrt(clamp((0.25 - N.x * N.x) - N.y * N.y, 0.0, 1.0));
332336 N = tangentToWorld * N;
333337 #else
334 N = var_Normal.xyz;
338 N = surfNormal;
335339 #endif
336340
337341 N = normalize(N);
357361
358362 #if !defined(USE_LIGHT_VECTOR)
359363 ambientColor = lightColor;
360 float surfNL = clamp(dot(var_Normal.xyz, L), 0.0, 1.0);
364 float surfNL = clamp(dot(surfNormal, L), 0.0, 1.0);
361365
362366 // reserve 25% ambient to avoid black areas on normalmaps
363367 lightColor *= 0.75;
11421142
11431143 if (r_parallaxMapShadows->integer)
11441144 Q_strcat(extradefines, 1024, "#define USE_PARALLAXMAP_SHADOWS\n");
1145
1146 Q_strcat(extradefines, 1024, va("#define r_parallaxMapOffset %f\n", r_parallaxMapOffset->value));
11451147 }
11461148 }
11471149
17801780 }
17811781 else if(lightMap)
17821782 {
1783 if(r_greyscale->integer)
1783 // GL_LUMINANCE is not valid for OpenGL 3.2 Core context and
1784 // everything becomes solid black
1785 if(0 && r_greyscale->integer)
17841786 internalFormat = GL_LUMINANCE;
17851787 else
17861788 internalFormat = GL_RGBA;
17951797 // select proper internal format
17961798 if ( samples == 3 )
17971799 {
1798 if(r_greyscale->integer)
1800 if(0 && r_greyscale->integer)
17991801 {
18001802 if(r_texturebits->integer == 16 || r_texturebits->integer == 32)
18011803 internalFormat = GL_LUMINANCE8;
18321834 }
18331835 else if ( samples == 4 )
18341836 {
1835 if(r_greyscale->integer)
1837 if(0 && r_greyscale->integer)
18361838 {
18371839 if(r_texturebits->integer == 16 || r_texturebits->integer == 32)
18381840 internalFormat = GL_LUMINANCE8_ALPHA8;
22882290 case GL_DEPTH_COMPONENT32_ARB:
22892291 // Fix for sampling depth buffer on old nVidia cards.
22902292 // from http://www.idevgames.com/forums/thread-4141-post-34844.html#pid34844
2291 qglTextureParameterfEXT(image->texnum, textureTarget, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
2293 if ( !QGL_VERSION_ATLEAST( 3, 0 ) ) {
2294 qglTextureParameterfEXT(image->texnum, textureTarget, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
2295 }
22922296 qglTextureParameterfEXT(image->texnum, textureTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
22932297 qglTextureParameterfEXT(image->texnum, textureTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
22942298 break;
3636 qboolean textureFilterAnisotropic = qfalse;
3737 int maxAnisotropy = 0;
3838 float displayAspect = 0.0f;
39 qboolean haveClampToEdge = qfalse;
3940
4041 glstate_t glState;
4142
149150 cvar_t *r_specularMapping;
150151 cvar_t *r_deluxeMapping;
151152 cvar_t *r_parallaxMapping;
153 cvar_t *r_parallaxMapOffset;
152154 cvar_t *r_parallaxMapShadows;
153155 cvar_t *r_cubeMapping;
154156 cvar_t *r_cubemapSize;
357359 if ( glRefConfig.glslMaxAnimatedBones < 12 ) {
358360 glRefConfig.glslMaxAnimatedBones = 0;
359361 }
362 }
363
364 // check for GLSL function textureCubeLod()
365 if ( r_cubeMapping->integer && !QGL_VERSION_ATLEAST( 3, 0 ) ) {
366 ri.Printf( PRINT_WARNING, "WARNING: Disabled r_cubeMapping because it requires OpenGL 3.0\n" );
367 ri.Cvar_Set( "r_cubeMapping", "0" );
360368 }
361369
362370 // set default state
11241132 */
11251133 void R_PrintLongString(const char *string) {
11261134 char buffer[1024];
1127 const char *p = string;
1128 int remainingLength = strlen(string);
1129
1130 while (remainingLength > 0)
1135 const char *p;
1136 int size = strlen(string);
1137
1138 p = string;
1139 while(size > 0)
11311140 {
1132 // Take as much characters as possible from the string without splitting words between buffers
1133 // This avoids the client console splitting a word up when one half fits on the current line,
1134 // but the second half would have to be written on a new line
1135 int charsToTake = sizeof(buffer) - 1;
1136 if (remainingLength > charsToTake) {
1137 while (p[charsToTake - 1] > ' ' && p[charsToTake] > ' ') {
1138 charsToTake--;
1139 if (charsToTake == 0) {
1140 charsToTake = sizeof(buffer) - 1;
1141 break;
1142 }
1143 }
1144 } else if (remainingLength < charsToTake) {
1145 charsToTake = remainingLength;
1146 }
1147
1148 Q_strncpyz( buffer, p, charsToTake + 1 );
1141 Q_strncpyz(buffer, p, sizeof (buffer) );
11491142 ri.Printf( PRINT_ALL, "%s", buffer );
1150 remainingLength -= charsToTake;
1151 p += charsToTake;
1143 p += 1023;
1144 size -= 1023;
11521145 }
11531146 }
11541147
11731166 ri.Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string );
11741167 ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string );
11751168 ri.Printf( PRINT_ALL, "GL_EXTENSIONS: " );
1169 // glConfig.extensions_string is a limited length so get the full list directly
11761170 if ( qglGetStringi )
11771171 {
11781172 GLint numExtensions;
11861180 }
11871181 else
11881182 {
1189 R_PrintLongString( glConfig.extensions_string );
1183 R_PrintLongString( (char *) qglGetString( GL_EXTENSIONS ) );
11901184 }
11911185 ri.Printf( PRINT_ALL, "\n" );
11921186 ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize );
13821376 r_specularMapping = ri.Cvar_Get( "r_specularMapping", "1", CVAR_ARCHIVE | CVAR_LATCH );
13831377 r_deluxeMapping = ri.Cvar_Get( "r_deluxeMapping", "1", CVAR_ARCHIVE | CVAR_LATCH );
13841378 r_parallaxMapping = ri.Cvar_Get( "r_parallaxMapping", "0", CVAR_ARCHIVE | CVAR_LATCH );
1379 r_parallaxMapOffset = ri.Cvar_Get( "r_parallaxMapOffset", "0", CVAR_ARCHIVE | CVAR_LATCH );
13851380 r_parallaxMapShadows = ri.Cvar_Get( "r_parallaxMapShadows", "0", CVAR_ARCHIVE | CVAR_LATCH );
13861381 r_cubeMapping = ri.Cvar_Get( "r_cubeMapping", "0", CVAR_ARCHIVE | CVAR_LATCH );
13871382 r_cubemapSize = ri.Cvar_Get( "r_cubemapSize", "128", CVAR_ARCHIVE | CVAR_LATCH );
14461441 r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE );
14471442 r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
14481443 r_finish = ri.Cvar_Get( "r_finish", "0", CVAR_ARCHIVE );
1449 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
1444 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR", CVAR_ARCHIVE );
14501445
14511446 r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0",
14521447 CVAR_ARCHIVE | CVAR_LATCH );
16731668 ri.Printf( PRINT_ALL, "glGetError() = 0x%x\n", err );
16741669 }
16751670
1671 // print info
1672 GfxInfo_f();
16761673 ri.Printf( PRINT_ALL, "----- finished R_Init -----\n" );
16771674 }
16781675
17231720 textureFilterAnisotropic = qfalse;
17241721 maxAnisotropy = 0;
17251722 displayAspect = 0.0f;
1723 haveClampToEdge = qfalse;
17261724
17271725 Com_Memset( &glState, 0, sizeof( glState ) );
17281726 }
10641064 float *heightLodError;
10651065 } srfBspSurface_t;
10661066
1067 typedef struct {
1068 vec3_t translate;
1069 quat_t rotate;
1070 vec3_t scale;
1071 } iqmTransform_t;
1072
10671073 // inter-quake-model
10681074 typedef struct {
10691075 int num_vertexes;
10971103
10981104 char *jointNames;
10991105 int *jointParents;
1100 float *jointMats;
1101 float *poseMats;
1106 float *bindJoints; // [num_joints * 12]
1107 float *invBindJoints; // [num_joints * 12]
1108 iqmTransform_t *poses; // [num_frames * num_poses]
11021109 float *bounds;
11031110
11041111 int numVaoSurfaces;
18031810 extern int maxAnisotropy;
18041811 extern glRefConfig_t glRefConfig;
18051812 extern float displayAspect;
1813 extern qboolean haveClampToEdge;
18061814
18071815 //
18081816 // cvars
19621970 extern cvar_t *r_specularMapping;
19631971 extern cvar_t *r_deluxeMapping;
19641972 extern cvar_t *r_parallaxMapping;
1973 extern cvar_t *r_parallaxMapOffset;
19651974 extern cvar_t *r_parallaxMapShadows;
19661975 extern cvar_t *r_cubeMapping;
19671976 extern cvar_t *r_cubemapSize;
11 ===========================================================================
22 Copyright (C) 2011 Thilo Schulz <thilo@tjps.eu>
33 Copyright (C) 2011 Matthias Bentrup <matthias.bentrup@googlemail.com>
4 Copyright (C) 2011-2019 Zack Middleton <zturtleman@gmail.com>
45
56 This file is part of Quake III Arena source code.
67
4344 }
4445 // "multiply" 3x4 matrices, these are assumed to be the top 3 rows
4546 // of a 4x4 matrix with the last row = (0 0 0 1)
46 static void Matrix34Multiply( float *a, float *b, float *out ) {
47 static void Matrix34Multiply( const float *a, const float *b, float *out ) {
4748 out[ 0] = a[0] * b[0] + a[1] * b[4] + a[ 2] * b[ 8];
4849 out[ 1] = a[0] * b[1] + a[1] * b[5] + a[ 2] * b[ 9];
4950 out[ 2] = a[0] * b[2] + a[1] * b[6] + a[ 2] * b[10];
5758 out[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10];
5859 out[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11];
5960 }
60 static void InterpolateMatrix( float *a, float *b, float lerp, float *mat ) {
61 float unLerp = 1.0f - lerp;
62
63 mat[ 0] = a[ 0] * unLerp + b[ 0] * lerp;
64 mat[ 1] = a[ 1] * unLerp + b[ 1] * lerp;
65 mat[ 2] = a[ 2] * unLerp + b[ 2] * lerp;
66 mat[ 3] = a[ 3] * unLerp + b[ 3] * lerp;
67 mat[ 4] = a[ 4] * unLerp + b[ 4] * lerp;
68 mat[ 5] = a[ 5] * unLerp + b[ 5] * lerp;
69 mat[ 6] = a[ 6] * unLerp + b[ 6] * lerp;
70 mat[ 7] = a[ 7] * unLerp + b[ 7] * lerp;
71 mat[ 8] = a[ 8] * unLerp + b[ 8] * lerp;
72 mat[ 9] = a[ 9] * unLerp + b[ 9] * lerp;
73 mat[10] = a[10] * unLerp + b[10] * lerp;
74 mat[11] = a[11] * unLerp + b[11] * lerp;
75 }
76 static void JointToMatrix( vec4_t rot, vec3_t scale, vec3_t trans,
61 static void JointToMatrix( const quat_t rot, const vec3_t scale, const vec3_t trans,
7762 float *mat ) {
7863 float xx = 2.0f * rot[0] * rot[0];
7964 float yy = 2.0f * rot[1] * rot[1];
9883 mat[10] = scale[2] * (1.0f - (xx + yy));
9984 mat[11] = trans[2];
10085 }
101 static void Matrix34Invert( float *inMat, float *outMat )
102 {
86 static void Matrix34Invert( const float *inMat, float *outMat ) {
10387 vec3_t trans;
10488 float invSqrLen, *v;
10589
118102 outMat[ 3] = -DotProduct(outMat + 0, trans);
119103 outMat[ 7] = -DotProduct(outMat + 4, trans);
120104 outMat[11] = -DotProduct(outMat + 8, trans);
105 }
106 static void QuatSlerp(const quat_t from, const quat_t _to, float fraction, quat_t out) {
107 float angle, cosAngle, sinAngle, backlerp, lerp;
108 quat_t to;
109
110 // cos() of angle
111 cosAngle = from[0] * _to[0] + from[1] * _to[1] + from[2] * _to[2] + from[3] * _to[3];
112
113 // negative handling is needed for taking shortest path (required for model joints)
114 if ( cosAngle < 0.0f ) {
115 cosAngle = -cosAngle;
116 to[0] = - _to[0];
117 to[1] = - _to[1];
118 to[2] = - _to[2];
119 to[3] = - _to[3];
120 } else {
121 QuatCopy( _to, to );
122 }
123
124 if ( cosAngle < 0.999999f ) {
125 // spherical lerp (slerp)
126 angle = acosf( cosAngle );
127 sinAngle = sinf( angle );
128 backlerp = sinf( ( 1.0f - fraction ) * angle ) / sinAngle;
129 lerp = sinf( fraction * angle ) / sinAngle;
130 } else {
131 // linear lerp
132 backlerp = 1.0f - fraction;
133 lerp = fraction;
134 }
135
136 out[0] = from[0] * backlerp + to[0] * lerp;
137 out[1] = from[1] * backlerp + to[1] * lerp;
138 out[2] = from[2] * backlerp + to[2] * lerp;
139 out[3] = from[3] * backlerp + to[3] * lerp;
140 }
141 static vec_t QuatNormalize2( const quat_t v, quat_t out) {
142 float length, ilength;
143
144 length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2] + v[3]*v[3];
145
146 if (length) {
147 /* writing it this way allows gcc to recognize that rsqrt can be used */
148 ilength = 1/(float)sqrt (length);
149 /* sqrt(length) = length * (1 / sqrt(length)) */
150 length *= ilength;
151 out[0] = v[0]*ilength;
152 out[1] = v[1]*ilength;
153 out[2] = v[2]*ilength;
154 out[3] = v[3]*ilength;
155 } else {
156 out[0] = out[1] = out[2] = 0;
157 out[3] = -1;
158 }
159
160 return length;
121161 }
122162
123163 /*
138178 unsigned short *framedata;
139179 char *str;
140180 int i, j, k;
141 float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f};
181 iqmTransform_t *transform;
142182 float *mat, *matInv;
143183 size_t size, joint_names;
144184 byte *dataPtr;
561601 if( header->num_joints ) {
562602 size += joint_names; // joint names
563603 size += header->num_joints * sizeof(int); // joint parents
564 size += header->num_joints * 12 * sizeof( float ); // joint mats
604 size += header->num_joints * 12 * sizeof(float); // bind joint matricies
605 size += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
565606 }
566607 if( header->num_poses ) {
567 size += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
608 size += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
568609 }
569610 if( header->ofs_bounds ) {
570611 size += header->num_frames * 6 * sizeof(float); // model bounds
635676 iqmData->jointParents = (int*)dataPtr;
636677 dataPtr += header->num_joints * sizeof(int); // joint parents
637678
638 iqmData->jointMats = (float*)dataPtr;
639 dataPtr += header->num_joints * 12 * sizeof( float ); // joint mats
679 iqmData->bindJoints = (float*)dataPtr;
680 dataPtr += header->num_joints * 12 * sizeof(float); // bind joint matricies
681
682 iqmData->invBindJoints = (float*)dataPtr;
683 dataPtr += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
640684 }
641685 if( header->num_poses ) {
642 iqmData->poseMats = (float*)dataPtr;
643 dataPtr += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
686 iqmData->poses = (iqmTransform_t*)dataPtr;
687 dataPtr += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
644688 }
645689 if( header->ofs_bounds ) {
646690 iqmData->bounds = (float*)dataPtr;
806850 iqmData->jointParents[i] = joint->parent;
807851 }
808852
809 // calculate joint matrices and their inverses
810 // joint inverses are needed only until the pose matrices are calculated
811 mat = iqmData->jointMats;
812 matInv = jointInvMats;
853 // calculate bind joint matrices and their inverses
854 mat = iqmData->bindJoints;
855 matInv = iqmData->invBindJoints;
813856 joint = (iqmJoint_t *)((byte *)header + header->ofs_joints);
814857 for( i = 0; i < header->num_joints; i++, joint++ ) {
815858 float baseFrame[12], invBaseFrame[12];
816859
860 QuatNormalize2( joint->rotate, joint->rotate );
861
817862 JointToMatrix( joint->rotate, joint->scale, joint->translate, baseFrame );
818863 Matrix34Invert( baseFrame, invBaseFrame );
819864
820865 if ( joint->parent >= 0 )
821866 {
822 Matrix34Multiply( iqmData->jointMats + 12 * joint->parent, baseFrame, mat );
867 Matrix34Multiply( iqmData->bindJoints + 12 * joint->parent, baseFrame, mat );
823868 mat += 12;
824 Matrix34Multiply( invBaseFrame, jointInvMats + 12 * joint->parent, matInv );
869 Matrix34Multiply( invBaseFrame, iqmData->invBindJoints + 12 * joint->parent, matInv );
825870 matInv += 12;
826871 }
827872 else
836881
837882 if( header->num_poses )
838883 {
839 // calculate pose matrices
884 // calculate pose transforms
885 transform = iqmData->poses;
840886 framedata = (unsigned short *)((byte *)header + header->ofs_frames);
841 mat = iqmData->poseMats;
842887 for( i = 0; i < header->num_frames; i++ ) {
843888 pose = (iqmPose_t *)((byte *)header + header->ofs_poses);
844 for( j = 0; j < header->num_poses; j++, pose++ ) {
889 for( j = 0; j < header->num_poses; j++, pose++, transform++ ) {
845890 vec3_t translate;
846 vec4_t rotate;
891 quat_t rotate;
847892 vec3_t scale;
848 float mat1[12], mat2[12];
849893
850894 translate[0] = pose->channeloffset[0];
851895 if( pose->mask & 0x001)
880924 if( pose->mask & 0x200)
881925 scale[2] += *framedata++ * pose->channelscale[9];
882926
883 // construct transformation matrix
884 JointToMatrix( rotate, scale, translate, mat1 );
885
886 if( pose->parent >= 0 ) {
887 Matrix34Multiply( iqmData->jointMats + 12 * pose->parent,
888 mat1, mat2 );
889 } else {
890 Com_Memcpy( mat2, mat1, sizeof(mat1) );
891 }
892
893 Matrix34Multiply( mat2, jointInvMats + 12 * j, mat );
894 mat += 12;
927 VectorCopy( translate, transform->translate );
928 QuatNormalize2( rotate, transform->rotate );
929 VectorCopy( scale, transform->scale );
895930 }
896931 }
897932 }
13051340
13061341
13071342 static void ComputePoseMats( iqmData_t *data, int frame, int oldframe,
1308 float backlerp, float *mat ) {
1309 float *mat1, *mat2;
1310 int *joint = data->jointParents;
1311 int i;
1312
1343 float backlerp, float *poseMats ) {
1344 iqmTransform_t relativeJoints[IQM_MAX_JOINTS];
1345 iqmTransform_t *relativeJoint;
1346 const iqmTransform_t *pose;
1347 const iqmTransform_t *oldpose;
1348 const int *jointParent;
1349 const float *invBindMat;
1350 float *poseMat, lerp;
1351 int i;
1352
1353 relativeJoint = relativeJoints;
1354
1355 // copy or lerp animation frame pose
13131356 if ( oldframe == frame ) {
1314 mat1 = data->poseMats + 12 * data->num_poses * frame;
1315 for( i = 0; i < data->num_poses; i++, joint++ ) {
1316 if( *joint >= 0 ) {
1317 Matrix34Multiply( mat + 12 * *joint,
1318 mat1 + 12*i, mat + 12*i );
1319 } else {
1320 Com_Memcpy( mat + 12*i, mat1 + 12*i, 12 * sizeof(float) );
1321 }
1322 }
1323 } else {
1324 mat1 = data->poseMats + 12 * data->num_poses * frame;
1325 mat2 = data->poseMats + 12 * data->num_poses * oldframe;
1326
1327 for( i = 0; i < data->num_poses; i++, joint++ ) {
1328 if( *joint >= 0 ) {
1329 float tmpMat[12];
1330 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1331 backlerp, tmpMat );
1332 Matrix34Multiply( mat + 12 * *joint,
1333 tmpMat, mat + 12*i );
1334
1335 } else {
1336 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1337 backlerp, mat + 12*i );
1338 }
1357 pose = &data->poses[frame * data->num_poses];
1358 for ( i = 0; i < data->num_poses; i++, pose++, relativeJoint++ ) {
1359 VectorCopy( pose->translate, relativeJoint->translate );
1360 QuatCopy( pose->rotate, relativeJoint->rotate );
1361 VectorCopy( pose->scale, relativeJoint->scale );
1362 }
1363 } else {
1364 lerp = 1.0f - backlerp;
1365 pose = &data->poses[frame * data->num_poses];
1366 oldpose = &data->poses[oldframe * data->num_poses];
1367 for ( i = 0; i < data->num_poses; i++, oldpose++, pose++, relativeJoint++ ) {
1368 relativeJoint->translate[0] = oldpose->translate[0] * backlerp + pose->translate[0] * lerp;
1369 relativeJoint->translate[1] = oldpose->translate[1] * backlerp + pose->translate[1] * lerp;
1370 relativeJoint->translate[2] = oldpose->translate[2] * backlerp + pose->translate[2] * lerp;
1371
1372 relativeJoint->scale[0] = oldpose->scale[0] * backlerp + pose->scale[0] * lerp;
1373 relativeJoint->scale[1] = oldpose->scale[1] * backlerp + pose->scale[1] * lerp;
1374 relativeJoint->scale[2] = oldpose->scale[2] * backlerp + pose->scale[2] * lerp;
1375
1376 QuatSlerp( oldpose->rotate, pose->rotate, lerp, relativeJoint->rotate );
1377 }
1378 }
1379
1380 // multiply by inverse of bind pose and parent 'pose mat' (bind pose transform matrix)
1381 relativeJoint = relativeJoints;
1382 jointParent = data->jointParents;
1383 invBindMat = data->invBindJoints;
1384 poseMat = poseMats;
1385 for ( i = 0; i < data->num_poses; i++, relativeJoint++, jointParent++, invBindMat += 12, poseMat += 12 ) {
1386 float mat1[12], mat2[12];
1387
1388 JointToMatrix( relativeJoint->rotate, relativeJoint->scale, relativeJoint->translate, mat1 );
1389
1390 if ( *jointParent >= 0 ) {
1391 Matrix34Multiply( &data->bindJoints[(*jointParent)*12], mat1, mat2 );
1392 Matrix34Multiply( mat2, invBindMat, mat1 );
1393 Matrix34Multiply( &poseMats[(*jointParent)*12], mat1, poseMat );
1394 } else {
1395 Matrix34Multiply( mat1, invBindMat, poseMat );
13391396 }
13401397 }
13411398 }
13461403 int i;
13471404
13481405 if ( data->num_poses == 0 ) {
1349 Com_Memcpy( mat, data->jointMats, data->num_joints * 12 * sizeof(float) );
1406 Com_Memcpy( mat, data->bindJoints, data->num_joints * 12 * sizeof(float) );
13501407 return;
13511408 }
13521409
13581415
13591416 Com_Memcpy(outmat, mat1, sizeof(outmat));
13601417
1361 Matrix34Multiply( outmat, data->jointMats + 12*i, mat1 );
1418 Matrix34Multiply( outmat, data->bindJoints + 12*i, mat1 );
13621419 }
13631420 }
13641421
14261483 float *vtxMat = &influenceVtxMat[12*i];
14271484 float *nrmMat = &influenceNrmMat[9*i];
14281485 int j;
1429 float blendWeights[4] = {0};
1430 int numWeights;
1431
1432 for ( numWeights = 0; numWeights < 4; numWeights++ ) {
1433 if ( data->blendWeightsType == IQM_FLOAT )
1434 blendWeights[numWeights] = data->influenceBlendWeights.f[4*influence + numWeights];
1435 else
1436 blendWeights[numWeights] = (float)data->influenceBlendWeights.b[4*influence + numWeights] / 255.0f;
1437
1438 if ( blendWeights[numWeights] <= 0.0f )
1439 break;
1440 }
1441
1442 if ( numWeights == 0 ) {
1486 float blendWeights[4];
1487
1488 if ( data->blendWeightsType == IQM_FLOAT ) {
1489 blendWeights[0] = data->influenceBlendWeights.f[4*influence + 0];
1490 blendWeights[1] = data->influenceBlendWeights.f[4*influence + 1];
1491 blendWeights[2] = data->influenceBlendWeights.f[4*influence + 2];
1492 blendWeights[3] = data->influenceBlendWeights.f[4*influence + 3];
1493 } else {
1494 blendWeights[0] = (float)data->influenceBlendWeights.b[4*influence + 0] / 255.0f;
1495 blendWeights[1] = (float)data->influenceBlendWeights.b[4*influence + 1] / 255.0f;
1496 blendWeights[2] = (float)data->influenceBlendWeights.b[4*influence + 2] / 255.0f;
1497 blendWeights[3] = (float)data->influenceBlendWeights.b[4*influence + 3] / 255.0f;
1498 }
1499
1500 if ( blendWeights[0] <= 0.0f ) {
14431501 // no blend joint, use identity matrix.
14441502 vtxMat[0] = identityMatrix[0];
14451503 vtxMat[1] = identityMatrix[1];
14691527 vtxMat[10] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 10];
14701528 vtxMat[11] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 11];
14711529
1472 for( j = 1; j < numWeights; j++ ) {
1530 for( j = 1; j < 4; j++ ) {
1531 if ( blendWeights[j] <= 0.0f ) {
1532 break;
1533 }
1534
14731535 vtxMat[0] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 0];
14741536 vtxMat[1] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 1];
14751537 vtxMat[2] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 2];
887887 #endif
888888 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
889889 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
890 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
891 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
890 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP );
891 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP );
892892 } else {
893893 if ( dirty ) {
894894 // otherwise, just subimage upload it so that drivers can tell we are going to be changing
11501150 image->width = width;
11511151 image->height = height;
11521152 if (flags & IMGFLAG_CLAMPTOEDGE)
1153 glWrapClampMode = GL_CLAMP_TO_EDGE;
1153 glWrapClampMode = haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP;
11541154 else
11551155 glWrapClampMode = GL_REPEAT;
11561156
3333 qboolean textureFilterAnisotropic = qfalse;
3434 int maxAnisotropy = 0;
3535 float displayAspect = 0.0f;
36 qboolean haveClampToEdge = qfalse;
3637
3738 glstate_t glState;
3839
10291030 */
10301031 void R_PrintLongString(const char *string) {
10311032 char buffer[1024];
1032 const char *p = string;
1033 int remainingLength = strlen(string);
1034
1035 while (remainingLength > 0)
1033 const char *p;
1034 int size = strlen(string);
1035
1036 p = string;
1037 while(size > 0)
10361038 {
1037 // Take as much characters as possible from the string without splitting words between buffers
1038 // This avoids the client console splitting a word up when one half fits on the current line,
1039 // but the second half would have to be written on a new line
1040 int charsToTake = sizeof(buffer) - 1;
1041 if (remainingLength > charsToTake) {
1042 while (p[charsToTake - 1] > ' ' && p[charsToTake] > ' ') {
1043 charsToTake--;
1044 if (charsToTake == 0) {
1045 charsToTake = sizeof(buffer) - 1;
1046 break;
1047 }
1048 }
1049 } else if (remainingLength < charsToTake) {
1050 charsToTake = remainingLength;
1051 }
1052
1053 Q_strncpyz( buffer, p, charsToTake + 1 );
1039 Q_strncpyz(buffer, p, sizeof (buffer) );
10541040 ri.Printf( PRINT_ALL, "%s", buffer );
1055 remainingLength -= charsToTake;
1056 p += charsToTake;
1041 p += 1023;
1042 size -= 1023;
10571043 }
10581044 }
10591045
10781064 ri.Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string );
10791065 ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string );
10801066 ri.Printf( PRINT_ALL, "GL_EXTENSIONS: " );
1067 // glConfig.extensions_string is a limited length so get the full list directly
10811068 #ifndef USE_OPENGLES
10821069 if ( qglGetStringi )
10831070 {
10931080 else
10941081 #endif
10951082 {
1096 R_PrintLongString( glConfig.extensions_string );
1083 R_PrintLongString( (char *) qglGetString( GL_EXTENSIONS ) );
10971084 }
10981085 ri.Printf( PRINT_ALL, "\n" );
10991086 ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize );
12741261 r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE );
12751262 r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
12761263 r_finish = ri.Cvar_Get( "r_finish", "0", CVAR_ARCHIVE );
1277 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
1264 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR", CVAR_ARCHIVE );
12781265
12791266 r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0",
12801267 CVAR_ARCHIVE | CVAR_LATCH );
14831470 ri.Printf( PRINT_ALL, "glGetError() = 0x%x\n", err );
14841471 }
14851472
1473 // print info
1474 GfxInfo_f();
14861475 ri.Printf( PRINT_ALL, "----- finished R_Init -----\n" );
14871476 }
14881477
15251514 textureFilterAnisotropic = qfalse;
15261515 maxAnisotropy = 0;
15271516 displayAspect = 0.0f;
1517 haveClampToEdge = qfalse;
15281518
15291519 Com_Memset( &glState, 0, sizeof( glState ) );
15301520 }
695695 drawVert_t *verts;
696696 } srfTriangles_t;
697697
698 typedef struct {
699 vec3_t translate;
700 quat_t rotate;
701 vec3_t scale;
702 } iqmTransform_t;
703
698704 // inter-quake-model
699705 typedef struct {
700706 int num_vertexes;
728734
729735 char *jointNames;
730736 int *jointParents;
731 float *jointMats;
732 float *poseMats;
737 float *bindJoints; // [num_joints * 12]
738 float *invBindJoints; // [num_joints * 12]
739 iqmTransform_t *poses; // [num_frames * num_poses]
733740 float *bounds;
734741 } iqmData_t;
735742
11211128 extern qboolean textureFilterAnisotropic;
11221129 extern int maxAnisotropy;
11231130 extern float displayAspect;
1131 extern qboolean haveClampToEdge;
11241132
11251133 //
11261134 // cvars
11 ===========================================================================
22 Copyright (C) 2011 Thilo Schulz <thilo@tjps.eu>
33 Copyright (C) 2011 Matthias Bentrup <matthias.bentrup@googlemail.com>
4 Copyright (C) 2011-2019 Zack Middleton <zturtleman@gmail.com>
45
56 This file is part of Quake III Arena source code.
67
4344 }
4445 // "multiply" 3x4 matrices, these are assumed to be the top 3 rows
4546 // of a 4x4 matrix with the last row = (0 0 0 1)
46 static void Matrix34Multiply( float *a, float *b, float *out ) {
47 static void Matrix34Multiply( const float *a, const float *b, float *out ) {
4748 out[ 0] = a[0] * b[0] + a[1] * b[4] + a[ 2] * b[ 8];
4849 out[ 1] = a[0] * b[1] + a[1] * b[5] + a[ 2] * b[ 9];
4950 out[ 2] = a[0] * b[2] + a[1] * b[6] + a[ 2] * b[10];
5758 out[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10];
5859 out[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11];
5960 }
60 static void InterpolateMatrix( float *a, float *b, float lerp, float *mat ) {
61 float unLerp = 1.0f - lerp;
62
63 mat[ 0] = a[ 0] * unLerp + b[ 0] * lerp;
64 mat[ 1] = a[ 1] * unLerp + b[ 1] * lerp;
65 mat[ 2] = a[ 2] * unLerp + b[ 2] * lerp;
66 mat[ 3] = a[ 3] * unLerp + b[ 3] * lerp;
67 mat[ 4] = a[ 4] * unLerp + b[ 4] * lerp;
68 mat[ 5] = a[ 5] * unLerp + b[ 5] * lerp;
69 mat[ 6] = a[ 6] * unLerp + b[ 6] * lerp;
70 mat[ 7] = a[ 7] * unLerp + b[ 7] * lerp;
71 mat[ 8] = a[ 8] * unLerp + b[ 8] * lerp;
72 mat[ 9] = a[ 9] * unLerp + b[ 9] * lerp;
73 mat[10] = a[10] * unLerp + b[10] * lerp;
74 mat[11] = a[11] * unLerp + b[11] * lerp;
75 }
76 static void JointToMatrix( vec4_t rot, vec3_t scale, vec3_t trans,
61 static void JointToMatrix( const quat_t rot, const vec3_t scale, const vec3_t trans,
7762 float *mat ) {
7863 float xx = 2.0f * rot[0] * rot[0];
7964 float yy = 2.0f * rot[1] * rot[1];
9883 mat[10] = scale[2] * (1.0f - (xx + yy));
9984 mat[11] = trans[2];
10085 }
101 static void Matrix34Invert( float *inMat, float *outMat )
102 {
86 static void Matrix34Invert( const float *inMat, float *outMat ) {
10387 vec3_t trans;
10488 float invSqrLen, *v;
10589
118102 outMat[ 3] = -DotProduct(outMat + 0, trans);
119103 outMat[ 7] = -DotProduct(outMat + 4, trans);
120104 outMat[11] = -DotProduct(outMat + 8, trans);
105 }
106 static void QuatSlerp(const quat_t from, const quat_t _to, float fraction, quat_t out) {
107 float angle, cosAngle, sinAngle, backlerp, lerp;
108 quat_t to;
109
110 // cos() of angle
111 cosAngle = from[0] * _to[0] + from[1] * _to[1] + from[2] * _to[2] + from[3] * _to[3];
112
113 // negative handling is needed for taking shortest path (required for model joints)
114 if ( cosAngle < 0.0f ) {
115 cosAngle = -cosAngle;
116 to[0] = - _to[0];
117 to[1] = - _to[1];
118 to[2] = - _to[2];
119 to[3] = - _to[3];
120 } else {
121 QuatCopy( _to, to );
122 }
123
124 if ( cosAngle < 0.999999f ) {
125 // spherical lerp (slerp)
126 angle = acosf( cosAngle );
127 sinAngle = sinf( angle );
128 backlerp = sinf( ( 1.0f - fraction ) * angle ) / sinAngle;
129 lerp = sinf( fraction * angle ) / sinAngle;
130 } else {
131 // linear lerp
132 backlerp = 1.0f - fraction;
133 lerp = fraction;
134 }
135
136 out[0] = from[0] * backlerp + to[0] * lerp;
137 out[1] = from[1] * backlerp + to[1] * lerp;
138 out[2] = from[2] * backlerp + to[2] * lerp;
139 out[3] = from[3] * backlerp + to[3] * lerp;
140 }
141 static vec_t QuatNormalize2( const quat_t v, quat_t out) {
142 float length, ilength;
143
144 length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2] + v[3]*v[3];
145
146 if (length) {
147 /* writing it this way allows gcc to recognize that rsqrt can be used */
148 ilength = 1/(float)sqrt (length);
149 /* sqrt(length) = length * (1 / sqrt(length)) */
150 length *= ilength;
151 out[0] = v[0]*ilength;
152 out[1] = v[1]*ilength;
153 out[2] = v[2]*ilength;
154 out[3] = v[3]*ilength;
155 } else {
156 out[0] = out[1] = out[2] = 0;
157 out[3] = -1;
158 }
159
160 return length;
121161 }
122162
123163 /*
138178 unsigned short *framedata;
139179 char *str;
140180 int i, j, k;
141 float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f};
181 iqmTransform_t *transform;
142182 float *mat, *matInv;
143183 size_t size, joint_names;
144184 byte *dataPtr;
558598 if( header->num_joints ) {
559599 size += joint_names; // joint names
560600 size += header->num_joints * sizeof(int); // joint parents
561 size += header->num_joints * 12 * sizeof( float ); // joint mats
601 size += header->num_joints * 12 * sizeof(float); // bind joint matricies
602 size += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
562603 }
563604 if( header->num_poses ) {
564 size += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
605 size += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
565606 }
566607 if( header->ofs_bounds ) {
567608 size += header->num_frames * 6 * sizeof(float); // model bounds
632673 iqmData->jointParents = (int*)dataPtr;
633674 dataPtr += header->num_joints * sizeof(int); // joint parents
634675
635 iqmData->jointMats = (float*)dataPtr;
636 dataPtr += header->num_joints * 12 * sizeof( float ); // joint mats
676 iqmData->bindJoints = (float*)dataPtr;
677 dataPtr += header->num_joints * 12 * sizeof(float); // bind joint matricies
678
679 iqmData->invBindJoints = (float*)dataPtr;
680 dataPtr += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
637681 }
638682 if( header->num_poses ) {
639 iqmData->poseMats = (float*)dataPtr;
640 dataPtr += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
683 iqmData->poses = (iqmTransform_t*)dataPtr;
684 dataPtr += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
641685 }
642686 if( header->ofs_bounds ) {
643687 iqmData->bounds = (float*)dataPtr;
803847 iqmData->jointParents[i] = joint->parent;
804848 }
805849
806 // calculate joint matrices and their inverses
807 // joint inverses are needed only until the pose matrices are calculated
808 mat = iqmData->jointMats;
809 matInv = jointInvMats;
850 // calculate bind joint matrices and their inverses
851 mat = iqmData->bindJoints;
852 matInv = iqmData->invBindJoints;
810853 joint = (iqmJoint_t *)((byte *)header + header->ofs_joints);
811854 for( i = 0; i < header->num_joints; i++, joint++ ) {
812855 float baseFrame[12], invBaseFrame[12];
813856
857 QuatNormalize2( joint->rotate, joint->rotate );
858
814859 JointToMatrix( joint->rotate, joint->scale, joint->translate, baseFrame );
815860 Matrix34Invert( baseFrame, invBaseFrame );
816861
817862 if ( joint->parent >= 0 )
818863 {
819 Matrix34Multiply( iqmData->jointMats + 12 * joint->parent, baseFrame, mat );
864 Matrix34Multiply( iqmData->bindJoints + 12 * joint->parent, baseFrame, mat );
820865 mat += 12;
821 Matrix34Multiply( invBaseFrame, jointInvMats + 12 * joint->parent, matInv );
866 Matrix34Multiply( invBaseFrame, iqmData->invBindJoints + 12 * joint->parent, matInv );
822867 matInv += 12;
823868 }
824869 else
833878
834879 if( header->num_poses )
835880 {
836 // calculate pose matrices
881 // calculate pose transforms
882 transform = iqmData->poses;
837883 framedata = (unsigned short *)((byte *)header + header->ofs_frames);
838 mat = iqmData->poseMats;
839884 for( i = 0; i < header->num_frames; i++ ) {
840885 pose = (iqmPose_t *)((byte *)header + header->ofs_poses);
841 for( j = 0; j < header->num_poses; j++, pose++ ) {
886 for( j = 0; j < header->num_poses; j++, pose++, transform++ ) {
842887 vec3_t translate;
843 vec4_t rotate;
888 quat_t rotate;
844889 vec3_t scale;
845 float mat1[12], mat2[12];
846890
847891 translate[0] = pose->channeloffset[0];
848892 if( pose->mask & 0x001)
877921 if( pose->mask & 0x200)
878922 scale[2] += *framedata++ * pose->channelscale[9];
879923
880 // construct transformation matrix
881 JointToMatrix( rotate, scale, translate, mat1 );
882
883 if( pose->parent >= 0 ) {
884 Matrix34Multiply( iqmData->jointMats + 12 * pose->parent,
885 mat1, mat2 );
886 } else {
887 Com_Memcpy( mat2, mat1, sizeof(mat1) );
888 }
889
890 Matrix34Multiply( mat2, jointInvMats + 12 * j, mat );
891 mat += 12;
924 VectorCopy( translate, transform->translate );
925 QuatNormalize2( rotate, transform->rotate );
926 VectorCopy( scale, transform->scale );
892927 }
893928 }
894929 }
11271162
11281163
11291164 static void ComputePoseMats( iqmData_t *data, int frame, int oldframe,
1130 float backlerp, float *mat ) {
1131 float *mat1, *mat2;
1132 int *joint = data->jointParents;
1133 int i;
1134
1165 float backlerp, float *poseMats ) {
1166 iqmTransform_t relativeJoints[IQM_MAX_JOINTS];
1167 iqmTransform_t *relativeJoint;
1168 const iqmTransform_t *pose;
1169 const iqmTransform_t *oldpose;
1170 const int *jointParent;
1171 const float *invBindMat;
1172 float *poseMat, lerp;
1173 int i;
1174
1175 relativeJoint = relativeJoints;
1176
1177 // copy or lerp animation frame pose
11351178 if ( oldframe == frame ) {
1136 mat1 = data->poseMats + 12 * data->num_poses * frame;
1137 for( i = 0; i < data->num_poses; i++, joint++ ) {
1138 if( *joint >= 0 ) {
1139 Matrix34Multiply( mat + 12 * *joint,
1140 mat1 + 12*i, mat + 12*i );
1141 } else {
1142 Com_Memcpy( mat + 12*i, mat1 + 12*i, 12 * sizeof(float) );
1143 }
1144 }
1145 } else {
1146 mat1 = data->poseMats + 12 * data->num_poses * frame;
1147 mat2 = data->poseMats + 12 * data->num_poses * oldframe;
1148
1149 for( i = 0; i < data->num_poses; i++, joint++ ) {
1150 if( *joint >= 0 ) {
1151 float tmpMat[12];
1152 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1153 backlerp, tmpMat );
1154 Matrix34Multiply( mat + 12 * *joint,
1155 tmpMat, mat + 12*i );
1156
1157 } else {
1158 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1159 backlerp, mat + 12*i );
1160 }
1179 pose = &data->poses[frame * data->num_poses];
1180 for ( i = 0; i < data->num_poses; i++, pose++, relativeJoint++ ) {
1181 VectorCopy( pose->translate, relativeJoint->translate );
1182 QuatCopy( pose->rotate, relativeJoint->rotate );
1183 VectorCopy( pose->scale, relativeJoint->scale );
1184 }
1185 } else {
1186 lerp = 1.0f - backlerp;
1187 pose = &data->poses[frame * data->num_poses];
1188 oldpose = &data->poses[oldframe * data->num_poses];
1189 for ( i = 0; i < data->num_poses; i++, oldpose++, pose++, relativeJoint++ ) {
1190 relativeJoint->translate[0] = oldpose->translate[0] * backlerp + pose->translate[0] * lerp;
1191 relativeJoint->translate[1] = oldpose->translate[1] * backlerp + pose->translate[1] * lerp;
1192 relativeJoint->translate[2] = oldpose->translate[2] * backlerp + pose->translate[2] * lerp;
1193
1194 relativeJoint->scale[0] = oldpose->scale[0] * backlerp + pose->scale[0] * lerp;
1195 relativeJoint->scale[1] = oldpose->scale[1] * backlerp + pose->scale[1] * lerp;
1196 relativeJoint->scale[2] = oldpose->scale[2] * backlerp + pose->scale[2] * lerp;
1197
1198 QuatSlerp( oldpose->rotate, pose->rotate, lerp, relativeJoint->rotate );
1199 }
1200 }
1201
1202 // multiply by inverse of bind pose and parent 'pose mat' (bind pose transform matrix)
1203 relativeJoint = relativeJoints;
1204 jointParent = data->jointParents;
1205 invBindMat = data->invBindJoints;
1206 poseMat = poseMats;
1207 for ( i = 0; i < data->num_poses; i++, relativeJoint++, jointParent++, invBindMat += 12, poseMat += 12 ) {
1208 float mat1[12], mat2[12];
1209
1210 JointToMatrix( relativeJoint->rotate, relativeJoint->scale, relativeJoint->translate, mat1 );
1211
1212 if ( *jointParent >= 0 ) {
1213 Matrix34Multiply( &data->bindJoints[(*jointParent)*12], mat1, mat2 );
1214 Matrix34Multiply( mat2, invBindMat, mat1 );
1215 Matrix34Multiply( &poseMats[(*jointParent)*12], mat1, poseMat );
1216 } else {
1217 Matrix34Multiply( mat1, invBindMat, poseMat );
11611218 }
11621219 }
11631220 }
11681225 int i;
11691226
11701227 if ( data->num_poses == 0 ) {
1171 Com_Memcpy( mat, data->jointMats, data->num_joints * 12 * sizeof(float) );
1228 Com_Memcpy( mat, data->bindJoints, data->num_joints * 12 * sizeof(float) );
11721229 return;
11731230 }
11741231
11801237
11811238 Com_Memcpy(outmat, mat1, sizeof(outmat));
11821239
1183 Matrix34Multiply( outmat, data->jointMats + 12*i, mat1 );
1240 Matrix34Multiply( outmat, data->bindJoints + 12*i, mat1 );
11841241 }
11851242 }
11861243
12441301 float *vtxMat = &influenceVtxMat[12*i];
12451302 float *nrmMat = &influenceNrmMat[9*i];
12461303 int j;
1247 float blendWeights[4] = {0};
1248 int numWeights;
1249
1250 for ( numWeights = 0; numWeights < 4; numWeights++ ) {
1251 if ( data->blendWeightsType == IQM_FLOAT )
1252 blendWeights[numWeights] = data->influenceBlendWeights.f[4*influence + numWeights];
1253 else
1254 blendWeights[numWeights] = (float)data->influenceBlendWeights.b[4*influence + numWeights] / 255.0f;
1255
1256 if ( blendWeights[numWeights] <= 0.0f )
1257 break;
1258 }
1259
1260 if ( numWeights == 0 ) {
1304 float blendWeights[4];
1305
1306 if ( data->blendWeightsType == IQM_FLOAT ) {
1307 blendWeights[0] = data->influenceBlendWeights.f[4*influence + 0];
1308 blendWeights[1] = data->influenceBlendWeights.f[4*influence + 1];
1309 blendWeights[2] = data->influenceBlendWeights.f[4*influence + 2];
1310 blendWeights[3] = data->influenceBlendWeights.f[4*influence + 3];
1311 } else {
1312 blendWeights[0] = (float)data->influenceBlendWeights.b[4*influence + 0] / 255.0f;
1313 blendWeights[1] = (float)data->influenceBlendWeights.b[4*influence + 1] / 255.0f;
1314 blendWeights[2] = (float)data->influenceBlendWeights.b[4*influence + 2] / 255.0f;
1315 blendWeights[3] = (float)data->influenceBlendWeights.b[4*influence + 3] / 255.0f;
1316 }
1317
1318 if ( blendWeights[0] <= 0.0f ) {
12611319 // no blend joint, use identity matrix.
12621320 vtxMat[0] = identityMatrix[0];
12631321 vtxMat[1] = identityMatrix[1];
12871345 vtxMat[10] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 10];
12881346 vtxMat[11] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 11];
12891347
1290 for( j = 1; j < numWeights; j++ ) {
1348 for( j = 1; j < 4; j++ ) {
1349 if ( blendWeights[j] <= 0.0f ) {
1350 break;
1351 }
1352
12911353 vtxMat[0] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 0];
12921354 vtxMat[1] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 1];
12931355 vtxMat[2] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 2];
6161
6262 cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained
6363 cvar_t *r_allowResize; // make window resizable
64 cvar_t *r_windowPosx;
65 cvar_t *r_windowPosy;
6664 cvar_t *r_centerWindow;
6765 cvar_t *r_sdlDriver;
6866
7674 void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
7775 void (APIENTRYP qglUnlockArraysEXT) (void);
7876
79 #define GLE(ret, name, ...) name##proc * qgl##name;
77 #define GLE(ret, name, ...) name##proc * qgl##name = NULL;
8078 QGL_1_1_PROCS;
8179 QGL_1_1_FIXED_FUNCTION_PROCS;
8280 QGL_DESKTOP_1_1_PROCS;
10098 */
10199 void GLimp_Shutdown( void )
102100 {
103 int x, y;
104 const char *posx;
105 const char *posy;
106
107 SDL_GetWindowPosition( SDL_window, &x, &y );
108 ri.Printf( PRINT_DEVELOPER, "Saving window position at %d,%d before closing.\n", x, y );
109
110 posx = va( "%d", x );
111 posy = va( "%d", y );
112
113 ri.Cvar_Set( "r_windowPosx", posx );
114 ri.Cvar_Set( "r_windowPosy", posy );
115
116101 ri.IN_Shutdown();
117102
118103 SDL_QuitSubSystem( SDL_INIT_VIDEO );
340325 version = (const char *)qglGetString( GL_VERSION );
341326
342327 if ( !version ) {
343 Com_Error( ERR_FATAL, "GL_VERSION is NULL\n" );
328 Com_Error( ERR_FATAL, "GL_VERSION is NULL" );
344329 }
345330
346331 if ( Q_stricmpn( "OpenGL ES", version, 9 ) == 0 ) {
356341 }
357342
358343 if ( fixedFunction ) {
359 if ( QGL_VERSION_ATLEAST( 1, 2 ) ) {
344 if ( QGL_VERSION_ATLEAST( 1, 1 ) ) {
360345 QGL_1_1_PROCS;
361346 QGL_1_1_FIXED_FUNCTION_PROCS;
362347 QGL_DESKTOP_1_1_PROCS;
381366 qglFogi = GLimp_GLES_Fogi; /*Added*/
382367 #else
383368 // error so this doesn't segfault due to NULL desktop GL functions being used
384 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
369 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s", version );
385370 #endif
386371 } else {
387 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 1.2 is required\n", version );
372 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 1.1 is required", version );
388373 }
389374 } else {
390375 if ( QGL_VERSION_ATLEAST( 2, 0 ) ) {
400385 QGL_1_5_PROCS;
401386 QGL_2_0_PROCS;
402387 // error so this doesn't segfault due to NULL desktop GL functions being used
403 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
388 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s", version );
404389 } else {
405 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 2.0 is required\n", version );
390 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 2.0 is required", version );
406391 }
407392 }
408393
544529 }
545530 ri.Printf( PRINT_ALL, " %d %d\n", glConfig.vidWidth, glConfig.vidHeight);
546531
532 // Center window
533 if( r_centerWindow->integer && !fullscreen )
534 {
535 x = ( desktopMode.w / 2 ) - ( glConfig.vidWidth / 2 );
536 y = ( desktopMode.h / 2 ) - ( glConfig.vidHeight / 2 );
537 }
538
547539 // Destroy existing state if it exists
548540 if( SDL_glContext != NULL )
549541 {
654646 perChannelColorBits = 0; /* Use minimum size for 16-bit color */
655647
656648 /* Need alpha or else SGIs choose 36+ bit RGB mode */
657 SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 1 );
649 SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 1);
658650 #endif
659651
660652 #ifdef USE_OPENGLES
673665 if(r_stereoEnabled->integer)
674666 {
675667 glConfig.stereoEnabled = qtrue;
676 SDL_GL_SetAttribute( SDL_GL_STEREO, 1 );
668 SDL_GL_SetAttribute(SDL_GL_STEREO, 1);
677669 }
678670 else
679671 {
680672 glConfig.stereoEnabled = qfalse;
681 SDL_GL_SetAttribute( SDL_GL_STEREO, 0 );
673 SDL_GL_SetAttribute(SDL_GL_STEREO, 0);
682674 }
683675
684676 SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
685677
678 #if 0 // if multisampling is enabled on X11, this causes create window to fail.
686679 // If not allowing software GL, demand accelerated
687680 if( !r_allowSoftwareGL->integer )
688 {
689 int value;
690
691681 SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
692
693 //Fall back to allow either if setting attribute failed
694 if( SDL_GL_GetAttribute( SDL_GL_ACCELERATED_VISUAL, &value ) != 1 )
695 SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, -1 );
696 }
697
698 if( r_centerWindow->integer && !fullscreen )
699 {
700 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
701 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
702 {
703 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
704 continue;
705 }
706 }
707 else if ( ( r_windowPosx->integer || r_windowPosy->integer ) && !fullscreen )
708 {
709 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, r_windowPosx->integer, r_windowPosy->integer,
710 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
711 {
712 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
713 continue;
714 }
715 }
716 else
717 {
718 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, x, y,
719 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
720 {
721 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
722 continue;
723 }
682 #endif
683
684 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, x, y,
685 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
686 {
687 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
688 continue;
724689 }
725690
726691 if( fullscreen )
789754 ri.Printf( PRINT_ALL, "GLimp_GetProcAddresses() failed for OpenGL 3.2 core context\n" );
790755 renderer = NULL;
791756 }
792
757
793758 if (!renderer || (strstr(renderer, "Software Renderer") || strstr(renderer, "Software Rasterizer")))
794759 {
795760 if ( renderer )
976941 ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
977942 }
978943 }
979
980944
981945 // OpenGL 1 fixed function pipeline
982946 if ( fixedFunction )
11141078 {
11151079 ri.Printf( PRINT_ALL, "...GL_EXT_texture_filter_anisotropic not found\n" );
11161080 }
1081
1082 haveClampToEdge = qfalse;
1083 if ( QGL_VERSION_ATLEAST( 1, 2 ) || QGLES_VERSION_ATLEAST( 1, 0 ) || SDL_GL_ExtensionSupported( "GL_SGIS_texture_edge_clamp" ) )
1084 {
1085 ri.Printf( PRINT_ALL, "...using GL_SGIS_texture_edge_clamp\n" );
1086 haveClampToEdge = qtrue;
1087 }
1088 else
1089 {
1090 ri.Printf( PRINT_ALL, "...GL_SGIS_texture_edge_clamp not found\n" );
1091 }
11171092 }
11181093
11191094 #define R_MODE_FALLBACK 3 // 640 * 480
11331108 r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
11341109 r_sdlDriver = ri.Cvar_Get( "r_sdlDriver", "", CVAR_ROM );
11351110 r_allowResize = ri.Cvar_Get( "r_allowResize", "0", CVAR_ARCHIVE | CVAR_LATCH );
1136 r_windowPosx = ri.Cvar_Get( "r_windowPosx", "0", CVAR_ARCHIVE );
1137 r_windowPosy = ri.Cvar_Get( "r_windowPosy", "0", CVAR_ARCHIVE );
11381111 r_centerWindow = ri.Cvar_Get( "r_centerWindow", "0", CVAR_ARCHIVE | CVAR_LATCH );
11391112
11401113 if( ri.Cvar_VariableIntegerValue( "com_abnormalExit" ) )
12461219
12471220 if( r_fullscreen->modified )
12481221 {
1249 qboolean fullscreen;
1250 qboolean needToToggle;
1222 int fullscreen;
1223 qboolean needToToggle;
12511224
12521225 // Find out the current state
12531226 fullscreen = !!( SDL_GetWindowFlags( SDL_window ) & SDL_WINDOW_FULLSCREEN );
12651238 if( needToToggle )
12661239 {
12671240 // Need the vid_restart here since r_fullscreen is only latched
1268 if( fullscreen ) {
1241 if( fullscreen )
1242 {
12691243 Com_Printf( "Switching to windowed rendering\n" );
12701244 ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart\n");
1271 } else {
1245 }
1246 else
1247 {
12721248 Com_Printf( "Switching to fullscreen rendering\n" );
12731249 ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart\n");
12741250 }
3131
3232 #include "../client/client.h"
3333 #include "../sys/sys_local.h"
34
35 #if !SDL_VERSION_ATLEAST(2, 0, 17)
36 #define KMOD_SCROLL KMOD_RESERVED
37 #endif
3438
3539 static cvar_t *in_keyboardDebug = NULL;
3640
8387 if( keysym->mod & KMOD_NUM ) Com_Printf( " KMOD_NUM" );
8488 if( keysym->mod & KMOD_CAPS ) Com_Printf( " KMOD_CAPS" );
8589 if( keysym->mod & KMOD_MODE ) Com_Printf( " KMOD_MODE" );
86 if( keysym->mod & KMOD_RESERVED ) Com_Printf( " KMOD_RESERVED" );
90 if( keysym->mod & KMOD_SCROLL ) Com_Printf( " KMOD_SCROLL" );
8791
8892 Com_Printf( " Q:0x%02x(%s)\n", key, Key_KeynumToString( key, qtrue ) );
8993 }
11221126 width = e.window.data1;
11231127 height = e.window.data2;
11241128
1125 // check for fullscreen
1126 // SDL_WINDOWEVENT_RESIZED occurs when requested resolution != given resolution
1127 // This prevents an infinite vid_restart loop
1129 // ignore this event on fullscreen
11281130 if( cls.glconfig.isFullscreen )
11291131 {
11301132 break;
280280 #ifdef USE_SDL_AUDIO_CAPTURE
281281 // !!! FIXME: some of these SDL_OpenAudioDevice() values should be cvars.
282282 s_sdlCapture = Cvar_Get( "s_sdlCapture", "1", CVAR_ARCHIVE | CVAR_LATCH );
283 // !!! FIXME: pulseaudio capture records audio the entire time the program is running. https://bugzilla.libsdl.org/show_bug.cgi?id=4087
284 if (Q_stricmp(SDL_GetCurrentAudioDriver(), "pulseaudio") == 0)
285 {
286 Com_Printf("SDL audio capture support disabled for pulseaudio (https://bugzilla.libsdl.org/show_bug.cgi?id=4087)\n");
287 }
288 else if (!s_sdlCapture->integer)
283 if (!s_sdlCapture->integer)
289284 {
290285 Com_Printf("SDL audio capture support disabled by user ('+set s_sdlCapture 1' to enable)\n");
291286 }
962962 if ( COM_CompareExtension( name, DLL_EXT ) ) {
963963 return qtrue;
964964 }
965
966 #ifdef __APPLE__
967 // Allow system frameworks without dylib extensions
968 // i.e., /System/Library/Frameworks/OpenAL.framework/OpenAL
969 if ( strncmp( name, "/System/Library/Frameworks/", 27 ) == 0 ) {
970 return qtrue;
971 }
972 #endif
965973
966974 // Check for format of filename.so.1.2.3
967975 p = strstr( name, DLL_EXT "." );
0 #include <stdio.h>
1 #include <ctype.h>
2 #include <string.h>
3 #include <libgen.h>
4
5 int main(int argc, char **argv)
6 {
7 FILE *ifp;
8 FILE *ofp;
9 char buffer[1024];
10
11 if(argc < 3)
12 return 1;
13
14 char *inFile = argv[1];
15 char *outFile = argv[2];
16
17 ifp = fopen(inFile, "r");
18 if(!ifp)
19 return 2;
20
21 ofp = fopen(outFile, "w");
22 if(!ofp)
23 return 3;
24
25 // Strip extension
26 char *base = basename(inFile);
27 *strrchr(base, '.') = '\0';
28
29 fprintf(ofp, "const char *fallbackShader_%s =\n", base);
30
31 while(fgets(buffer, sizeof(buffer), ifp))
32 {
33 // Strip trailing whitespace from line
34 char *end = buffer + strlen(buffer) - 1;
35 while(end >= buffer && isspace(*end))
36 end--;
37
38 end[1] = '\0';
39
40 // Write line enquoted, with a newline
41 fprintf(ofp, "\"%s\\n\"\n", buffer);
42 }
43
44 fprintf(ofp, ";\n");
45
46 fclose(ifp);
47 fclose(ofp);
48
49 return 0;
50 }
782782 char text[1024];
783783 char *ret, *end, *next;
784784 char s;
785 vec4_t aux_color, next_color;
785 vec4_t aux_color, next_color = { 0 };
786786
787787 Q_strncpyz( text, l_text, sizeof( text ) - 1 );
788788 ret = text;
46524652 trap_Cvar_Set( "cdkey2", "" );
46534653 trap_Cvar_Set( "cdkey3", "" );
46544654 trap_Cvar_Set( "cdkey4", "" );
4655 trap_Cvar_Set( "cdkeychecksum", "" );
4656 if ( buff[0] != 32 && strlen( buff ) == CDKEY_LEN ) {
4655 if ( strlen( buff ) == CDKEY_LEN ) {
46574656 Q_strncpyz( out, buff, 5 );
46584657 trap_Cvar_Set( "cdkey1", out );
46594658 Q_strncpyz( out, buff + 4, 5 );
35683568 do
35693569 {
35703570 field_offset++;
3571 if ( buff + editPtr->paintOffset + field_offset == '\0' ) {
3571 if ( buff + editPtr->paintOffset + field_offset == NULL ) {
35723572 break; // keep it safe
35733573 }
35743574 text_len = DC->textWidth( buff + editPtr->paintOffset + field_offset, item->textscale, 0 );
0 #!/bin/bash
1
2 # Let's make the user give us a target to work with.
3 # architecture is assumed universal if not specified, and is optional.
4 # if arch is defined, it we will store the .app bundle in the target arch build directory
5 if [ $# == 0 ] || [ $# -gt 2 ]; then
6 echo "Usage: $0 target <arch>"
7 echo "Example: $0 release x86"
8 echo "Valid targets are:"
9 echo " release"
10 echo " debug"
11 echo
12 echo "Optional architectures are:"
13 echo " x86"
14 echo " x86_64"
15 echo " ppc"
16 echo
17 exit 1
18 fi
19
20 # validate target name
21 if [ "$1" == "release" ]; then
22 TARGET_NAME="release"
23 elif [ "$1" == "debug" ]; then
24 TARGET_NAME="debug"
25 else
26 echo "Invalid target: $1"
27 echo "Valid targets are:"
28 echo " release"
29 echo " debug"
30 exit 1
31 fi
32
33 CURRENT_ARCH=""
34
35 # validate the architecture if it was specified
36 if [ "$2" != "" ]; then
37 if [ "$2" == "x86" ]; then
38 CURRENT_ARCH="x86"
39 elif [ "$2" == "x86_64" ]; then
40 CURRENT_ARCH="x86_64"
41 elif [ "$2" == "ppc" ]; then
42 CURRENT_ARCH="ppc"
43 else
44 echo "Invalid architecture: $2"
45 echo "Valid architectures are:"
46 echo " x86"
47 echo " x86_64"
48 echo " ppc"
49 echo
50 exit 1
51 fi
52 fi
53
54 # symlinkArch() creates a symlink with the architecture suffix.
55 # meant for universal binaries, but also handles the way this script generates
56 # application bundles for a single architecture as well.
57 function symlinkArch()
58 {
59 EXT="dylib"
60 SEP="${3}"
61 SRCFILE="${1}"
62 DSTFILE="${2}${SEP}"
63 DSTPATH="${4}"
64
65 if [ ! -e "${DSTPATH}/${SRCFILE}.${EXT}" ]; then
66 echo "**** ERROR: missing ${SRCFILE}.${EXT} from ${MACOS}"
67 exit 1
68 fi
69
70 if [ ! -d "${DSTPATH}" ]; then
71 echo "**** ERROR: path not found ${DSTPATH}"
72 exit 1
73 fi
74
75 pushd "${DSTPATH}" > /dev/null
76
77 IS32=`file "${SRCFILE}.${EXT}" | grep "i386"`
78 IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64"`
79 ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc"`
80
81 if [ "${IS32}" != "" ]; then
82 if [ ! -L "${DSTFILE}i386.${EXT}" ]; then
83 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}i386.${EXT}"
84 fi
85 elif [ -L "${DSTFILE}i386.${EXT}" ]; then
86 rm "${DSTFILE}i386.${EXT}"
87 fi
88
89 if [ "${IS64}" != "" ]; then
90 if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then
91 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}"
92 fi
93 elif [ -L "${DSTFILE}x86_64.${EXT}" ]; then
94 rm "${DSTFILE}x86_64.${EXT}"
95 fi
96
97 if [ "${ISPPC}" != "" ]; then
98 if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then
99 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}"
100 fi
101 elif [ -L "${DSTFILE}ppc.${EXT}" ]; then
102 rm "${DSTFILE}ppc.${EXT}"
103 fi
104
105 popd > /dev/null
106 }
107
108 SEARCH_ARCHS=" \
109 x86 \
110 x86_64 \
111 ppc \
112 "
113
114 HAS_LIPO=`command -v lipo`
115 HAS_CP=`command -v cp`
116
117 # if lipo is not available, we cannot make a universal binary, print a warning
118 if [ ! -x "${HAS_LIPO}" ] && [ "${CURRENT_ARCH}" == "" ]; then
119 CURRENT_ARCH=`uname -m`
120 if [ "${CURRENT_ARCH}" == "i386" ]; then CURRENT_ARCH="x86"; fi
121 echo "$0 cannot make a universal binary, falling back to architecture ${CURRENT_ARCH}"
122 fi
123
124 # if the optional arch parameter is used, replace SEARCH_ARCHS to only work with one
125 if [ "${CURRENT_ARCH}" != "" ]; then
126 SEARCH_ARCHS="${CURRENT_ARCH}"
127 fi
128
129 AVAILABLE_ARCHS=""
130
131 IORTCW_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
132 IORTCW_CLIENT_ARCHS=""
133 IORTCW_SERVER_ARCHS=""
134 IORTCW_RENDERER_GL1_ARCHS=""
135 IORTCW_RENDERER_GL2_ARCHS=""
136 IORTCW_CGAME_ARCHS=""
137 IORTCW_GAME_ARCHS=""
138 IORTCW_UI_ARCHS=""
139
140 BASEDIR="main"
141
142 CGAME="cgame.mp"
143 GAME="qagame.mp"
144 UI="ui.mp"
145
146 RENDERER_OPENGL="renderer_mp_opengl1"
147 RENDERER_OPENGL2="renderer_mp_rend2"
148
149 DEDICATED_NAME="iowolfded"
150
151 CGAME_NAME="${CGAME}.dylib"
152 GAME_NAME="${GAME}.dylib"
153 UI_NAME="${UI}.dylib"
154
155 RENDERER_OPENGL1_NAME="renderer_mp_opengl1.dylib"
156 RENDERER_OPENGL2_NAME="renderer_mp_rend2.dylib"
157
158 ICNSDIR="misc"
159 ICNS="iortcw.icns"
160 PKGINFO="APPLIORTCW"
161
162 OBJROOT="build"
163 #BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
164 PRODUCT_NAME="iowolfmp"
165 WRAPPER_EXTENSION="app"
166 WRAPPER_NAME="${PRODUCT_NAME}.${WRAPPER_EXTENSION}"
167 CONTENTS_FOLDER_PATH="${WRAPPER_NAME}/Contents"
168 UNLOCALIZED_RESOURCES_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/Resources"
169 EXECUTABLE_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/MacOS"
170 EXECUTABLE_NAME="${PRODUCT_NAME}"
171
172 # loop through the architectures to build string lists for each universal binary
173 for ARCH in $SEARCH_ARCHS; do
174 CURRENT_ARCH=${ARCH}
175
176 if [ ${CURRENT_ARCH} == "x86" ]; then FILE_ARCH="i386"; fi
177 if [ ${CURRENT_ARCH} == "x86_64" ]; then FILE_ARCH="x86_64"; fi
178 if [ ${CURRENT_ARCH} == "ppc" ]; then FILE_ARCH="ppc"; fi
179
180 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
181 IORTCW_CLIENT="${EXECUTABLE_NAME}.${CURRENT_ARCH}"
182 IORTCW_SERVER="${DEDICATED_NAME}.${CURRENT_ARCH}"
183 IORTCW_RENDERER_GL1="${RENDERER_OPENGL}_${FILE_ARCH}.dylib"
184 IORTCW_RENDERER_GL2="${RENDERER_OPENGL2}_${FILE_ARCH}.dylib"
185 IORTCW_CGAME="${CGAME}.${FILE_ARCH}.dylib"
186 IORTCW_GAME="${GAME}.${FILE_ARCH}.dylib"
187 IORTCW_UI="${UI}.${FILE_ARCH}.dylib"
188
189 if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then
190 CURRENT_ARCH=""
191 BUILT_PRODUCTS_DIR=""
192 continue
193 fi
194
195 # executables
196 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_CLIENT} ]; then
197 IORTCW_CLIENT_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_CLIENT} ${IORTCW_CLIENT_ARCHS}"
198 VALID_ARCHS="${ARCH} ${VALID_ARCHS}"
199 else
200 continue
201 fi
202 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_SERVER} ]; then
203 IORTCW_SERVER_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_SERVER} ${IORTCW_SERVER_ARCHS}"
204 fi
205
206 # renderers
207 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL1} ]; then
208 IORTCW_RENDERER_GL1_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL1} ${IORTCW_RENDERER_GL1_ARCHS}"
209 fi
210 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL2} ]; then
211 IORTCW_RENDERER_GL2_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL2} ${IORTCW_RENDERER_GL2_ARCHS}"
212 fi
213
214 # game
215 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_CGAME} ]; then
216 IORTCW_CGAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_CGAME} ${IORTCW_CGAME_ARCHS}"
217 fi
218 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_GAME} ]; then
219 IORTCW_GAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_GAME} ${IORTCW_GAME_ARCHS}"
220 fi
221 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_UI} ]; then
222 IORTCW_UI_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_UI} ${IORTCW_UI_ARCHS}"
223 fi
224
225 #echo "valid arch: ${ARCH}"
226 done
227
228 # final preparations and checks before attempting to make the application bundle
229 cd `dirname $0`
230
231 if [ ! -f Makefile ]; then
232 echo "$0 must be run from the iortcw build directory"
233 exit 1
234 fi
235
236 if [ "${IORTCW_CLIENT_ARCHS}" == "" ]; then
237 echo "$0: no iortcw binary architectures were found for target '${TARGET_NAME}'"
238 exit 1
239 fi
240
241 # set the final application bundle output directory
242 if [ "${2}" == "" ]; then
243 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-universal"
244 if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then
245 mkdir -p ${BUILT_PRODUCTS_DIR} || exit 1;
246 fi
247 else
248 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
249 fi
250
251 BUNDLEBINDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}"
252
253
254 # here we go
255 echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'"
256 echo "with architectures:"
257 for ARCH in ${VALID_ARCHS}; do
258 echo " ${ARCH}"
259 done
260 echo ""
261
262 # make the application bundle directories
263 if [ ! -d "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR" ]; then
264 mkdir -p "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR" || exit 1;
265 fi
266 if [ ! -d "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" ]; then
267 mkdir -p "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" || exit 1;
268 fi
269
270 # copy and generate some application bundle resources
271 cp code/libs/macosx/*.dylib "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}"
272 cp ${ICNSDIR}/${ICNS} "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/$ICNS" || exit 1;
273 echo -n ${PKGINFO} > "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/PkgInfo" || exit 1;
274
275 # create Info.Plist
276 PLIST="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
277 <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
278 <plist version=\"1.0\">
279 <dict>
280 <key>CFBundleDevelopmentRegion</key>
281 <string>en</string>
282 <key>CFBundleExecutable</key>
283 <string>${EXECUTABLE_NAME}</string>
284 <key>CFBundleIconFile</key>
285 <string>iortcw</string>
286 <key>CFBundleIdentifier</key>
287 <string>org.iortcw.${PRODUCT_NAME}</string>
288 <key>CFBundleInfoDictionaryVersion</key>
289 <string>6.0</string>
290 <key>CFBundleName</key>
291 <string>${PRODUCT_NAME}</string>
292 <key>CFBundlePackageType</key>
293 <string>APPL</string>
294 <key>CFBundleShortVersionString</key>
295 <string>${IORTCW_VERSION}</string>
296 <key>CFBundleSignature</key>
297 <string>????</string>
298 <key>CFBundleVersion</key>
299 <string>${IORTCW_VERSION}</string>
300 <key>CGDisableCoalescedUpdates</key>
301 <true/>
302 <key>LSMinimumSystemVersion</key>
303 <string>${MACOSX_DEPLOYMENT_TARGET}</string>"
304
305 if [ -n "${MACOSX_DEPLOYMENT_TARGET_PPC}" ] || [ -n "${MACOSX_DEPLOYMENT_TARGET_X86}" ] || [ -n "${MACOSX_DEPLOYMENT_TARGET_X86_64}" ]; then
306 PLIST="${PLIST}
307 <key>LSMinimumSystemVersionByArchitecture</key>
308 <dict>"
309
310 if [ -n "${MACOSX_DEPLOYMENT_TARGET_PPC}" ]; then
311 PLIST="${PLIST}
312 <key>ppc</key>
313 <string>${MACOSX_DEPLOYMENT_TARGET_PPC}</string>"
314 fi
315
316 if [ -n "${MACOSX_DEPLOYMENT_TARGET_X86}" ]; then
317 PLIST="${PLIST}
318 <key>i386</key>
319 <string>${MACOSX_DEPLOYMENT_TARGET_X86}</string>"
320 fi
321
322 if [ -n "${MACOSX_DEPLOYMENT_TARGET_X86_64}" ]; then
323 PLIST="${PLIST}
324 <key>x86_64</key>
325 <string>${MACOSX_DEPLOYMENT_TARGET_X86_64}</string>"
326 fi
327
328 PLIST="${PLIST}
329 </dict>"
330 fi
331
332 PLIST="${PLIST}
333 <key>NSHumanReadableCopyright</key>
334 <string>Return to Castle Wolfenstein multiplayer Copyright (C) 1999-2010 id Software LLC, a ZeniMax Media company.</string>
335 <key>NSPrincipalClass</key>
336 <string>NSApplication</string>
337 <key>NSHighResolutionCapable</key>
338 <false/>
339 </dict>
340 </plist>
341 "
342 echo -e "${PLIST}" > "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Info.plist"
343
344 # action takes care of generating universal binaries if lipo is available
345 # otherwise, it falls back to using a simple copy, expecting the first item in
346 # the second parameter list to be the desired architecture
347 function action()
348 {
349 COMMAND=""
350
351 if [ -x "${HAS_LIPO}" ]; then
352 COMMAND="${HAS_LIPO} -create -o"
353 $HAS_LIPO -create -o "${1}" ${2} # make sure $2 is treated as a list of files
354 elif [ -x ${HAS_CP} ]; then
355 COMMAND="${HAS_CP}"
356 SRC="${2// */}" # in case there is a list here, use only the first item
357 $HAS_CP "${SRC}" "${1}"
358 else
359 "$0 cannot create an application bundle."
360 exit 1
361 fi
362
363 #echo "${COMMAND}" "${1}" "${2}"
364 }
365
366 #
367 # the meat of universal binary creation
368 # destination file names do not have architecture suffix.
369 # action will handle merging universal binaries if supported.
370 # symlink appropriate architecture names for universal (fat) binary support.
371 #
372
373 # executables
374 action "${BUNDLEBINDIR}/${EXECUTABLE_NAME}" "${IORTCW_CLIENT_ARCHS}"
375 action "${BUNDLEBINDIR}/${DEDICATED_NAME}" "${IORTCW_SERVER_ARCHS}"
376
377 # renderers
378 action "${BUNDLEBINDIR}/${RENDERER_OPENGL1_NAME}" "${IORTCW_RENDERER_GL1_ARCHS}"
379 action "${BUNDLEBINDIR}/${RENDERER_OPENGL2_NAME}" "${IORTCW_RENDERER_GL2_ARCHS}"
380 symlinkArch "${RENDERER_OPENGL}" "${RENDERER_OPENGL}" "_" "${BUNDLEBINDIR}"
381 symlinkArch "${RENDERER_OPENGL2}" "${RENDERER_OPENGL2}" "_" "${BUNDLEBINDIR}"
382
383 # game
384 action "${BUNDLEBINDIR}/${BASEDIR}/${CGAME_NAME}" "${IORTCW_CGAME_ARCHS}"
385 action "${BUNDLEBINDIR}/${BASEDIR}/${GAME_NAME}" "${IORTCW_GAME_ARCHS}"
386 action "${BUNDLEBINDIR}/${BASEDIR}/${UI_NAME}" "${IORTCW_UI_ARCHS}"
387 symlinkArch "${CGAME}" "${CGAME}." "" "${BUNDLEBINDIR}/${BASEDIR}"
388 symlinkArch "${GAME}" "${GAME}." "" "${BUNDLEBINDIR}/${BASEDIR}"
389 symlinkArch "${UI}" "${UI}." "" "${BUNDLEBINDIR}/${BASEDIR}"
390
0 #!/bin/sh
0 #!/bin/bash
11 CC=gcc-4.0
2 APPBUNDLE=iowolfmp.app
3 BINARY=iowolfmp.ub
4 DEDBIN=iowolfded.ub
5 PKGINFO=APPLIOWOLFMP
6 ICNS=misc/iortcw.icns
7 DESTDIR=build/release-darwin-ub
8 BASEDIR=main
9
10 BIN_OBJ="
11 build/release-darwin-x86_64/iowolfmp.x86_64
12 build/release-darwin-x86/iowolfmp.x86
13 build/release-darwin-ppc/iowolfmp.ppc
14 "
15 BIN_DEDOBJ="
16 build/release-darwin-x86_64/iowolfded.x86_64
17 build/release-darwin-x86/iowolfded.x86
18 build/release-darwin-ppc/iowolfded.ppc
19 "
20 BASE_OBJ="
21 build/release-darwin-x86_64/$BASEDIR/cgame.mp.x86_64.dylib
22 build/release-darwin-x86/$BASEDIR/cgame.mp.i386.dylib
23 build/release-darwin-ppc/$BASEDIR/cgame.mp.ppc.dylib
24 build/release-darwin-x86_64/$BASEDIR/ui.mp.x86_64.dylib
25 build/release-darwin-x86/$BASEDIR/ui.mp.i386.dylib
26 build/release-darwin-ppc/$BASEDIR/ui.mp.ppc.dylib
27 build/release-darwin-x86_64/$BASEDIR/qagame.mp.x86_64.dylib
28 build/release-darwin-x86/$BASEDIR/qagame.mp.i386.dylib
29 build/release-darwin-ppc/$BASEDIR/qagame.mp.ppc.dylib
30 "
31 RENDER_OBJ="
32 build/release-darwin-x86_64/renderer_mp_opengl1_x86_64.dylib
33 build/release-darwin-x86/renderer_mp_opengl1_i386.dylib
34 build/release-darwin-ppc/renderer_mp_opengl1_ppc.dylib
35 build/release-darwin-x86_64/renderer_mp_rend2_x86_64.dylib
36 build/release-darwin-x86/renderer_mp_rend2_i386.dylib
37 build/release-darwin-ppc/renderer_mp_rend2_ppc.dylib
38 "
392
403 cd `dirname $0`
414 if [ ! -f Makefile ]; then
42 echo "This script must be run from the iowolfmp build directory"
5 echo "This script must be run from the iortcw build directory"
436 exit 1
447 fi
458
46 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
47
48 # we want to use the oldest available SDK for max compatiblity. However 10.4 and older
9 # we want to use the oldest available SDK for max compatibility. However 10.4 and older
4910 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
5011 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
51 # enough gcc to actually compile iowolfmp
52 # For PPC macs, G4's or better are required to run iowolfmp.
12 # enough gcc to actually compile iortcw
13 # For PPC macs, G4's or better are required to run iortcw.
5314
5415 unset X86_64_SDK
5516 unset X86_64_CFLAGS
17 unset X86_64_MACOSX_VERSION_MIN
5618 unset X86_SDK
5719 unset X86_CFLAGS
20 unset X86_MACOSX_VERSION_MIN
5821 unset PPC_SDK
5922 unset PPC_CFLAGS
23 unset PPC_MACOSX_VERSION_MIN
6024
6125 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
26 X86_64_SDK=/Developer/SDKs/MacOSX10.5.sdk
27 X86_64_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
28 X86_64_MACOSX_VERSION_MIN="10.5"
29
30 X86_SDK=/Developer/SDKs/MacOSX10.5.sdk
31 X86_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
32 X86_MACOSX_VERSION_MIN="10.5"
33
6234 PPC_SDK=/Developer/SDKs/MacOSX10.5.sdk
63 PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk"
35 PPC_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
36 PPC_MACOSX_VERSION_MIN="10.5"
6437 fi
6538
39 # SDL 2.0.5+ (x86, x86_64) only supports MacOSX 10.6 and later
6640 if [ -d /Developer/SDKs/MacOSX10.6.sdk ]; then
6741 X86_64_SDK=/Developer/SDKs/MacOSX10.6.sdk
68 X86_64_CFLAGS="-arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
42 X86_64_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
43 X86_64_MACOSX_VERSION_MIN="10.6"
6944
7045 X86_SDK=/Developer/SDKs/MacOSX10.6.sdk
71 X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
46 X86_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
47 X86_MACOSX_VERSION_MIN="10.6"
48 else
49 # Don't try to compile with 10.5 version min
50 X86_64_SDK=
51 X86_SDK=
7252 fi
53 # end SDL 2.0.5
7354
7455 if [ -z $X86_64_SDK ] || [ -z $X86_SDK ] || [ -z $PPC_SDK ]; then
75 echo "\
56 echo "\
7657 ERROR: This script is for building a Universal Binary. You cannot build
7758 for a different architecture unless you have the proper Mac OS X SDKs
7859 installed. If you just want to to compile for your own system run
8162 In order to build a binary with maximum compatibility you must
8263 build on Mac OS X 10.6 and have the MacOSX10.5 and MacOSX10.6
8364 SDKs installed from the Xcode install disk Packages folder."
84 exit 1
65
66 exit 1
8567 fi
8668
8769 echo "Building X86_64 Client/Dedicated Server against \"$X86_64_SDK\""
8971 echo "Building PPC Client/Dedicated Server against \"$PPC_SDK\""
9072 echo
9173
92 if [ ! -d $DESTDIR ]; then
93 mkdir -p $DESTDIR
94 fi
95
9674 # For parallel make on multicore boxes...
9775 NCPU=`sysctl -n hw.ncpu`
9876
9977 # x86_64 client and server
100 if [ -d build/release-release-x86_64 ]; then
101 rm -r build/release-darwin-x86_64
102 fi
103 (ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS make -j$NCPU) || exit 1;
78 #if [ -d build/release-release-x86_64 ]; then
79 # rm -r build/release-darwin-x86_64
80 #fi
81 (ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS MACOSX_VERSION_MIN=$X86_64_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
10482
10583 echo;echo
10684
10785 # x86 client and server
108 if [ -d build/release-darwin-x86 ]; then
109 rm -r build/release-darwin-x86
110 fi
111 (ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS make -j$NCPU) || exit 1;
86 #if [ -d build/release-darwin-x86 ]; then
87 # rm -r build/release-darwin-x86
88 #fi
89 (ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS MACOSX_VERSION_MIN=$X86_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
11290
11391 echo;echo
11492
11593 # PPC client and server
116 if [ -d build/release-darwin-ppc ]; then
117 rm -r build/release-darwin-ppc
118 fi
119 (ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS make -j$NCPU) || exit 1;
94 #if [ -d build/release-darwin-ppc ]; then
95 # rm -r build/release-darwin-ppc
96 #fi
97 (ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS MACOSX_VERSION_MIN=$PPC_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
12098
121 echo;echo
99 echo
122100
123 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
124 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
125 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
126 fi
127 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
128 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
129 fi
130 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
131 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
132 echo "
133 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
134 <!DOCTYPE plist
135 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
136 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
137 <plist version=\"1.0\">
138 <dict>
139 <key>LSMinimumSystemVersion</key>
140 <string>10.5.0</string>
141 <key>LSMinimumSystemVersionByArchitecture</key>
142 <dict>
143 <key>i386</key>
144 <string>10.6.0</string>
145 <key>x86_64</key>
146 <string>10.6.0</string>
147 </dict>
148 <key>CFBundleDevelopmentRegion</key>
149 <string>English</string>
150 <key>CFBundleExecutable</key>
151 <string>$BINARY</string>
152 <key>CFBundleGetInfoString</key>
153 <string>iowolfmp $Q3_VERSION</string>
154 <key>CFBundleIconFile</key>
155 <string>iortcw.icns</string>
156 <key>CFBundleIdentifier</key>
157 <string>org.iortcw</string>
158 <key>CFBundleInfoDictionaryVersion</key>
159 <string>6.0</string>
160 <key>CFBundleName</key>
161 <string>iowolfmp</string>
162 <key>CFBundlePackageType</key>
163 <string>APPL</string>
164 <key>CFBundleShortVersionString</key>
165 <string>$Q3_VERSION</string>
166 <key>CFBundleSignature</key>
167 <string>$PKGINFO</string>
168 <key>CFBundleVersion</key>
169 <string>$Q3_VERSION</string>
170 <key>NSExtensions</key>
171 <dict/>
172 <key>NSPrincipalClass</key>
173 <string>NSApplication</string>
174 </dict>
175 </plist>
176 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
177
178
179 # Make UB's from previous builds of x86, x86_64 and ppc binaries
180 lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
181 lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
182
183 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
184 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
185 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
186
101 # use the following shell script to build a universal application bundle
102 export MACOSX_DEPLOYMENT_TARGET="10.5"
103 export MACOSX_DEPLOYMENT_TARGET_PPC="$PPC_MACOSX_VERSION_MIN"
104 export MACOSX_DEPLOYMENT_TARGET_X86="$X86_MACOSX_VERSION_MIN"
105 export MACOSX_DEPLOYMENT_TARGET_X86_64="$X86_64_MACOSX_VERSION_MIN"
106 "./make-macosx-app.sh" release
0 #!/bin/bash
1 #
2
3 # Let's make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "other valid options are x86_64 or ppc"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 elif [ "$1" == "x86_64" ]; then
17 BUILDARCH=x86_64
18 elif [ "$1" == "ppc" ]; then
19 BUILDARCH=ppc
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64 or ppc"
23 exit 1
24 fi
25
26 CC=gcc-4.0
27 DESTDIR=build/release-darwin-${BUILDARCH}
28
29 cd `dirname $0`
30 if [ ! -f Makefile ]; then
31 echo "This script must be run from the iortcw build directory"
32 exit 1
33 fi
34
35 # we want to use the oldest available SDK for max compatibility. However 10.4 and older
36 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
37 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
38 # enough gcc to actually compile iortcw
39 # For PPC macs, G4's or better are required to run iortcw.
40
41 unset ARCH_SDK
42 unset ARCH_CFLAGS
43 unset ARCH_MACOSX_VERSION_MIN
44
45 MACOS_VERSION=$(sw_vers -productVersion)
46 MACOS_MAJOR_VER=$(echo $MACOS_VERSION | awk -F. '{print $1}')
47 MACOS_MINOR_VER=$(echo $MACOS_VERSION | awk -F. '{print $2}')
48
49 # SDL 2.0.1 (ppc) supports MacOSX 10.5
50 # SDL 2.0.5+ (x86, x86_64) supports MacOSX 10.6 and later
51 if [ $BUILDARCH = "ppc" ]; then
52 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
53 ARCH_SDK=/Developer/SDKs/MacOSX10.5.sdk
54 ARCH_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
55 fi
56 ARCH_MACOSX_VERSION_MIN="10.5"
57 elif [ -d /Developer/SDKs/MacOSX10.6.sdk ]; then
58 ARCH_SDK=/Developer/SDKs/MacOSX10.6.sdk
59 ARCH_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
60 ARCH_MACOSX_VERSION_MIN="10.6"
61 elif [ $MACOS_MAJOR_VER == 10 ] && [ $MACOS_MINOR_VER >= 9 ] || [ $MACOS_MAJOR_VER > 10 ]; then
62 ARCH_MACOSX_VERSION_MIN="10.9"
63 else
64 ARCH_MACOSX_VERSION_MIN="10.7"
65 fi
66
67
68 echo "Building ${BUILDARCH} Client/Dedicated Server against \"$ARCH_SDK\""
69 sleep 3
70
71 if [ ! -d $DESTDIR ]; then
72 mkdir -p $DESTDIR
73 fi
74
75 # For parallel make on multicore boxes...
76 NCPU=`sysctl -n hw.ncpu`
77
78
79 # intel client and server
80 #if [ -d build/release-darwin-${BUILDARCH} ]; then
81 # rm -r build/release-darwin-${BUILDARCH}
82 #fi
83 (ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS MACOSX_VERSION_MIN=$ARCH_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
84
85 # use the following shell script to build an application bundle
86 export MACOSX_DEPLOYMENT_TARGET="${ARCH_MACOSX_VERSION_MIN}"
87 export MACOSX_DEPLOYMENT_TARGET_PPC=
88 export MACOSX_DEPLOYMENT_TARGET_X86=
89 export MACOSX_DEPLOYMENT_TARGET_X86_64=
90 "./make-macosx-app.sh" release ${BUILDARCH}
+0
-151
MP/make-macosx_xcode3.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "other valid options are x86_64 or ppc"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 elif [ "$1" == "ppc" ]; then
21 BUILDARCH=ppc
22 ARCH=ppc
23 else
24 echo "Invalid architecture: $1"
25 echo "Valid architectures are x86, x86_64 or ppc"
26 exit 1
27 fi
28
29 CC=gcc-4.0
30 APPBUNDLE=iowolfmp.app
31 BINARY=iowolfmp.${ARCH}
32 DEDBIN=iowolfded.${ARCH}
33 PKGINFO=APPLIOWOLFMP
34 ICNS=misc/iortcw.icns
35 DESTDIR=build/release-darwin-${BUILDARCH}
36 BASEDIR=main
37
38 BIN_OBJ="
39 build/release-darwin-${BUILDARCH}/iowolfmp.${BUILDARCH}
40 "
41 BIN_DEDOBJ="
42 build/release-darwin-${BUILDARCH}/iowolfded.${BUILDARCH}
43 "
44 BASE_OBJ="
45 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.mp.${ARCH}.dylib
46 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.mp.${ARCH}.dylib
47 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.mp.${ARCH}.dylib
48 "
49 RENDER_OBJ="
50 build/release-darwin-${BUILDARCH}/renderer_mp_opengl1_${ARCH}.dylib
51 build/release-darwin-${BUILDARCH}/renderer_mp_rend2_${ARCH}.dylib
52 "
53
54 cd `dirname $0`
55 if [ ! -f Makefile ]; then
56 echo "This script must be run from the iowolfmp build directory"
57 exit 1
58 fi
59
60 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
61
62 # We only care if we're >= 10.4, not if we're specifically Tiger.
63 # "8" is the Darwin major kernel version.
64 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
65
66 # we want to use the oldest available SDK for max compatiblity. However 10.4 and older
67 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
68 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
69 # enough gcc to actually compile iowolfmp
70 # For PPC macs, G4's or better are required to run iowolfmp.
71
72 unset ARCH_SDK
73 unset ARCH_CFLAGS
74
75 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
76 ARCH_SDK=/Developer/SDKs/MacOSX10.5.sdk
77 ARCH_CFLAGS="-arch ${ARCH} -isysroot /Developer/SDKs/MacOSX10.5.sdk"
78 fi
79
80
81 echo "Building ${BUILDARCH} Client/Dedicated Server against \"$ARCH_SDK\""
82 sleep 3
83
84 if [ ! -d $DESTDIR ]; then
85 mkdir -p $DESTDIR
86 fi
87
88 # For parallel make on multicore boxes...
89 NCPU=`sysctl -n hw.ncpu`
90
91
92 # intel client and server
93 if [ -d build/release-darwin-${BUILDARCH} ]; then
94 rm -r build/release-darwin-${BUILDARCH}
95 fi
96 (CC=${CC} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
97
98 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
99 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
100 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
101 fi
102 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
103 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
104 fi
105 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
106 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
107 echo "
108 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
109 <!DOCTYPE plist
110 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
111 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
112 <plist version=\"1.0\">
113 <dict>
114 <key>CFBundleDevelopmentRegion</key>
115 <string>English</string>
116 <key>CFBundleExecutable</key>
117 <string>$BINARY</string>
118 <key>CFBundleGetInfoString</key>
119 <string>iowolfmp $Q3_VERSION</string>
120 <key>CFBundleIconFile</key>
121 <string>iortcw.icns</string>
122 <key>CFBundleIdentifier</key>
123 <string>org.ioquake.iortcw</string>
124 <key>CFBundleInfoDictionaryVersion</key>
125 <string>6.0</string>
126 <key>CFBundleName</key>
127 <string>iowolfmp</string>
128 <key>CFBundlePackageType</key>
129 <string>APPL</string>
130 <key>CFBundleShortVersionString</key>
131 <string>$Q3_VERSION</string>
132 <key>CFBundleSignature</key>
133 <string>$PKGINFO</string>
134 <key>CFBundleVersion</key>
135 <string>$Q3_VERSION</string>
136 <key>NSExtensions</key>
137 <dict/>
138 <key>NSPrincipalClass</key>
139 <string>NSApplication</string>
140 </dict>
141 </plist>
142 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
143
144
145 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
146 cp $BIN_DEDOBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN
147 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
148 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
149 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
150 cp code/libs/macosx/*.dylib $DESTDIR
+0
-134
MP/make-macosx_xcode4.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "The other valid option is x86_64"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64"
23 exit 1
24 fi
25
26 CC=gcc
27 APPBUNDLE=iowolfmp.app
28 BINARY=iowolfmp.${ARCH}
29 DEDBIN=iowolfded.${ARCH}
30 PKGINFO=APPLIOWOLFMP
31 ICNS=misc/iortcw.icns
32 DESTDIR=build/release-darwin-${BUILDARCH}
33 BASEDIR=main
34
35 BIN_OBJ="
36 build/release-darwin-${BUILDARCH}/iowolfmp.${BUILDARCH}
37 "
38 BIN_DEDOBJ="
39 build/release-darwin-${BUILDARCH}/iowolfded.${BUILDARCH}
40 "
41 BASE_OBJ="
42 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.mp.${ARCH}.dylib
43 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.mp.${ARCH}.dylib
44 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.mp.${ARCH}.dylib
45 "
46 RENDER_OBJ="
47 build/release-darwin-${BUILDARCH}/renderer_mp_opengl1_${ARCH}.dylib
48 build/release-darwin-${BUILDARCH}/renderer_mp_rend2_${ARCH}.dylib
49 "
50
51 cd `dirname $0`
52 if [ ! -f Makefile ]; then
53 echo "This script must be run from the iowolfmp build directory"
54 exit 1
55 fi
56
57 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
58
59 # We only care if we're >= 10.4, not if we're specifically Tiger.
60 # "8" is the Darwin major kernel version.
61 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
62
63 unset ARCH_CFLAGS
64
65 ARCH_CFLAGS="-arch ${ARCH}"
66
67 if [ ! -d $DESTDIR ]; then
68 mkdir -p $DESTDIR
69 fi
70
71 # For parallel make on multicore boxes...
72 NCPU=`sysctl -n hw.ncpu`
73
74
75 # intel client and server
76 if [ -d build/release-darwin-${BUILDARCH} ]; then
77 rm -r build/release-darwin-${BUILDARCH}
78 fi
79 (CC=${CC} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
80
81 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
82 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
83 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
84 fi
85 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
86 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
87 fi
88 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
89 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
90 echo "
91 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
92 <!DOCTYPE plist
93 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
94 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
95 <plist version=\"1.0\">
96 <dict>
97 <key>CFBundleDevelopmentRegion</key>
98 <string>English</string>
99 <key>CFBundleExecutable</key>
100 <string>$BINARY</string>
101 <key>CFBundleGetInfoString</key>
102 <string>iowolfmp $Q3_VERSION</string>
103 <key>CFBundleIconFile</key>
104 <string>iortcw.icns</string>
105 <key>CFBundleIdentifier</key>
106 <string>org.ioquake.iortcw</string>
107 <key>CFBundleInfoDictionaryVersion</key>
108 <string>6.0</string>
109 <key>CFBundleName</key>
110 <string>iowolfmp</string>
111 <key>CFBundlePackageType</key>
112 <string>APPL</string>
113 <key>CFBundleShortVersionString</key>
114 <string>$Q3_VERSION</string>
115 <key>CFBundleSignature</key>
116 <string>$PKGINFO</string>
117 <key>CFBundleVersion</key>
118 <string>$Q3_VERSION</string>
119 <key>NSExtensions</key>
120 <dict/>
121 <key>NSPrincipalClass</key>
122 <string>NSApplication</string>
123 </dict>
124 </plist>
125 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
126
127
128 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
129 cp $BIN_DEDOBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN
130 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
131 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
132 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
133 cp code/libs/macosx/*.dylib $DESTDIR
+0
-134
MP/make-macosx_xcode5.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "The other valid option is x86_64"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64"
23 exit 1
24 fi
25
26 CC=clang
27 APPBUNDLE=iowolfmp.app
28 BINARY=iowolfmp.${ARCH}
29 DEDBIN=iowolfded.${ARCH}
30 PKGINFO=APPLIOWOLFMP
31 ICNS=misc/iortcw.icns
32 DESTDIR=build/release-darwin-${BUILDARCH}
33 BASEDIR=main
34
35 BIN_OBJ="
36 build/release-darwin-${BUILDARCH}/iowolfmp.${BUILDARCH}
37 "
38 BIN_DEDOBJ="
39 build/release-darwin-${BUILDARCH}/iowolfded.${BUILDARCH}
40 "
41 BASE_OBJ="
42 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.mp.${ARCH}.dylib
43 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.mp.${ARCH}.dylib
44 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.mp.${ARCH}.dylib
45 "
46 RENDER_OBJ="
47 build/release-darwin-${BUILDARCH}/renderer_mp_opengl1_${ARCH}.dylib
48 build/release-darwin-${BUILDARCH}/renderer_mp_rend2_${ARCH}.dylib
49 "
50
51 cd `dirname $0`
52 if [ ! -f Makefile ]; then
53 echo "This script must be run from the iowolfmp build directory"
54 exit 1
55 fi
56
57 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
58
59 # We only care if we're >= 10.4, not if we're specifically Tiger.
60 # "8" is the Darwin major kernel version.
61 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
62
63 unset ARCH_CFLAGS
64
65 ARCH_CFLAGS="-arch ${ARCH}"
66
67 if [ ! -d $DESTDIR ]; then
68 mkdir -p $DESTDIR
69 fi
70
71 # For parallel make on multicore boxes...
72 NCPU=`sysctl -n hw.ncpu`
73
74
75 # intel client and server
76 if [ -d build/release-darwin-${BUILDARCH} ]; then
77 rm -r build/release-darwin-${BUILDARCH}
78 fi
79 (CC=${CC} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
80
81 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
82 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
83 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
84 fi
85 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
86 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
87 fi
88 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
89 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
90 echo "
91 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
92 <!DOCTYPE plist
93 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
94 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
95 <plist version=\"1.0\">
96 <dict>
97 <key>CFBundleDevelopmentRegion</key>
98 <string>English</string>
99 <key>CFBundleExecutable</key>
100 <string>$BINARY</string>
101 <key>CFBundleGetInfoString</key>
102 <string>iowolfmp $Q3_VERSION</string>
103 <key>CFBundleIconFile</key>
104 <string>iortcw.icns</string>
105 <key>CFBundleIdentifier</key>
106 <string>org.ioquake.iortcw</string>
107 <key>CFBundleInfoDictionaryVersion</key>
108 <string>6.0</string>
109 <key>CFBundleName</key>
110 <string>iowolfmp</string>
111 <key>CFBundlePackageType</key>
112 <string>APPL</string>
113 <key>CFBundleShortVersionString</key>
114 <string>$Q3_VERSION</string>
115 <key>CFBundleSignature</key>
116 <string>$PKGINFO</string>
117 <key>CFBundleVersion</key>
118 <string>$Q3_VERSION</string>
119 <key>NSExtensions</key>
120 <dict/>
121 <key>NSPrincipalClass</key>
122 <string>NSApplication</string>
123 </dict>
124 </plist>
125 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
126
127
128 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
129 cp $BIN_DEDOBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN
130 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
131 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
132 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
133 cp code/libs/macosx/*.dylib $DESTDIR
0 ///////////////// terrain ////////////////////
1 //////////////////////////////////////////////
2
3 textures/terrain/mxterra1_0
4 {
5 surfaceparm nolightmap
6 q3map_novertexshadows
7 q3map_forcesunlight
8 {
9 map textures/stone/mxrock9c.tga
10 rgbGen vertexLit
11 tcmod scale 0.125 0.125
12 }
13 {
14 map textures/skies2/clouds2.tga
15 blendfunc filter
16 tcmod scale 0.01 0.01
17 tcMod scroll -0.01 -0.05
18 }
19 }
20
21 textures/terrain/mxterra1_1
22 {
23 surfaceparm nolightmap
24 q3map_novertexshadows
25 q3map_forcesunlight
26 {
27 map textures/stone/mxrock12c.tga
28 rgbGen vertexLit
29 tcmod scale 0.125 0.125
30 }
31 {
32 map textures/skies2/clouds2.tga
33 blendfunc filter
34 tcmod scale 0.01 0.01
35 tcMod scroll -0.01 -0.05
36 }
37 }
38
39 textures/terrain/mxterra1_2
40 {
41 surfaceparm nolightmap
42 q3map_novertexshadows
43 q3map_forcesunlight
44 {
45 map textures/stone/mxrock10c.tga
46 tcmod scale 0.05 0.05
47 rgbGen vertexLit
48 }
49 {
50 map textures/skies2/clouds2.tga
51 blendfunc filter
52 tcmod scale 0.01 0.01
53 tcMod scroll -0.01 -0.05
54 }
55
56 }
57 textures/terrain/mxterra1_0to1
58 {
59 surfaceparm nolightmap
60 q3map_novertexshadows
61 q3map_forcesunlight
62 {
63 map textures/stone/mxrock9c.tga
64 rgbGen vertexLit
65 alphaGen vertex
66 tcmod scale 0.125 0.125
67 }
68 {
69 map textures/stone/mxrock12c.tga
70 tcmod scale 0.125 0.125
71 rgbGen vertexLit
72 alphaGen vertex
73 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
74 }
75 {
76 map textures/skies2/clouds2.tga
77 blendfunc filter
78 tcmod scale 0.01 0.01
79 tcMod scroll -0.01 -0.05
80 }
81 }
82
83 textures/terrain/mxterra1_0to2
84 {
85 surfaceparm nolightmap
86 q3map_novertexshadows
87 q3map_forcesunlight
88 {
89 map textures/stone/mxrock9c.tga
90 rgbGen vertexLit
91 alphaGen vertex
92 tcmod scale 0.125 0.125
93 }
94 {
95 map textures/stone/mxrock10c.tga
96 tcmod scale 0.05 0.05
97 rgbGen vertexLit
98 alphaGen vertex
99 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
100 }
101 {
102 map textures/skies2/clouds2.tga
103 blendfunc filter
104 tcmod scale 0.01 0.01
105 tcMod scroll -0.01 -0.05
106 }
107 }
108
109 textures/terrain/mxterra1_1to2
110 {
111 surfaceparm nolightmap
112 q3map_novertexshadows
113 q3map_forcesunlight
114 {
115 map textures/stone/mxrock12c.tga
116 rgbGen vertexLit
117 alphaGen vertex
118 tcmod scale 0.125 0.125
119 }
120 {
121 map textures/stone/mxrock10c.tga
122 tcmod scale 0.05 0.05
123 rgbGen vertexLit
124 alphaGen vertex
125 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
126 }
127 {
128 map textures/skies2/clouds2.tga
129 blendfunc filter
130 tcmod scale 0.01 0.01
131 tcMod scroll -0.01 -0.05
132 }
133 }
134
135 ///////////////// baseout ////////////////////
136 //////////////////////////////////////////////
137
138 textures/terrain/mxterra2_0
139 {
140 surfaceparm grasssteps
141 surfaceparm nolightmap
142 q3map_novertexshadows
143 q3map_forcesunlight
144 {
145 map textures/stone/mxrock0b.tga
146 rgbGen vertexLit
147 tcmod scale 0.1 0.1
148 }
149 }
150
151 textures/terrain/mxterra2_1
152 {
153 surfaceparm gravelsteps
154 surfaceparm nolightmap
155 q3map_novertexshadows
156 q3map_forcesunlight
157 {
158 map textures/stone/mxrock1b.tga
159 rgbGen vertexLit
160 tcmod scale 0.1 0.1
161 }
162 }
163
164 textures/terrain/mxterra2_2
165 {
166 surfaceparm grasssteps
167 surfaceparm nolightmap
168 q3map_novertexshadows
169 q3map_forcesunlight
170 {
171 map textures/stone/mxrock2b.tga
172 tcmod scale 0.05 0.05
173 rgbGen vertexLit
174 }
175 }
176
177 textures/terrain/mxterra2_3
178 {
179 surfaceparm nolightmap
180 q3map_novertexshadows
181 q3map_forcesunlight
182 {
183 map textures/stone/mxrock3g.tga
184 tcmod scale 0.05 0.05
185 rgbGen vertexLit
186 }
187 }
188
189 textures/terrain/mxterra2_4
190 {
191 surfaceparm nolightmap
192 q3map_novertexshadows
193 q3map_forcesunlight
194 {
195 map textures/stone/mxrock4b.tga
196 tcmod scale 0.1 0.1
197 rgbGen vertexLit
198 }
199 }
200
201 textures/terrain/mxterra2_0to1
202 {
203 surfaceparm grasssteps
204 surfaceparm nolightmap
205 q3map_novertexshadows
206 q3map_forcesunlight
207 {
208 map textures/stone/mxrock0b.tga
209 rgbGen vertexLit
210 alphaGen vertex
211 tcmod scale 0.1 0.1
212 }
213 {
214 map textures/stone/mxrock1b.tga
215 tcmod scale 0.1 0.1
216 rgbGen vertexLit
217 alphaGen vertex
218 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
219 }
220 }
221
222 textures/terrain/mxterra2_0to2
223 {
224 surfaceparm grasssteps
225 surfaceparm nolightmap
226 q3map_novertexshadows
227 q3map_forcesunlight
228 {
229 map textures/stone/mxrock0b.tga
230 rgbGen vertexLit
231 alphaGen vertex
232 tcmod scale 0.1 0.1
233 }
234 {
235 map textures/stone/mxrock2b.tga
236 tcmod scale 0.05 0.05
237 rgbGen vertexLit
238 alphaGen vertex
239 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
240 }
241 }
242
243 textures/terrain/mxterra2_0to3
244 {
245 surfaceparm grasssteps
246 surfaceparm nolightmap
247 q3map_novertexshadows
248 q3map_forcesunlight
249 {
250 map textures/stone/mxrock0b.tga
251 rgbGen vertexLit
252 alphaGen vertex
253 tcmod scale 0.1 0.1
254 }
255 {
256 map textures/stone/mxrock3g.tga
257 tcmod scale 0.05 0.05
258 rgbGen vertexLit
259 alphaGen vertex
260 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
261 }
262 }
263
264 textures/terrain/mxterra2_0to4
265 {
266 surfaceparm grasssteps
267 surfaceparm nolightmap
268 q3map_novertexshadows
269 q3map_forcesunlight
270 {
271 map textures/stone/mxrock0b.tga
272 rgbGen vertexLit
273 alphaGen vertex
274 tcmod scale 0.1 0.1
275 }
276 {
277 map textures/stone/mxrock4b.tga
278 tcmod scale 0.1 0.1
279 rgbGen vertexLit
280 alphaGen vertex
281 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
282 }
283 }
284
285
286 textures/terrain/mxterra2_1to2
287 {
288 surfaceparm grasssteps
289 surfaceparm nolightmap
290 q3map_novertexshadows
291 q3map_forcesunlight
292 {
293 map textures/stone/mxrock1b.tga
294 rgbGen vertexLit
295 alphaGen vertex
296 tcmod scale 0.1 0.1
297 }
298 {
299 map textures/stone/mxrock2b.tga
300 tcmod scale 0.05 0.05
301 rgbGen vertexLit
302 alphaGen vertex
303 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
304 }
305 }
306
307 textures/terrain/mxterra2_1to3
308 {
309 surfaceparm gravelsteps
310 surfaceparm nolightmap
311 q3map_novertexshadows
312 q3map_forcesunlight
313 {
314 map textures/stone/mxrock1b.tga
315 rgbGen vertexLit
316 alphaGen vertex
317 tcmod scale 0.1 0.1
318 }
319 {
320 map textures/stone/mxrock3g.tga
321 tcmod scale 0.05 0.05
322 rgbGen vertexLit
323 alphaGen vertex
324 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
325 }
326 }
327
328 textures/terrain/mxterra2_1to4
329 {
330 surfaceparm gravelsteps
331 surfaceparm nolightmap
332 q3map_novertexshadows
333 q3map_forcesunlight
334 {
335 map textures/stone/mxrock1b.tga
336 rgbGen vertexLit
337 alphaGen vertex
338 tcmod scale 0.1 0.1
339 }
340 {
341 map textures/stone/mxrock4b.tga
342 tcmod scale 0.1 0.1
343 rgbGen vertexLit
344 alphaGen vertex
345 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
346 }
347 }
348
349 textures/terrain/mxterra2_2to3
350 {
351 surfaceparm grasssteps
352 surfaceparm nolightmap
353 q3map_novertexshadows
354 q3map_forcesunlight
355 {
356 map textures/stone/mxrock2b.tga
357 rgbGen vertexLit
358 alphaGen vertex
359 tcmod scale 0.05 0.05
360 }
361 {
362 map textures/stone/mxrock3g.tga
363 tcmod scale 0.05 0.05
364 rgbGen vertexLit
365 alphaGen vertex
366 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
367 }
368 }
369
370 textures/terrain/mxterra2_2to4
371 {
372 surfaceparm grasssteps
373 surfaceparm nolightmap
374 q3map_novertexshadows
375 q3map_forcesunlight
376 {
377 map textures/stone/mxrock2b.tga
378 rgbGen vertexLit
379 alphaGen vertex
380 tcmod scale 0.05 0.05
381 }
382 {
383 map textures/stone/mxrock4b.tga
384 tcmod scale 0.1 0.1
385 rgbGen vertexLit
386 alphaGen vertex
387 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
388 }
389 }
390
391
392 textures/terrain/mxterra2_3to4
393 {
394 surfaceparm nolightmap
395 q3map_novertexshadows
396 q3map_forcesunlight
397 {
398 map textures/stone/mxrock3g.tga
399 rgbGen vertexLit
400 alphaGen vertex
401 tcmod scale 0.05 0.05
402 }
403 {
404 map textures/stone/mxrock4b.tga
405 tcmod scale 0.1 0.1
406 rgbGen vertexLit
407 alphaGen vertex
408 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
409 }
410 }
411
412
413 ///////////////// forest ////////////////////////
414 /////////////////////////////////////////////////
415
416 textures/terrain/mxterra3_0
417 {
418 surfaceparm grasssteps
419 surfaceparm nolightmap
420 q3map_novertexshadows
421 q3map_forcesunlight
422 {
423 map textures/stone/mxrock0b.tga
424 rgbGen vertexLit
425 tcmod scale 0.1 0.1
426 }
427 {
428 map textures/skies2/clouds2.tga
429 blendfunc filter
430 tcmod scale 0.01 0.01
431 tcMod scroll -0.01 -0.05
432 }
433 }
434
435 textures/terrain/mxterra3_1
436 {
437 surfaceparm gravelsteps
438 surfaceparm nolightmap
439 q3map_novertexshadows
440 q3map_forcesunlight
441 {
442 map textures/stone/mxrock1b.tga
443 rgbGen vertexLit
444 tcmod scale 0.1 0.1
445 }
446 {
447 map textures/skies2/clouds2.tga
448 blendfunc filter
449 tcmod scale 0.01 0.01
450 tcMod scroll -0.01 -0.05
451 }
452 }
453
454 textures/terrain/mxterra3_2
455 {
456 surfaceparm grasssteps
457 surfaceparm nolightmap
458 q3map_novertexshadows
459 q3map_forcesunlight
460 {
461 map textures/stone/mxrock2b.tga
462 tcmod scale 0.05 0.05
463 rgbGen vertexLit
464 }
465 {
466 map textures/skies2/clouds2.tga
467 blendfunc filter
468 tcmod scale 0.01 0.01
469 tcMod scroll -0.01 -0.05
470 }
471 }
472
473 textures/terrain/mxterra3_3
474 {
475 surfaceparm nolightmap
476 q3map_novertexshadows
477 q3map_forcesunlight
478 {
479 map textures/stone/mxrock3g.tga
480 tcmod scale 0.05 0.05
481 rgbGen vertexLit
482 }
483 {
484 map textures/skies2/clouds2.tga
485 blendfunc filter
486 tcmod scale 0.01 0.01
487 tcMod scroll -0.01 -0.05
488 }
489 }
490
491 textures/terrain/mxterra3_4
492 {
493 surfaceparm nolightmap
494 q3map_novertexshadows
495 q3map_forcesunlight
496 {
497 map textures/stone/mxrock4b.tga
498 tcmod scale 0.1 0.1
499 rgbGen vertexLit
500 }
501 {
502 map textures/skies2/clouds2.tga
503 blendfunc filter
504 tcmod scale 0.01 0.01
505 tcMod scroll -0.01 -0.05
506 }
507 }
508
509 textures/terrain/mxterra3_0to1
510 {
511 surfaceparm grasssteps
512 surfaceparm nolightmap
513 q3map_novertexshadows
514 q3map_forcesunlight
515 {
516 map textures/stone/mxrock0b.tga
517 rgbGen vertexLit
518 alphaGen vertex
519 tcmod scale 0.1 0.1
520 }
521 {
522 map textures/stone/mxrock1b.tga
523 tcmod scale 0.1 0.1
524 rgbGen vertexLit
525 alphaGen vertex
526 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
527 }
528 {
529 map textures/skies2/clouds2.tga
530 blendfunc filter
531 tcmod scale 0.01 0.01
532 tcMod scroll -0.01 -0.05
533 }
534 }
535
536 textures/terrain/mxterra3_0to2
537 {
538 surfaceparm grasssteps
539 surfaceparm nolightmap
540 q3map_novertexshadows
541 q3map_forcesunlight
542 {
543 map textures/stone/mxrock0b.tga
544 rgbGen vertexLit
545 alphaGen vertex
546 tcmod scale 0.1 0.1
547 }
548 {
549 map textures/stone/mxrock2b.tga
550 tcmod scale 0.05 0.05
551 rgbGen vertexLit
552 alphaGen vertex
553 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
554 }
555 {
556 map textures/skies2/clouds2.tga
557 blendfunc filter
558 tcmod scale 0.01 0.01
559 tcMod scroll -0.01 -0.05
560 }
561 }
562
563 textures/terrain/mxterra3_0to3
564 {
565 surfaceparm grasssteps
566 surfaceparm nolightmap
567 q3map_novertexshadows
568 q3map_forcesunlight
569 {
570 map textures/stone/mxrock0b.tga
571 rgbGen vertexLit
572 alphaGen vertex
573 tcmod scale 0.1 0.1
574 }
575 {
576 map textures/stone/mxrock3g.tga
577 tcmod scale 0.05 0.05
578 rgbGen vertexLit
579 alphaGen vertex
580 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
581 }
582 {
583 map textures/skies2/clouds2.tga
584 blendfunc filter
585 tcmod scale 0.01 0.01
586 tcMod scroll -0.01 -0.05
587 }
588 }
589
590 textures/terrain/mxterra3_0to4
591 {
592 surfaceparm grasssteps
593 surfaceparm nolightmap
594 q3map_novertexshadows
595 q3map_forcesunlight
596 {
597 map textures/stone/mxrock0b.tga
598 rgbGen vertexLit
599 alphaGen vertex
600 tcmod scale 0.1 0.1
601 }
602 {
603 map textures/stone/mxrock4b.tga
604 tcmod scale 0.1 0.1
605 rgbGen vertexLit
606 alphaGen vertex
607 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
608 }
609 {
610 map textures/skies2/clouds2.tga
611 blendfunc filter
612 tcmod scale 0.01 0.01
613 tcMod scroll -0.01 -0.05
614 }
615 }
616
617
618 textures/terrain/mxterra3_1to2
619 {
620 surfaceparm grasssteps
621 surfaceparm nolightmap
622 q3map_novertexshadows
623 q3map_forcesunlight
624 {
625 map textures/stone/mxrock1b.tga
626 rgbGen vertexLit
627 alphaGen vertex
628 tcmod scale 0.1 0.1
629 }
630 {
631 map textures/stone/mxrock2b.tga
632 tcmod scale 0.05 0.05
633 rgbGen vertexLit
634 alphaGen vertex
635 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
636 }
637 {
638 map textures/skies2/clouds2.tga
639 blendfunc filter
640 tcmod scale 0.01 0.01
641 tcMod scroll -0.01 -0.05
642 }
643 }
644
645 textures/terrain/mxterra3_1to3
646 {
647 surfaceparm gravelsteps
648 surfaceparm nolightmap
649 q3map_novertexshadows
650 q3map_forcesunlight
651 {
652 map textures/stone/mxrock1b.tga
653 rgbGen vertexLit
654 alphaGen vertex
655 tcmod scale 0.1 0.1
656 }
657 {
658 map textures/stone/mxrock3g.tga
659 tcmod scale 0.05 0.05
660 rgbGen vertexLit
661 alphaGen vertex
662 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
663 }
664 {
665 map textures/skies2/clouds2.tga
666 blendfunc filter
667 tcmod scale 0.01 0.01
668 tcMod scroll -0.01 -0.05
669 }
670 }
671
672 textures/terrain/mxterra3_1to4
673 {
674 surfaceparm gravelsteps
675 surfaceparm nolightmap
676 q3map_novertexshadows
677 q3map_forcesunlight
678 {
679 map textures/stone/mxrock1b.tga
680 rgbGen vertexLit
681 alphaGen vertex
682 tcmod scale 0.1 0.1
683 }
684 {
685 map textures/stone/mxrock4b.tga
686 tcmod scale 0.1 0.1
687 rgbGen vertexLit
688 alphaGen vertex
689 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
690 }
691 {
692 map textures/skies2/clouds2.tga
693 blendfunc filter
694 tcmod scale 0.01 0.01
695 tcMod scroll -0.01 -0.05
696 }
697 }
698
699 textures/terrain/mxterra3_2to3
700 {
701 surfaceparm grasssteps
702 surfaceparm nolightmap
703 q3map_novertexshadows
704 q3map_forcesunlight
705 {
706 map textures/stone/mxrock2b.tga
707 rgbGen vertexLit
708 alphaGen vertex
709 tcmod scale 0.05 0.05
710 }
711 {
712 map textures/stone/mxrock3g.tga
713 tcmod scale 0.05 0.05
714 rgbGen vertexLit
715 alphaGen vertex
716 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
717 }
718 {
719 map textures/skies2/clouds2.tga
720 blendfunc filter
721 tcmod scale 0.01 0.01
722 tcMod scroll -0.01 -0.05
723 }
724 }
725
726 textures/terrain/mxterra3_2to4
727 {
728 surfaceparm grasssteps
729 surfaceparm nolightmap
730 q3map_novertexshadows
731 q3map_forcesunlight
732 {
733 map textures/stone/mxrock2b.tga
734 rgbGen vertexLit
735 alphaGen vertex
736 tcmod scale 0.05 0.05
737 }
738 {
739 map textures/stone/mxrock4b.tga
740 tcmod scale 0.1 0.1
741 rgbGen vertexLit
742 alphaGen vertex
743 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
744 }
745 {
746 map textures/skies2/clouds2.tga
747 blendfunc filter
748 tcmod scale 0.01 0.01
749 tcMod scroll -0.01 -0.05
750 }
751 }
752
753 textures/terrain/mxterra3_3to4
754 {
755 surfaceparm nolightmap
756 q3map_novertexshadows
757 q3map_forcesunlight
758 {
759 map textures/stone/mxrock3g.tga
760 rgbGen vertexLit
761 alphaGen vertex
762 tcmod scale 0.05 0.05
763 }
764 {
765 map textures/stone/mxrock4b.tga
766 tcmod scale 0.1 0.1
767 rgbGen vertexLit
768 alphaGen vertex
769 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
770 }
771 {
772 map textures/skies2/clouds2.tga
773 blendfunc filter
774 tcmod scale 0.01 0.01
775 tcMod scroll -0.01 -0.05
776 }
777 }
778
779
780 ///////////////// sfm ////////////////////////
781 //////////////////////////////////////////////
782
783 textures/terrain/mxterra4_0
784 {
785 surfaceparm nolightmap
786 q3map_novertexshadows
787 q3map_forcesunlight
788 {
789 map textures/stone/mxdebri0.tga
790 rgbGen vertexLit
791 tcmod scale 0.25 0.25
792 }
793 }
794
795 textures/terrain/mxterra4_1
796 {
797 surfaceparm nolightmap
798 q3map_novertexshadows
799 q3map_forcesunlight
800 {
801 map textures/stone/mxdebri1.tga
802 rgbGen vertexLit
803 tcmod scale 0.25 0.25
804 }
805 }
806
807 textures/terrain/mxterra4_2
808 {
809 surfaceparm nolightmap
810 q3map_novertexshadows
811 q3map_forcesunlight
812 {
813 map textures/stone/mxdebri2.tga
814 rgbGen vertexLit
815 tcmod scale 0.05 0.05
816 }
817 }
818
819 textures/terrain/mxterra4_3
820 {
821 surfaceparm nolightmap
822 q3map_novertexshadows
823 q3map_forcesunlight
824 {
825 map textures/stone/mxdebri3.tga
826 rgbGen vertexLit
827 tcmod scale 0.05 0.05
828 }
829 }
830
831 textures/terrain/mxterra4_4
832 {
833 surfaceparm nolightmap
834 q3map_novertexshadows
835 q3map_forcesunlight
836 {
837 map textures/stone/mxdebri4.tga
838 rgbGen vertexLit
839 tcmod scale 0.05 0.05
840 }
841 }
842
843 textures/terrain/mxterra4_0to1
844 {
845 surfaceparm nolightmap
846 q3map_novertexshadows
847 q3map_forcesunlight
848 {
849 map textures/stone/mxdebri0.tga
850 rgbGen vertexLit
851 alphaGen vertex
852 tcmod scale 0.25 0.25
853 }
854 {
855 map textures/stone/mxdebri1.tga
856 rgbGen vertexLit
857 alphaGen vertex
858 tcmod scale 0.25 0.25
859 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
860 }
861 }
862
863 textures/terrain/mxterra4_0to2
864 {
865 surfaceparm nolightmap
866 q3map_novertexshadows
867 q3map_forcesunlight
868 {
869 map textures/stone/mxdebri0.tga
870 rgbGen vertexLit
871 alphaGen vertex
872 tcmod scale 0.25 0.25
873 }
874 {
875 map textures/stone/mxdebri2.tga
876 rgbGen vertexLit
877 alphaGen vertex
878 tcmod scale 0.05 0.05
879 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
880 }
881 }
882
883 textures/terrain/mxterra4_0to3
884 {
885 surfaceparm nolightmap
886 q3map_novertexshadows
887 q3map_forcesunlight
888 {
889 map textures/stone/mxdebri0.tga
890 rgbGen vertexLit
891 alphaGen vertex
892 tcmod scale 0.25 0.25
893 }
894 {
895 map textures/stone/mxdebri3.tga
896 rgbGen vertexLit
897 alphaGen vertex
898 tcmod scale 0.05 0.05
899 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
900 }
901 }
902
903 textures/terrain/mxterra4_0to4
904 {
905 surfaceparm nolightmap
906 q3map_novertexshadows
907 q3map_forcesunlight
908 {
909 map textures/stone/mxdebri0.tga
910 rgbGen vertexLit
911 alphaGen vertex
912 tcmod scale 0.25 0.25
913 }
914 {
915 map textures/stone/mxdebri4.tga
916 rgbGen vertexLit
917 alphaGen vertex
918 tcmod scale 0.05 0.05
919 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
920 }
921 }
922
923
924 textures/terrain/mxterra4_1to2
925 {
926 surfaceparm nolightmap
927 q3map_novertexshadows
928 q3map_forcesunlight
929 {
930 map textures/stone/mxdebri1.tga
931 rgbGen vertexLit
932 alphaGen vertex
933 tcmod scale 0.25 0.25
934 }
935 {
936 map textures/stone/mxdebri2.tga
937 rgbGen vertexLit
938 alphaGen vertex
939 tcmod scale 0.05 0.05
940 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
941 }
942 }
943
944 textures/terrain/mxterra4_1to3
945 {
946 surfaceparm nolightmap
947 q3map_novertexshadows
948 q3map_forcesunlight
949 {
950 map textures/stone/mxdebri1.tga
951 rgbGen vertexLit
952 alphaGen vertex
953 tcmod scale 0.25 0.25
954 }
955 {
956 map textures/stone/mxdebri3.tga
957 rgbGen vertexLit
958 alphaGen vertex
959 tcmod scale 0.05 0.05
960 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
961 }
962 }
963
964 textures/terrain/mxterra4_1to4
965 {
966 surfaceparm nolightmap
967 q3map_novertexshadows
968 q3map_forcesunlight
969 {
970 map textures/stone/mxdebri1.tga
971 rgbGen vertexLit
972 alphaGen vertex
973 tcmod scale 0.25 0.25
974 }
975 {
976 map textures/stone/mxdebri4.tga
977 rgbGen vertexLit
978 alphaGen vertex
979 tcmod scale 0.05 0.05
980 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
981 }
982 }
983
984 textures/terrain/mxterra4_2to3
985 {
986 surfaceparm nolightmap
987 q3map_novertexshadows
988 q3map_forcesunlight
989 {
990 map textures/stone/mxdebri2.tga
991 rgbGen vertexLit
992 alphaGen vertex
993 tcmod scale 0.05 0.05
994 }
995 {
996 map textures/stone/mxdebri3.tga
997 tcmod scale 0.05 0.05
998 rgbGen vertexLit
999 alphaGen vertex
1000 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1001 }
1002 }
1003
1004 textures/terrain/mxterra4_2to4
1005 {
1006 surfaceparm nolightmap
1007 q3map_novertexshadows
1008 q3map_forcesunlight
1009 {
1010 map textures/stone/mxdebri2.tga
1011 rgbGen vertexLit
1012 alphaGen vertex
1013 tcmod scale 0.05 0.05
1014 }
1015 {
1016 map textures/stone/mxdebri4.tga
1017 tcmod scale 0.05 0.05
1018 rgbGen vertexLit
1019 alphaGen vertex
1020 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1021 }
1022 }
1023
1024
1025 textures/terrain/mxterra4_3to4
1026 {
1027 surfaceparm nolightmap
1028 q3map_novertexshadows
1029 q3map_forcesunlight
1030 {
1031 map textures/stone/mxdebri3.tga
1032 rgbGen vertexLit
1033 alphaGen vertex
1034 tcmod scale 0.05 0.05
1035 }
1036 {
1037 map textures/stone/mxdebri4.tga
1038 tcmod scale 0.05 0.05
1039 rgbGen vertexLit
1040 alphaGen vertex
1041 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1042 }
1043 }
1044
1045
1046 ///////////////// snow ///////////////////////
1047 //////////////////////////////////////////////
1048
1049 textures/terrain/mxterra5_0
1050 {
1051 surfaceparm grasssteps
1052 surfaceparm nolightmap
1053 q3map_novertexshadows
1054 q3map_forcesunlight
1055 {
1056 map textures/stone/mxsnow0.tga
1057 rgbGen vertexLit
1058 tcmod scale 0.05 0.05
1059 }
1060 {
1061 map textures/skies2/clouds2.tga
1062 blendfunc filter
1063 tcmod scale 0.01 0.01
1064 tcMod scroll -0.01 -0.05
1065 }
1066 }
1067
1068 textures/terrain/mxterra5_1
1069 {
1070 surfaceparm gravelsteps
1071 surfaceparm nolightmap
1072 q3map_novertexshadows
1073 q3map_forcesunlight
1074 {
1075 map textures/stone/mxsnow1.tga
1076 rgbGen vertexLit
1077 tcmod scale 0.025 0.025
1078 }
1079 {
1080 map textures/skies2/clouds2.tga
1081 blendfunc filter
1082 tcmod scale 0.01 0.01
1083 tcMod scroll -0.01 -0.05
1084 }
1085 }
1086
1087 textures/terrain/mxterra5_2
1088 {
1089 surfaceparm grasssteps
1090 surfaceparm nolightmap
1091 q3map_novertexshadows
1092 q3map_forcesunlight
1093 {
1094 map textures/stone/mxsnow2.tga
1095 tcmod scale 0.05 0.05
1096 rgbGen vertexLit
1097 }
1098 {
1099 map textures/skies2/clouds2.tga
1100 blendfunc filter
1101 tcmod scale 0.01 0.01
1102 tcMod scroll -0.01 -0.05
1103 }
1104 }
1105
1106 textures/terrain/mxterra5_3
1107 {
1108 surfaceparm nolightmap
1109 q3map_novertexshadows
1110 q3map_forcesunlight
1111 {
1112 map textures/stone/mxsnow3.tga
1113 tcmod scale 0.05 0.05
1114 rgbGen vertexLit
1115 }
1116 {
1117 map textures/skies2/clouds2.tga
1118 blendfunc filter
1119 tcmod scale 0.01 0.01
1120 tcMod scroll -0.01 -0.05
1121 }
1122 }
1123
1124 textures/terrain/mxterra5_4
1125 {
1126 surfaceparm nolightmap
1127 q3map_novertexshadows
1128 q3map_forcesunlight
1129 {
1130 map textures/stone/mxsnow4.tga
1131 tcmod scale 0.1 0.1
1132 rgbGen vertexLit
1133 }
1134 {
1135 map textures/skies2/clouds2.tga
1136 blendfunc filter
1137 tcmod scale 0.01 0.01
1138 tcMod scroll -0.01 -0.05
1139 }
1140 }
1141
1142 textures/terrain/mxterra5_0to1
1143 {
1144 surfaceparm grasssteps
1145 surfaceparm nolightmap
1146 q3map_novertexshadows
1147 q3map_forcesunlight
1148 {
1149 map textures/stone/mxsnow0.tga
1150 rgbGen vertexLit
1151 alphaGen vertex
1152 tcmod scale 0.05 0.05
1153 }
1154 {
1155 map textures/stone/mxsnow1.tga
1156 tcmod scale 0.025 0.025
1157 rgbGen vertexLit
1158 alphaGen vertex
1159 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1160 }
1161 {
1162 map textures/skies2/clouds2.tga
1163 blendfunc filter
1164 tcmod scale 0.01 0.01
1165 tcMod scroll -0.01 -0.05
1166 }
1167 }
1168
1169 textures/terrain/mxterra5_0to2
1170 {
1171 surfaceparm grasssteps
1172 surfaceparm nolightmap
1173 q3map_novertexshadows
1174 q3map_forcesunlight
1175 {
1176 map textures/stone/mxsnow0.tga
1177 rgbGen vertexLit
1178 alphaGen vertex
1179 tcmod scale 0.05 0.05
1180 }
1181 {
1182 map textures/stone/mxsnow2.tga
1183 tcmod scale 0.05 0.05
1184 rgbGen vertexLit
1185 alphaGen vertex
1186 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1187 }
1188 {
1189 map textures/skies2/clouds2.tga
1190 blendfunc filter
1191 tcmod scale 0.01 0.01
1192 tcMod scroll -0.01 -0.05
1193 }
1194 }
1195
1196 textures/terrain/mxterra5_0to3
1197 {
1198 surfaceparm grasssteps
1199 surfaceparm nolightmap
1200 q3map_novertexshadows
1201 q3map_forcesunlight
1202 {
1203 map textures/stone/mxsnow0.tga
1204 rgbGen vertexLit
1205 alphaGen vertex
1206 tcmod scale 0.05 0.05
1207 }
1208 {
1209 map textures/stone/mxsnow3.tga
1210 tcmod scale 0.05 0.05
1211 rgbGen vertexLit
1212 alphaGen vertex
1213 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1214 }
1215 {
1216 map textures/skies2/clouds2.tga
1217 blendfunc filter
1218 tcmod scale 0.01 0.01
1219 tcMod scroll -0.01 -0.05
1220 }
1221 }
1222
1223 textures/terrain/mxterra5_0to4
1224 {
1225 surfaceparm grasssteps
1226 surfaceparm nolightmap
1227 q3map_novertexshadows
1228 q3map_forcesunlight
1229 {
1230 map textures/stone/mxsnow0.tga
1231 rgbGen vertexLit
1232 alphaGen vertex
1233 tcmod scale 0.05 0.05
1234 }
1235 {
1236 map textures/stone/mxsnow4.tga
1237 tcmod scale 0.1 0.1
1238 rgbGen vertexLit
1239 alphaGen vertex
1240 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1241 }
1242 {
1243 map textures/skies2/clouds2.tga
1244 blendfunc filter
1245 tcmod scale 0.01 0.01
1246 tcMod scroll -0.01 -0.05
1247 }
1248
1249 }
1250
1251 textures/terrain/mxterra5_1to2
1252 {
1253 surfaceparm grasssteps
1254 surfaceparm nolightmap
1255 q3map_novertexshadows
1256 q3map_forcesunlight
1257 {
1258 map textures/stone/mxsnow1.tga
1259 rgbGen vertexLit
1260 alphaGen vertex
1261 tcmod scale 0.1 0.1
1262 }
1263 {
1264 map textures/stone/mxsnow2.tga
1265 tcmod scale 0.05 0.05
1266 rgbGen vertexLit
1267 alphaGen vertex
1268 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1269 }
1270 {
1271 map textures/skies2/clouds2.tga
1272 blendfunc filter
1273 tcmod scale 0.01 0.01
1274 tcMod scroll -0.01 -0.05
1275 }
1276 }
1277
1278 textures/terrain/mxterra5_1to3
1279 {
1280 surfaceparm gravelsteps
1281 surfaceparm nolightmap
1282 q3map_novertexshadows
1283 q3map_forcesunlight
1284 {
1285 map textures/stone/mxsnow1.tga
1286 rgbGen vertexLit
1287 alphaGen vertex
1288 tcmod scale 0.1 0.1
1289 }
1290 {
1291 map textures/stone/mxsnow3.tga
1292 tcmod scale 0.05 0.05
1293 rgbGen vertexLit
1294 alphaGen vertex
1295 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1296 }
1297 {
1298 map textures/skies2/clouds2.tga
1299 blendfunc filter
1300 tcmod scale 0.01 0.01
1301 tcMod scroll -0.01 -0.05
1302 }
1303 }
1304
1305 textures/terrain/mxterra5_1to4
1306 {
1307 surfaceparm gravelsteps
1308 surfaceparm nolightmap
1309 q3map_novertexshadows
1310 q3map_forcesunlight
1311 {
1312 map textures/stone/mxsnow1.tga
1313 rgbGen vertexLit
1314 alphaGen vertex
1315 tcmod scale 0.1 0.1
1316 }
1317 {
1318 map textures/stone/mxsnow4.tga
1319 tcmod scale 0.1 0.1
1320 rgbGen vertexLit
1321 alphaGen vertex
1322 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1323 }
1324 {
1325 map textures/skies2/clouds2.tga
1326 blendfunc filter
1327 tcmod scale 0.01 0.01
1328 tcMod scroll -0.01 -0.05
1329 }
1330 }
1331
1332 textures/terrain/mxterra5_2to3
1333 {
1334 surfaceparm grasssteps
1335 surfaceparm nolightmap
1336 q3map_novertexshadows
1337 q3map_forcesunlight
1338 {
1339 map textures/stone/mxsnow2.tga
1340 rgbGen vertexLit
1341 alphaGen vertex
1342 tcmod scale 0.05 0.05
1343 }
1344 {
1345 map textures/stone/mxsnow3.tga
1346 tcmod scale 0.05 0.05
1347 rgbGen vertexLit
1348 alphaGen vertex
1349 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1350 }
1351 {
1352 map textures/skies2/clouds2.tga
1353 blendfunc filter
1354 tcmod scale 0.01 0.01
1355 tcMod scroll -0.01 -0.05
1356 }
1357 }
1358
1359 textures/terrain/mxterra5_2to4
1360 {
1361 surfaceparm grasssteps
1362 surfaceparm nolightmap
1363 q3map_novertexshadows
1364 q3map_forcesunlight
1365 {
1366 map textures/stone/mxsnow2.tga
1367 rgbGen vertexLit
1368 alphaGen vertex
1369 tcmod scale 0.05 0.05
1370 }
1371 {
1372 map textures/stone/mxsnow4.tga
1373 tcmod scale 0.1 0.1
1374 rgbGen vertexLit
1375 alphaGen vertex
1376 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1377 }
1378 {
1379 map textures/skies2/clouds2.tga
1380 blendfunc filter
1381 tcmod scale 0.01 0.01
1382 tcMod scroll -0.01 -0.05
1383 }
1384 }
1385
1386
1387 textures/terrain/mxterra5_3to4
1388 {
1389 surfaceparm nolightmap
1390 q3map_novertexshadows
1391 q3map_forcesunlight
1392 {
1393 map textures/stone/mxsnow3.tga
1394 rgbGen vertexLit
1395 alphaGen vertex
1396 tcmod scale 0.05 0.05
1397 }
1398 {
1399 map textures/stone/mxsnow4.tga
1400 tcmod scale 0.1 0.1
1401 rgbGen vertexLit
1402 alphaGen vertex
1403 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1404 }
1405 {
1406 map textures/skies2/clouds2.tga
1407 blendfunc filter
1408 tcmod scale 0.01 0.01
1409 tcMod scroll -0.01 -0.05
1410 }
1411 }
1412
1413
1414 ///////////////// beach //////////////////////
1415 //////////////////////////////////////////////
1416
1417 textures/terrain/mxterra6_0
1418 {
1419 surfaceparm grasssteps
1420 surfaceparm nolightmap
1421 q3map_novertexshadows
1422 q3map_forcesunlight
1423 {
1424 map textures/stone/mxsand0.tga
1425 rgbGen vertexLit
1426 tcmod scale 0.1 0.1
1427 }
1428 {
1429 map textures/skies2/clouds2.tga
1430 blendfunc filter
1431 tcmod scale 0.01 0.01
1432 tcMod scroll -0.01 -0.05
1433 }
1434 }
1435
1436 textures/terrain/mxterra6_1
1437 {
1438 surfaceparm gravelsteps
1439 surfaceparm nolightmap
1440 q3map_novertexshadows
1441 q3map_forcesunlight
1442 {
1443 map textures/stone/mxsand1.tga
1444 rgbGen vertexLit
1445 tcmod scale 0.1 0.1
1446 }
1447 {
1448 map textures/skies2/clouds2.tga
1449 blendfunc filter
1450 tcmod scale 0.01 0.01
1451 tcMod scroll -0.01 -0.05
1452 }
1453 }
1454
1455 textures/terrain/mxterra6_2
1456 {
1457 surfaceparm grasssteps
1458 surfaceparm nolightmap
1459 q3map_novertexshadows
1460 q3map_forcesunlight
1461 {
1462 map textures/stone/mxsand2.tga
1463 tcmod scale 0.05 0.05
1464 rgbGen vertexLit
1465 }
1466 {
1467 map textures/skies2/clouds2.tga
1468 blendfunc filter
1469 tcmod scale 0.01 0.01
1470 tcMod scroll -0.01 -0.05
1471 }
1472
1473 }
1474
1475 textures/terrain/mxterra6_3
1476 {
1477 surfaceparm nolightmap
1478 q3map_novertexshadows
1479 q3map_forcesunlight
1480 {
1481 map textures/stone/mxsand3.tga
1482 tcmod scale 0.05 0.05
1483 rgbGen vertexLit
1484 }
1485 {
1486 map textures/skies2/clouds2.tga
1487 blendfunc filter
1488 tcmod scale 0.01 0.01
1489 tcMod scroll -0.01 -0.05
1490 }
1491
1492 }
1493
1494 textures/terrain/mxterra6_4
1495 {
1496 surfaceparm nolightmap
1497 q3map_novertexshadows
1498 q3map_forcesunlight
1499 {
1500 map textures/stone/mxsand4.tga
1501 tcmod scale 0.1 0.1
1502 rgbGen vertexLit
1503 }
1504 {
1505 map textures/skies2/clouds2.tga
1506 blendfunc filter
1507 tcmod scale 0.01 0.01
1508 tcMod scroll -0.01 -0.05
1509 }
1510
1511 }
1512
1513 textures/terrain/mxterra6_0to1
1514 {
1515 surfaceparm grasssteps
1516 surfaceparm nolightmap
1517 q3map_novertexshadows
1518 q3map_forcesunlight
1519 {
1520 map textures/stone/mxsand0.tga
1521 rgbGen vertexLit
1522 alphaGen vertex
1523 tcmod scale 0.1 0.1
1524 }
1525 {
1526 map textures/stone/mxsand1.tga
1527 tcmod scale 0.1 0.1
1528 rgbGen vertexLit
1529 alphaGen vertex
1530 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1531 }
1532 {
1533 map textures/skies2/clouds2.tga
1534 blendfunc filter
1535 tcmod scale 0.01 0.01
1536 tcMod scroll -0.01 -0.05
1537 }
1538
1539 }
1540
1541 textures/terrain/mxterra6_0to2
1542 {
1543 surfaceparm grasssteps
1544 surfaceparm nolightmap
1545 q3map_novertexshadows
1546 q3map_forcesunlight
1547 {
1548 map textures/stone/mxsand0.tga
1549 rgbGen vertexLit
1550 alphaGen vertex
1551 tcmod scale 0.1 0.1
1552 }
1553 {
1554 map textures/stone/mxsand2.tga
1555 tcmod scale 0.05 0.05
1556 rgbGen vertexLit
1557 alphaGen vertex
1558 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1559 }
1560 {
1561 map textures/skies2/clouds2.tga
1562 blendfunc filter
1563 tcmod scale 0.01 0.01
1564 tcMod scroll -0.01 -0.05
1565 }
1566
1567 }
1568
1569 textures/terrain/mxterra6_0to3
1570 {
1571 surfaceparm grasssteps
1572 surfaceparm nolightmap
1573 q3map_novertexshadows
1574 q3map_forcesunlight
1575 {
1576 map textures/stone/mxsand0.tga
1577 rgbGen vertexLit
1578 alphaGen vertex
1579 tcmod scale 0.1 0.1
1580 }
1581 {
1582 map textures/stone/mxsand3.tga
1583 tcmod scale 0.05 0.05
1584 rgbGen vertexLit
1585 alphaGen vertex
1586 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1587 }
1588 {
1589 map textures/skies2/clouds2.tga
1590 blendfunc filter
1591 tcmod scale 0.01 0.01
1592 tcMod scroll -0.01 -0.05
1593 }
1594
1595 }
1596
1597 textures/terrain/mxterra6_0to4
1598 {
1599 surfaceparm grasssteps
1600 surfaceparm nolightmap
1601 q3map_novertexshadows
1602 q3map_forcesunlight
1603 {
1604 map textures/stone/mxsand0.tga
1605 rgbGen vertexLit
1606 alphaGen vertex
1607 tcmod scale 0.1 0.1
1608 }
1609 {
1610 map textures/stone/mxsand4.tga
1611 tcmod scale 0.1 0.1
1612 rgbGen vertexLit
1613 alphaGen vertex
1614 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1615 }
1616 {
1617 map textures/skies2/clouds2.tga
1618 blendfunc filter
1619 tcmod scale 0.01 0.01
1620 tcMod scroll -0.01 -0.05
1621 }
1622 }
1623
1624 textures/terrain/mxterra6_1to2
1625 {
1626 surfaceparm grasssteps
1627 surfaceparm nolightmap
1628 q3map_novertexshadows
1629 q3map_forcesunlight
1630 {
1631 map textures/stone/mxsand1.tga
1632 rgbGen vertexLit
1633 alphaGen vertex
1634 tcmod scale 0.1 0.1
1635 }
1636 {
1637 map textures/stone/mxsand2.tga
1638 tcmod scale 0.05 0.05
1639 rgbGen vertexLit
1640 alphaGen vertex
1641 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1642 }
1643 {
1644 map textures/skies2/clouds2.tga
1645 blendfunc filter
1646 tcmod scale 0.01 0.01
1647 tcMod scroll -0.01 -0.05
1648 }
1649 }
1650
1651 textures/terrain/mxterra6_1to3
1652 {
1653 surfaceparm gravelsteps
1654 surfaceparm nolightmap
1655 q3map_novertexshadows
1656 q3map_forcesunlight
1657 {
1658 map textures/stone/mxsand1.tga
1659 rgbGen vertexLit
1660 alphaGen vertex
1661 tcmod scale 0.1 0.1
1662 }
1663 {
1664 map textures/stone/mxsand3.tga
1665 tcmod scale 0.05 0.05
1666 rgbGen vertexLit
1667 alphaGen vertex
1668 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1669 }
1670 {
1671 map textures/skies2/clouds2.tga
1672 blendfunc filter
1673 tcmod scale 0.01 0.01
1674 tcMod scroll -0.01 -0.05
1675 }
1676 }
1677
1678 textures/terrain/mxterra6_1to4
1679 {
1680 surfaceparm gravelsteps
1681 surfaceparm nolightmap
1682 q3map_novertexshadows
1683 q3map_forcesunlight
1684 {
1685 map textures/stone/mxsand1.tga
1686 rgbGen vertexLit
1687 alphaGen vertex
1688 tcmod scale 0.1 0.1
1689 }
1690 {
1691 map textures/stone/mxsand4.tga
1692 tcmod scale 0.1 0.1
1693 rgbGen vertexLit
1694 alphaGen vertex
1695 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1696 }
1697 {
1698 map textures/skies2/clouds2.tga
1699 blendfunc filter
1700 tcmod scale 0.01 0.01
1701 tcMod scroll -0.01 -0.05
1702 }
1703 }
1704
1705 textures/terrain/mxterra6_2to3
1706 {
1707 surfaceparm grasssteps
1708 surfaceparm nolightmap
1709 q3map_novertexshadows
1710 q3map_forcesunlight
1711 {
1712 map textures/stone/mxsand2.tga
1713 rgbGen vertexLit
1714 alphaGen vertex
1715 tcmod scale 0.05 0.05
1716 }
1717 {
1718 map textures/stone/mxsand3.tga
1719 tcmod scale 0.05 0.05
1720 rgbGen vertexLit
1721 alphaGen vertex
1722 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1723 }
1724 {
1725 map textures/skies2/clouds2.tga
1726 blendfunc filter
1727 tcmod scale 0.01 0.01
1728 tcMod scroll -0.01 -0.05
1729 }
1730 }
1731
1732 textures/terrain/mxterra6_2to4
1733 {
1734 surfaceparm grasssteps
1735 surfaceparm nolightmap
1736 q3map_novertexshadows
1737 q3map_forcesunlight
1738 {
1739 map textures/stone/mxsand2.tga
1740 rgbGen vertexLit
1741 alphaGen vertex
1742 tcmod scale 0.05 0.05
1743 }
1744 {
1745 map textures/stone/mxsand4.tga
1746 tcmod scale 0.1 0.1
1747 rgbGen vertexLit
1748 alphaGen vertex
1749 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1750 }
1751 {
1752 map textures/skies2/clouds2.tga
1753 blendfunc filter
1754 tcmod scale 0.01 0.01
1755 tcMod scroll -0.01 -0.05
1756 }
1757 }
1758
1759
1760 textures/terrain/mxterra6_3to4
1761 {
1762 surfaceparm nolightmap
1763 q3map_novertexshadows
1764 q3map_forcesunlight
1765 {
1766 map textures/stone/mxsand3.tga
1767 rgbGen vertexLit
1768 alphaGen vertex
1769 tcmod scale 0.05 0.05
1770 }
1771 {
1772 map textures/stone/mxsand4.tga
1773 tcmod scale 0.1 0.1
1774 rgbGen vertexLit
1775 alphaGen vertex
1776 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1777 }
1778 {
1779 map textures/skies2/clouds2.tga
1780 blendfunc filter
1781 tcmod scale 0.01 0.01
1782 tcMod scroll -0.01 -0.05
1783 }
1784 }
1785
1786
1787 ///////////////// tram /////////////////////
1788 //////////////////////////////////////////////
1789
1790 textures/terrain/mxterra7_0
1791 {
1792 surfaceparm grasssteps
1793 surfaceparm nolightmap
1794 q3map_novertexshadows
1795 q3map_forcesunlight
1796 {
1797 map textures/stone/mxxsnow0.tga
1798 rgbGen vertexLit
1799 tcmod scale 0.1 0.1
1800 }
1801 }
1802
1803 textures/terrain/mxterra7_1
1804 {
1805 surfaceparm gravelsteps
1806 surfaceparm nolightmap
1807 q3map_novertexshadows
1808 q3map_forcesunlight
1809 {
1810 map textures/stone/mxxsnow1.tga
1811 rgbGen vertexLit
1812 tcmod scale .025 .025
1813 }
1814 }
1815
1816 textures/terrain/mxterra7_2
1817 {
1818 surfaceparm grasssteps
1819 surfaceparm nolightmap
1820 q3map_novertexshadows
1821 q3map_forcesunlight
1822 {
1823 map textures/stone/mxxsnow2.tga
1824 tcmod scale 0.05 0.05
1825 rgbGen vertexLit
1826 }
1827 }
1828
1829 textures/terrain/mxterra7_3
1830 {
1831 surfaceparm nolightmap
1832 q3map_novertexshadows
1833 q3map_forcesunlight
1834 {
1835 map textures/stone/mxxsnow3.tga
1836 tcmod scale 0.05 0.05
1837 rgbGen vertexLit
1838 }
1839 }
1840
1841 textures/terrain/mxterra7_4
1842 {
1843 surfaceparm nolightmap
1844 q3map_novertexshadows
1845 q3map_forcesunlight
1846 {
1847 map textures/stone/mxxsnow4.tga
1848 tcmod scale 0.1 0.1
1849 rgbGen vertexLit
1850 }
1851 }
1852
1853 textures/terrain/mxterra7_0to1
1854 {
1855 surfaceparm grasssteps
1856 surfaceparm nolightmap
1857 q3map_novertexshadows
1858 q3map_forcesunlight
1859 {
1860 map textures/stone/mxxsnow0.tga
1861 rgbGen vertexLit
1862 alphaGen vertex
1863 tcmod scale 0.1 0.1
1864 }
1865 {
1866 map textures/stone/mxxsnow1.tga
1867 tcmod scale .05 .05
1868 rgbGen vertexLit
1869 alphaGen vertex
1870 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1871 }
1872 }
1873
1874 textures/terrain/mxterra7_0to2
1875 {
1876 surfaceparm grasssteps
1877 surfaceparm nolightmap
1878 q3map_novertexshadows
1879 q3map_forcesunlight
1880 {
1881 map textures/stone/mxxsnow0.tga
1882 rgbGen vertexLit
1883 alphaGen vertex
1884 tcmod scale 0.1 0.1
1885 }
1886 {
1887 map textures/stone/mxxsnow2.tga
1888 tcmod scale 0.05 0.05
1889 rgbGen vertexLit
1890 alphaGen vertex
1891 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1892 }
1893 }
1894
1895 textures/terrain/mxterra7_0to3
1896 {
1897 surfaceparm grasssteps
1898 surfaceparm nolightmap
1899 q3map_novertexshadows
1900 q3map_forcesunlight
1901 {
1902 map textures/stone/mxxsnow0.tga
1903 rgbGen vertexLit
1904 alphaGen vertex
1905 tcmod scale 0.1 0.1
1906 }
1907 {
1908 map textures/stone/mxxsnow3.tga
1909 tcmod scale 0.05 0.05
1910 rgbGen vertexLit
1911 alphaGen vertex
1912 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1913 }
1914 }
1915
1916 textures/terrain/mxterra7_0to4
1917 {
1918 surfaceparm grasssteps
1919 surfaceparm nolightmap
1920 q3map_novertexshadows
1921 q3map_forcesunlight
1922 {
1923 map textures/stone/mxxsnow0.tga
1924 rgbGen vertexLit
1925 alphaGen vertex
1926 tcmod scale 0.1 0.1
1927 }
1928 {
1929 map textures/stone/mxxsnow4.tga
1930 tcmod scale 0.1 0.1
1931 rgbGen vertexLit
1932 alphaGen vertex
1933 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1934 }
1935 }
1936
1937 textures/terrain/mxterra7_1to2
1938 {
1939 surfaceparm grasssteps
1940 surfaceparm nolightmap
1941 q3map_novertexshadows
1942 q3map_forcesunlight
1943 {
1944 map textures/stone/mxxsnow1.tga
1945 rgbGen vertexLit
1946 alphaGen vertex
1947 tcmod scale .025 .025
1948 }
1949 {
1950 map textures/stone/mxxsnow2.tga
1951 tcmod scale 0.05 0.05
1952 rgbGen vertexLit
1953 alphaGen vertex
1954 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1955 }
1956 }
1957
1958 textures/terrain/mxterra7_1to3
1959 {
1960 surfaceparm gravelsteps
1961 surfaceparm nolightmap
1962 q3map_novertexshadows
1963 q3map_forcesunlight
1964 {
1965 map textures/stone/mxxsnow1.tga
1966 rgbGen vertexLit
1967 alphaGen vertex
1968 tcmod scale .025 .025
1969 }
1970 {
1971 map textures/stone/mxxsnow3.tga
1972 tcmod scale 0.05 0.05
1973 rgbGen vertexLit
1974 alphaGen vertex
1975 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1976 }
1977 }
1978
1979 textures/terrain/mxterra7_1to4
1980 {
1981 surfaceparm gravelsteps
1982 surfaceparm nolightmap
1983 q3map_novertexshadows
1984 q3map_forcesunlight
1985 {
1986 map textures/stone/mxxsnow1.tga
1987 rgbGen vertexLit
1988 alphaGen vertex
1989 tcmod scale .025 .025
1990 }
1991 {
1992 map textures/stone/mxxsnow4.tga
1993 tcmod scale 0.1 0.1
1994 rgbGen vertexLit
1995 alphaGen vertex
1996 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1997 }
1998 }
1999
2000 textures/terrain/mxterra7_2to3
2001 {
2002 surfaceparm grasssteps
2003 surfaceparm nolightmap
2004 q3map_novertexshadows
2005 q3map_forcesunlight
2006 {
2007 map textures/stone/mxxsnow2.tga
2008 rgbGen vertexLit
2009 alphaGen vertex
2010 tcmod scale 0.05 0.05
2011 }
2012 {
2013 map textures/stone/mxxsnow3.tga
2014 tcmod scale 0.05 0.05
2015 rgbGen vertexLit
2016 alphaGen vertex
2017 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2018 }
2019 }
2020
2021 textures/terrain/mxterra7_2to4
2022 {
2023 surfaceparm grasssteps
2024 surfaceparm nolightmap
2025 q3map_novertexshadows
2026 q3map_forcesunlight
2027 {
2028 map textures/stone/mxxsnow2.tga
2029 rgbGen vertexLit
2030 alphaGen vertex
2031 tcmod scale 0.05 0.05
2032 }
2033 {
2034 map textures/stone/mxxsnow4.tga
2035 tcmod scale 0.1 0.1
2036 rgbGen vertexLit
2037 alphaGen vertex
2038 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2039 }
2040 }
2041
2042 textures/terrain/mxterra7_3to4
2043 {
2044 surfaceparm nolightmap
2045 q3map_novertexshadows
2046 q3map_forcesunlight
2047 {
2048 map textures/stone/mxxsnow3.tga
2049 rgbGen vertexLit
2050 alphaGen vertex
2051 tcmod scale 0.05 0.05
2052 }
2053 {
2054 map textures/stone/mxxsnow4.tga
2055 tcmod scale 0.1 0.1
2056 rgbGen vertexLit
2057 alphaGen vertex
2058 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2059 }
2060 }
2061
2062
2063 ///////////////// assault /////////////////////
2064 //////////////////////////////////////////////
2065
2066 textures/terrain/mxterra8_0
2067 {
2068 surfaceparm grasssteps
2069 surfaceparm nolightmap
2070 q3map_novertexshadows
2071 q3map_forcesunlight
2072 {
2073 map textures/stone/mxrock0.tga
2074 rgbGen vertexLit
2075 tcmod scale 0.1 0.1
2076 }
2077 }
2078
2079 textures/terrain/mxterra8_1
2080 {
2081 surfaceparm gravelsteps
2082 surfaceparm nolightmap
2083 q3map_novertexshadows
2084 q3map_forcesunlight
2085 {
2086 map textures/stone/mxrock1.tga
2087 rgbGen vertexLit
2088 tcmod scale 0.1 0.1
2089 }
2090 }
2091
2092 textures/terrain/mxterra8_2
2093 {
2094 surfaceparm grasssteps
2095 surfaceparm nolightmap
2096 q3map_novertexshadows
2097 q3map_forcesunlight
2098 {
2099 map textures/stone/mxrock2.tga
2100 tcmod scale 0.05 0.05
2101 rgbGen vertexLit
2102 }
2103 }
2104
2105 textures/terrain/mxterra8_3
2106 {
2107 surfaceparm nolightmap
2108 q3map_novertexshadows
2109 q3map_forcesunlight
2110 {
2111 map textures/stone/mxrock3_a.tga
2112 tcmod scale 0.05 0.05
2113 rgbGen vertexLit
2114 }
2115 }
2116
2117 textures/terrain/mxterra8_4
2118 {
2119 surfaceparm nolightmap
2120 q3map_novertexshadows
2121 q3map_forcesunlight
2122 {
2123 map textures/stone/mxrock1aa.tga
2124 tcmod scale 0.1 0.1
2125 rgbGen vertexLit
2126 }
2127 }
2128
2129 textures/terrain/mxterra8_0to1
2130 {
2131 surfaceparm grasssteps
2132 surfaceparm nolightmap
2133 q3map_novertexshadows
2134 q3map_forcesunlight
2135 {
2136 map textures/stone/mxrock0.tga
2137 rgbGen vertexLit
2138 alphaGen vertex
2139 tcmod scale 0.1 0.1
2140 }
2141 {
2142 map textures/stone/mxrock1.tga
2143 tcmod scale 0.1 0.1
2144 rgbGen vertexLit
2145 alphaGen vertex
2146 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2147 }
2148 }
2149
2150 textures/terrain/mxterra8_0to2
2151 {
2152 surfaceparm grasssteps
2153 surfaceparm nolightmap
2154 q3map_novertexshadows
2155 q3map_forcesunlight
2156 {
2157 map textures/stone/mxrock0.tga
2158 rgbGen vertexLit
2159 alphaGen vertex
2160 tcmod scale 0.1 0.1
2161 }
2162 {
2163 map textures/stone/mxrock2.tga
2164 tcmod scale 0.05 0.05
2165 rgbGen vertexLit
2166 alphaGen vertex
2167 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2168 }
2169 }
2170
2171 textures/terrain/mxterra8_0to3
2172 {
2173 surfaceparm grasssteps
2174 surfaceparm nolightmap
2175 q3map_novertexshadows
2176 q3map_forcesunlight
2177 {
2178 map textures/stone/mxrock0.tga
2179 rgbGen vertexLit
2180 alphaGen vertex
2181 tcmod scale 0.1 0.1
2182 }
2183 {
2184 map textures/stone/mxrock3_a.tga
2185 tcmod scale 0.05 0.05
2186 rgbGen vertexLit
2187 alphaGen vertex
2188 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2189 }
2190 }
2191
2192 textures/terrain/mxterra8_0to4
2193 {
2194 surfaceparm grasssteps
2195 surfaceparm nolightmap
2196 q3map_novertexshadows
2197 q3map_forcesunlight
2198 {
2199 map textures/stone/mxrock0.tga
2200 rgbGen vertexLit
2201 alphaGen vertex
2202 tcmod scale 0.1 0.1
2203 }
2204 {
2205 map textures/stone/mxrock1aa.tga
2206 tcmod scale 0.1 0.1
2207 rgbGen vertexLit
2208 alphaGen vertex
2209 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2210 }
2211 }
2212
2213 textures/terrain/mxterra8_1to2
2214 {
2215 surfaceparm grasssteps
2216 surfaceparm nolightmap
2217 q3map_novertexshadows
2218 q3map_forcesunlight
2219 {
2220 map textures/stone/mxrock1.tga
2221 rgbGen vertexLit
2222 alphaGen vertex
2223 tcmod scale 0.1 0.1
2224 }
2225 {
2226 map textures/stone/mxrock2.tga
2227 tcmod scale 0.05 0.05
2228 rgbGen vertexLit
2229 alphaGen vertex
2230 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2231 }
2232 }
2233
2234 textures/terrain/mxterra8_1to3
2235 {
2236 surfaceparm gravelsteps
2237 surfaceparm nolightmap
2238 q3map_novertexshadows
2239 q3map_forcesunlight
2240 {
2241 map textures/stone/mxrock1.tga
2242 rgbGen vertexLit
2243 alphaGen vertex
2244 tcmod scale 0.1 0.1
2245 }
2246 {
2247 map textures/stone/mxrock3_a.tga
2248 tcmod scale 0.05 0.05
2249 rgbGen vertexLit
2250 alphaGen vertex
2251 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2252 }
2253 }
2254
2255 textures/terrain/mxterra8_1to4
2256 {
2257 surfaceparm gravelsteps
2258 surfaceparm nolightmap
2259 q3map_novertexshadows
2260 q3map_forcesunlight
2261 {
2262 map textures/stone/mxrock1.tga
2263 rgbGen vertexLit
2264 alphaGen vertex
2265 tcmod scale 0.1 0.1
2266 }
2267 {
2268 map textures/stone/mxrock1aa.tga
2269 tcmod scale 0.1 0.1
2270 rgbGen vertexLit
2271 alphaGen vertex
2272 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2273 }
2274 }
2275
2276 textures/terrain/mxterra8_2to3
2277 {
2278 surfaceparm grasssteps
2279 surfaceparm nolightmap
2280 q3map_novertexshadows
2281 q3map_forcesunlight
2282 {
2283 map textures/stone/mxrock2.tga
2284 rgbGen vertexLit
2285 alphaGen vertex
2286 tcmod scale 0.05 0.05
2287 }
2288 {
2289 map textures/stone/mxrock3_a.tga
2290 tcmod scale 0.05 0.05
2291 rgbGen vertexLit
2292 alphaGen vertex
2293 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2294 }
2295 }
2296
2297 textures/terrain/mxterra8_2to4
2298 {
2299 surfaceparm grasssteps
2300 surfaceparm nolightmap
2301 q3map_novertexshadows
2302 q3map_forcesunlight
2303 {
2304 map textures/stone/mxrock2.tga
2305 rgbGen vertexLit
2306 alphaGen vertex
2307 tcmod scale 0.05 0.05
2308 }
2309 {
2310 map textures/stone/mxrock1aa.tga
2311 tcmod scale 0.1 0.1
2312 rgbGen vertexLit
2313 alphaGen vertex
2314 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2315 }
2316 }
2317
2318 textures/terrain/mxterra8_3to4
2319 {
2320 surfaceparm nolightmap
2321 q3map_novertexshadows
2322 q3map_forcesunlight
2323 {
2324 map textures/stone/mxrock3_a.tga
2325 rgbGen vertexLit
2326 alphaGen vertex
2327 tcmod scale 0.05 0.05
2328 }
2329 {
2330 map textures/stone/mxrock1aa.tga
2331 tcmod scale 0.1 0.1
2332 rgbGen vertexLit
2333 alphaGen vertex
2334 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2335 }
2336 }
2337
2338
2339 ///////////////// village1 ///////////////////
2340 //////////////////////////////////////////////
2341
2342 textures/terrain/mxterra9_0
2343 {
2344 surfaceparm snowsteps
2345 surfaceparm nolightmap
2346 q3map_novertexshadows
2347 q3map_forcesunlight
2348 {
2349 map textures/snow/s_dirt_m03i_2.tga
2350 rgbGen vertexLit
2351 tcmod scale 0.3 0.3
2352 }
2353 }
2354
2355 textures/terrain/mxterra9_1
2356 {
2357 surfaceparm snowsteps
2358 surfaceparm nolightmap
2359 q3map_novertexshadows
2360 q3map_forcesunlight
2361 {
2362 map textures/snow/s_floor_l_01.tga
2363 rgbGen vertexLit
2364 tcmod scale 0.3 0.3
2365 }
2366 }
2367
2368 textures/terrain/mxterra9_2
2369 {
2370 surfaceparm snowsteps
2371 surfaceparm nolightmap
2372 q3map_novertexshadows
2373 q3map_forcesunlight
2374 {
2375 map textures/snow/s_grass_ml03b.tga
2376 tcmod scale 0.3 0.3
2377 rgbGen vertexLit
2378 }
2379 }
2380
2381 textures/terrain/mxterra9_0to1
2382 {
2383 surfaceparm snowsteps
2384 surfaceparm nolightmap
2385 q3map_novertexshadows
2386 q3map_forcesunlight
2387 {
2388 map textures/snow/s_dirt_m03i_2.tga
2389 rgbGen vertexLit
2390 alphaGen vertex
2391 tcmod scale 0.3 0.3
2392 }
2393 {
2394 map textures/snow/s_floor_l_01.tga
2395 tcmod scale 0.3 0.3
2396 rgbGen vertexLit
2397 alphaGen vertex
2398 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2399 }
2400 }
2401
2402 textures/terrain/mxterra9_0to2
2403 {
2404 surfaceparm snowsteps
2405 surfaceparm nolightmap
2406 q3map_novertexshadows
2407 q3map_forcesunlight
2408 {
2409 map textures/snow/s_dirt_m03i_2.tga
2410 rgbGen vertexLit
2411 alphaGen vertex
2412 tcmod scale 0.3 0.3
2413 }
2414 {
2415 map textures/snow/s_grass_ml03b.tga
2416 tcmod scale 0.3 0.3
2417 rgbGen vertexLit
2418 alphaGen vertex
2419 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2420 }
2421 }
2422
2423 textures/terrain/mxterra9_1to2
2424 {
2425 surfaceparm snowsteps
2426 surfaceparm nolightmap
2427 q3map_novertexshadows
2428 q3map_forcesunlight
2429 {
2430 map textures/snow/s_floor_l_01.tga
2431 rgbGen vertexLit
2432 alphaGen vertex
2433 tcmod scale 0.3 0.3
2434 }
2435 {
2436 map textures/snow/s_grass_ml03b.tga
2437 tcmod scale 0.3 0.3
2438 rgbGen vertexLit
2439 alphaGen vertex
2440 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2441 }
2442 }
2443
2444 ///////////////// training ///////////////////
2445 //////////////////////////////////////////////
2446
2447 textures/terrain/mxterra10_0
2448 {
2449 surfaceparm grasssteps
2450 surfaceparm nolightmap
2451 q3map_novertexshadows
2452 q3map_forcesunlight
2453 {
2454 map textures/stone/mxrock0t.tga
2455 rgbGen vertexLit
2456 tcmod scale 0.1 0.1
2457 }
2458
2459 }
2460
2461 textures/terrain/mxterra10_1
2462 {
2463 surfaceparm gravelsteps
2464 surfaceparm nolightmap
2465 q3map_novertexshadows
2466 q3map_forcesunlight
2467 {
2468 map textures/stone/mxrock1b.tga
2469 rgbGen vertexLit
2470 tcmod scale 0.1 0.1
2471 }
2472
2473 }
2474
2475 textures/terrain/mxterra10_2
2476 {
2477 surfaceparm grasssteps
2478 surfaceparm nolightmap
2479 q3map_novertexshadows
2480 q3map_forcesunlight
2481 {
2482 map textures/stone/mxrock2t.tga
2483 tcmod scale 0.05 0.05
2484 rgbGen vertexLit
2485 }
2486
2487
2488 }
2489
2490 textures/terrain/mxterra10_3
2491 {
2492 surfaceparm nolightmap
2493 q3map_novertexshadows
2494 q3map_forcesunlight
2495 {
2496 map textures/stone/mxrock3g.tga
2497 tcmod scale 0.05 0.05
2498 rgbGen vertexLit
2499 }
2500
2501
2502 }
2503
2504 textures/terrain/mxterra10_4
2505 {
2506 surfaceparm nolightmap
2507 q3map_novertexshadows
2508 q3map_forcesunlight
2509 {
2510 map textures/stone/mxrock4c.tga
2511 tcmod scale 0.1 0.1
2512 rgbGen vertexLit
2513 }
2514
2515
2516 }
2517
2518 textures/terrain/mxterra10_0to1
2519 {
2520 surfaceparm grasssteps
2521 surfaceparm nolightmap
2522 q3map_novertexshadows
2523 q3map_forcesunlight
2524 {
2525 map textures/stone/mxrock0t.tga
2526 rgbGen vertexLit
2527 alphaGen vertex
2528 tcmod scale 0.1 0.1
2529 }
2530 {
2531 map textures/stone/mxrock1b.tga
2532 tcmod scale 0.1 0.1
2533 rgbGen vertexLit
2534 alphaGen vertex
2535 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2536 }
2537
2538
2539 }
2540
2541 textures/terrain/mxterra10_0to2
2542 {
2543 surfaceparm grasssteps
2544 surfaceparm nolightmap
2545 q3map_novertexshadows
2546 q3map_forcesunlight
2547 {
2548 map textures/stone/mxrock0t.tga
2549 rgbGen vertexLit
2550 alphaGen vertex
2551 tcmod scale 0.1 0.1
2552 }
2553 {
2554 map textures/stone/mxrock2t.tga
2555 tcmod scale 0.05 0.05
2556 rgbGen vertexLit
2557 alphaGen vertex
2558 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2559 }
2560
2561
2562 }
2563
2564 textures/terrain/mxterra10_0to3
2565 {
2566 surfaceparm grasssteps
2567 surfaceparm nolightmap
2568 q3map_novertexshadows
2569 q3map_forcesunlight
2570 {
2571 map textures/stone/mxrock0t.tga
2572 rgbGen vertexLit
2573 alphaGen vertex
2574 tcmod scale 0.1 0.1
2575 }
2576 {
2577 map textures/stone/mxrock3g.tga
2578 tcmod scale 0.05 0.05
2579 rgbGen vertexLit
2580 alphaGen vertex
2581 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2582 }
2583
2584
2585 }
2586
2587 textures/terrain/mxterra10_0to4
2588 {
2589 surfaceparm grasssteps
2590 surfaceparm nolightmap
2591 q3map_novertexshadows
2592 q3map_forcesunlight
2593 {
2594 map textures/stone/mxrock0t.tga
2595 rgbGen vertexLit
2596 alphaGen vertex
2597 tcmod scale 0.1 0.1
2598 }
2599 {
2600 map textures/stone/mxrock4c.tga
2601 tcmod scale 0.1 0.1
2602 rgbGen vertexLit
2603 alphaGen vertex
2604 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2605 }
2606
2607
2608 }
2609
2610 textures/terrain/mxterra10_1to2
2611 {
2612 surfaceparm grasssteps
2613 surfaceparm nolightmap
2614 q3map_novertexshadows
2615 q3map_forcesunlight
2616 {
2617 map textures/stone/mxrock1b.tga
2618 rgbGen vertexLit
2619 alphaGen vertex
2620 tcmod scale 0.1 0.1
2621 }
2622 {
2623 map textures/stone/mxrock2t.tga
2624 tcmod scale 0.05 0.05
2625 rgbGen vertexLit
2626 alphaGen vertex
2627 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2628 }
2629
2630 }
2631
2632 textures/terrain/mxterra10_1to3
2633 {
2634 surfaceparm gravelsteps
2635 surfaceparm nolightmap
2636 q3map_novertexshadows
2637 q3map_forcesunlight
2638 {
2639 map textures/stone/mxrock1b.tga
2640 rgbGen vertexLit
2641 alphaGen vertex
2642 tcmod scale 0.1 0.1
2643 }
2644 {
2645 map textures/stone/mxrock3g.tga
2646 tcmod scale 0.05 0.05
2647 rgbGen vertexLit
2648 alphaGen vertex
2649 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2650 }
2651
2652 }
2653
2654 textures/terrain/mxterra10_1to4
2655 {
2656 surfaceparm gravelsteps
2657 surfaceparm nolightmap
2658 q3map_novertexshadows
2659 q3map_forcesunlight
2660 {
2661 map textures/stone/mxrock1b.tga
2662 rgbGen vertexLit
2663 alphaGen vertex
2664 tcmod scale 0.1 0.1
2665 }
2666 {
2667 map textures/stone/mxrock4c.tga
2668 tcmod scale 0.1 0.1
2669 rgbGen vertexLit
2670 alphaGen vertex
2671 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2672 }
2673
2674 }
2675
2676 textures/terrain/mxterra10_2to3
2677 {
2678 surfaceparm grasssteps
2679 surfaceparm nolightmap
2680 q3map_novertexshadows
2681 q3map_forcesunlight
2682 {
2683 map textures/stone/mxrock2t.tga
2684 rgbGen vertexLit
2685 alphaGen vertex
2686 tcmod scale 0.05 0.05
2687 }
2688 {
2689 map textures/stone/mxrock3g.tga
2690 tcmod scale 0.05 0.05
2691 rgbGen vertexLit
2692 alphaGen vertex
2693 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2694 }
2695
2696 }
2697
2698 textures/terrain/mxterra10_2to4
2699 {
2700 surfaceparm grasssteps
2701 surfaceparm nolightmap
2702 q3map_novertexshadows
2703 q3map_forcesunlight
2704 {
2705 map textures/stone/mxrock2t.tga
2706 rgbGen vertexLit
2707 alphaGen vertex
2708 tcmod scale 0.05 0.05
2709 }
2710 {
2711 map textures/stone/mxrock4c.tga
2712 tcmod scale 0.1 0.1
2713 rgbGen vertexLit
2714 alphaGen vertex
2715 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2716 }
2717
2718 }
2719
2720 textures/terrain/mxterra10_3to4
2721 {
2722 surfaceparm nolightmap
2723 q3map_novertexshadows
2724 q3map_forcesunlight
2725 {
2726 map textures/stone/mxrock3g.tga
2727 rgbGen vertexLit
2728 alphaGen vertex
2729 tcmod scale 0.05 0.05
2730 }
2731 {
2732 map textures/stone/mxrock4c.tga
2733 tcmod scale 0.1 0.1
2734 rgbGen vertexLit
2735 alphaGen vertex
2736 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2737 }
2738
2739 }
2740
2741
2742 ///////////////// dam terrain ////////////////
2743 //////////////////////////////////////////////
2744
2745 textures/terrain/mxterra11_0
2746 {
2747 surfaceparm grasssteps
2748 surfaceparm nolightmap
2749 q3map_novertexshadows
2750 q3map_forcesunlight
2751 {
2752 map textures/stone/mxrock0b.tga
2753 rgbGen vertexLit
2754 tcmod scale 0.1 0.1
2755 }
2756 }
2757
2758 textures/terrain/mxterra11_1
2759 {
2760 surfaceparm gravelsteps
2761 surfaceparm nolightmap
2762 q3map_novertexshadows
2763 q3map_forcesunlight
2764 {
2765 map textures/stone/mxrock1b.tga
2766 rgbGen vertexLit
2767 tcmod scale 0.1 0.1
2768 }
2769 }
2770
2771 textures/terrain/mxterra11_2
2772 {
2773 surfaceparm grasssteps
2774 surfaceparm nolightmap
2775 q3map_novertexshadows
2776 q3map_forcesunlight
2777 {
2778 map textures/stone/mxrock2b.tga
2779 tcmod scale 0.05 0.05
2780 rgbGen vertexLit
2781 }
2782 }
2783
2784 textures/terrain/mxterra11_3
2785 {
2786 surfaceparm nolightmap
2787 q3map_novertexshadows
2788 q3map_forcesunlight
2789 {
2790 map textures/stone/mxrock3aa.tga
2791 tcmod scale 0.05 0.05
2792 rgbGen vertexLit
2793 }
2794 }
2795
2796 textures/terrain/mxterra11_4
2797 {
2798 surfaceparm nolightmap
2799 q3map_novertexshadows
2800 q3map_forcesunlight
2801 {
2802 map textures/stone/mxrock4b.tga
2803 tcmod scale 0.1 0.1
2804 rgbGen vertexLit
2805 }
2806 }
2807
2808 textures/terrain/mxterra11_0to1
2809 {
2810 surfaceparm grasssteps
2811 surfaceparm nolightmap
2812 q3map_novertexshadows
2813 q3map_forcesunlight
2814 {
2815 map textures/stone/mxrock0b.tga
2816 rgbGen vertexLit
2817 alphaGen vertex
2818 tcmod scale 0.1 0.1
2819 }
2820 {
2821 map textures/stone/mxrock1b.tga
2822 tcmod scale 0.1 0.1
2823 rgbGen vertexLit
2824 alphaGen vertex
2825 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2826 }
2827 }
2828
2829 textures/terrain/mxterra11_0to2
2830 {
2831 surfaceparm grasssteps
2832 surfaceparm nolightmap
2833 q3map_novertexshadows
2834 q3map_forcesunlight
2835 {
2836 map textures/stone/mxrock0b.tga
2837 rgbGen vertexLit
2838 alphaGen vertex
2839 tcmod scale 0.1 0.1
2840 }
2841 {
2842 map textures/stone/mxrock2b.tga
2843 tcmod scale 0.05 0.05
2844 rgbGen vertexLit
2845 alphaGen vertex
2846 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2847 }
2848 }
2849
2850 textures/terrain/mxterra11_0to3
2851 {
2852 surfaceparm grasssteps
2853 surfaceparm nolightmap
2854 q3map_novertexshadows
2855 q3map_forcesunlight
2856 {
2857 map textures/stone/mxrock0b.tga
2858 rgbGen vertexLit
2859 alphaGen vertex
2860 tcmod scale 0.1 0.1
2861 }
2862 {
2863 map textures/stone/mxrock3aa.tga
2864 tcmod scale 0.05 0.05
2865 rgbGen vertexLit
2866 alphaGen vertex
2867 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2868 }
2869 }
2870
2871 textures/terrain/mxterra11_0to4
2872 {
2873 surfaceparm grasssteps
2874 surfaceparm nolightmap
2875 q3map_novertexshadows
2876 q3map_forcesunlight
2877 {
2878 map textures/stone/mxrock0b.tga
2879 rgbGen vertexLit
2880 alphaGen vertex
2881 tcmod scale 0.1 0.1
2882 }
2883 {
2884 map textures/stone/mxrock4b.tga
2885 tcmod scale 0.1 0.1
2886 rgbGen vertexLit
2887 alphaGen vertex
2888 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2889 }
2890 }
2891
2892
2893 textures/terrain/mxterra11_1to2
2894 {
2895 surfaceparm grasssteps
2896 surfaceparm nolightmap
2897 q3map_novertexshadows
2898 q3map_forcesunlight
2899 {
2900 map textures/stone/mxrock1b.tga
2901 rgbGen vertexLit
2902 alphaGen vertex
2903 tcmod scale 0.1 0.1
2904 }
2905 {
2906 map textures/stone/mxrock2b.tga
2907 tcmod scale 0.05 0.05
2908 rgbGen vertexLit
2909 alphaGen vertex
2910 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2911 }
2912 }
2913
2914 textures/terrain/mxterra11_1to3
2915 {
2916 surfaceparm gravelsteps
2917 surfaceparm nolightmap
2918 q3map_novertexshadows
2919 q3map_forcesunlight
2920 {
2921 map textures/stone/mxrock1b.tga
2922 rgbGen vertexLit
2923 alphaGen vertex
2924 tcmod scale 0.1 0.1
2925 }
2926 {
2927 map textures/stone/mxrock3aa.tga
2928 tcmod scale 0.05 0.05
2929 rgbGen vertexLit
2930 alphaGen vertex
2931 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2932 }
2933 }
2934
2935 textures/terrain/mxterra11_1to4
2936 {
2937 surfaceparm gravelsteps
2938 surfaceparm nolightmap
2939 q3map_novertexshadows
2940 q3map_forcesunlight
2941 {
2942 map textures/stone/mxrock1b.tga
2943 rgbGen vertexLit
2944 alphaGen vertex
2945 tcmod scale 0.1 0.1
2946 }
2947 {
2948 map textures/stone/mxrock4b.tga
2949 tcmod scale 0.1 0.1
2950 rgbGen vertexLit
2951 alphaGen vertex
2952 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2953 }
2954 }
2955
2956 textures/terrain/mxterra11_2to3
2957 {
2958 surfaceparm grasssteps
2959 surfaceparm nolightmap
2960 q3map_novertexshadows
2961 q3map_forcesunlight
2962 {
2963 map textures/stone/mxrock2b.tga
2964 rgbGen vertexLit
2965 alphaGen vertex
2966 tcmod scale 0.05 0.05
2967 }
2968 {
2969 map textures/stone/mxrock3aa.tga
2970 tcmod scale 0.05 0.05
2971 rgbGen vertexLit
2972 alphaGen vertex
2973 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2974 }
2975 }
2976
2977 textures/terrain/mxterra11_2to4
2978 {
2979 surfaceparm grasssteps
2980 surfaceparm nolightmap
2981 q3map_novertexshadows
2982 q3map_forcesunlight
2983 {
2984 map textures/stone/mxrock2b.tga
2985 rgbGen vertexLit
2986 alphaGen vertex
2987 tcmod scale 0.05 0.05
2988 }
2989 {
2990 map textures/stone/mxrock4b.tga
2991 tcmod scale 0.1 0.1
2992 rgbGen vertexLit
2993 alphaGen vertex
2994 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2995 }
2996 }
2997
2998 textures/terrain/mxterra11_3to4
2999 {
3000 surfaceparm nolightmap
3001 q3map_novertexshadows
3002 q3map_forcesunlight
3003 {
3004 map textures/stone/mxrock3aa.tga
3005 rgbGen vertexLit
3006 alphaGen vertex
3007 tcmod scale 0.05 0.05
3008 }
3009 {
3010 map textures/stone/mxrock4b.tga
3011 tcmod scale 0.1 0.1
3012 rgbGen vertexLit
3013 alphaGen vertex
3014 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3015 }
3016 }
3017
3018
3019 ///////////////// dam skybox /////////////////
3020 //////////////////////////////////////////////
3021
3022 textures/terrain/mxterra12_0
3023 {
3024 surfaceparm grasssteps
3025 surfaceparm nolightmap
3026 q3map_novertexshadows
3027 q3map_forcesunlight
3028 {
3029 map textures/stone/mxrock0b.tga
3030 rgbGen vertexLit
3031 tcmod scale 1 1
3032 }
3033 }
3034
3035 textures/terrain/mxterra12_1
3036 {
3037 surfaceparm gravelsteps
3038 surfaceparm nolightmap
3039 q3map_novertexshadows
3040 q3map_forcesunlight
3041 {
3042 map textures/stone/mxrock1b.tga
3043 rgbGen vertexLit
3044 tcmod scale .75 .75
3045 }
3046 }
3047
3048 textures/terrain/mxterra12_2
3049 {
3050 surfaceparm grasssteps
3051 surfaceparm nolightmap
3052 q3map_novertexshadows
3053 q3map_forcesunlight
3054 {
3055 map textures/stone/mxrock2b.tga
3056 tcmod scale .75 .75
3057 rgbGen vertexLit
3058 }
3059 }
3060
3061 textures/terrain/mxterra12_3
3062 {
3063 surfaceparm nolightmap
3064 q3map_novertexshadows
3065 q3map_forcesunlight
3066 {
3067 map textures/stone/mxrock3g.tga
3068 tcmod scale .75 .75
3069 rgbGen vertexLit
3070 }
3071 }
3072
3073 textures/terrain/mxterra12_4
3074 {
3075 surfaceparm nolightmap
3076 q3map_novertexshadows
3077 q3map_forcesunlight
3078 {
3079 map textures/stone/mxrock4b.tga
3080 tcmod scale .75 .75
3081 rgbGen vertexLit
3082 }
3083 }
3084
3085 textures/terrain/mxterra12_0to1
3086 {
3087 surfaceparm grasssteps
3088 surfaceparm nolightmap
3089 q3map_novertexshadows
3090 q3map_forcesunlight
3091 {
3092 map textures/stone/mxrock0b.tga
3093 rgbGen vertexLit
3094 alphaGen vertex
3095 tcmod scale .75 .75
3096 }
3097 {
3098 map textures/stone/mxrock1b.tga
3099 tcmod scale 1 1
3100 rgbGen vertexLit
3101 alphaGen vertex
3102 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3103 }
3104 }
3105
3106 textures/terrain/mxterra12_0to2
3107 {
3108 surfaceparm grasssteps
3109 surfaceparm nolightmap
3110 q3map_novertexshadows
3111 q3map_forcesunlight
3112 {
3113 map textures/stone/mxrock0b.tga
3114 rgbGen vertexLit
3115 alphaGen vertex
3116 tcmod scale 1 1
3117 }
3118 {
3119 map textures/stone/mxrock2b.tga
3120 tcmod scale .75 .75
3121 rgbGen vertexLit
3122 alphaGen vertex
3123 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3124 }
3125 }
3126
3127 textures/terrain/mxterra12_0to3
3128 {
3129 surfaceparm grasssteps
3130 surfaceparm nolightmap
3131 q3map_novertexshadows
3132 q3map_forcesunlight
3133 {
3134 map textures/stone/mxrock0b.tga
3135 rgbGen vertexLit
3136 alphaGen vertex
3137 tcmod scale 1 1
3138 }
3139 {
3140 map textures/stone/mxrock3g.tga
3141 tcmod scale .75 .75
3142 rgbGen vertexLit
3143 alphaGen vertex
3144 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3145 }
3146 }
3147
3148 textures/terrain/mxterra12_0to4
3149 {
3150 surfaceparm grasssteps
3151 surfaceparm nolightmap
3152 q3map_novertexshadows
3153 q3map_forcesunlight
3154 {
3155 map textures/stone/mxrock0b.tga
3156 rgbGen vertexLit
3157 alphaGen vertex
3158 tcmod scale 1 1
3159 }
3160 {
3161 map textures/stone/mxrock4b.tga
3162 tcmod scale 1 1
3163 rgbGen vertexLit
3164 alphaGen vertex
3165 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3166 }
3167 }
3168
3169 textures/terrain/mxterra12_1to2
3170 {
3171 surfaceparm grasssteps
3172 surfaceparm nolightmap
3173 q3map_novertexshadows
3174 q3map_forcesunlight
3175 {
3176 map textures/stone/mxrock1b.tga
3177 rgbGen vertexLit
3178 alphaGen vertex
3179 tcmod scale .75 .75
3180 }
3181 {
3182 map textures/stone/mxrock2b.tga
3183 tcmod scale .75 .75
3184 rgbGen vertexLit
3185 alphaGen vertex
3186 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3187 }
3188 }
3189
3190 textures/terrain/mxterra12_1to3
3191 {
3192 surfaceparm gravelsteps
3193 surfaceparm nolightmap
3194 q3map_novertexshadows
3195 q3map_forcesunlight
3196 {
3197 map textures/stone/mxrock1b.tga
3198 rgbGen vertexLit
3199 alphaGen vertex
3200 tcmod scale .75 .75
3201 }
3202 {
3203 map textures/stone/mxrock3g.tga
3204 tcmod scale .75 .75
3205 rgbGen vertexLit
3206 alphaGen vertex
3207 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3208 }
3209 }
3210
3211 textures/terrain/mxterra12_1to4
3212 {
3213 surfaceparm gravelsteps
3214 surfaceparm nolightmap
3215 q3map_novertexshadows
3216 q3map_forcesunlight
3217 {
3218 map textures/stone/mxrock1b.tga
3219 rgbGen vertexLit
3220 alphaGen vertex
3221 tcmod scale .75 .75
3222 }
3223 {
3224 map textures/stone/mxrock4b.tga
3225 tcmod scale .75 .75
3226 rgbGen vertexLit
3227 alphaGen vertex
3228 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3229 }
3230 }
3231
3232 textures/terrain/mxterra12_2to3
3233 {
3234 surfaceparm grasssteps
3235 surfaceparm nolightmap
3236 q3map_novertexshadows
3237 q3map_forcesunlight
3238 {
3239 map textures/stone/mxrock2b.tga
3240 rgbGen vertexLit
3241 alphaGen vertex
3242 tcmod scale .75 .75
3243 }
3244 {
3245 map textures/stone/mxrock3g.tga
3246 tcmod scale .75 .75
3247 rgbGen vertexLit
3248 alphaGen vertex
3249 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3250 }
3251 }
3252
3253 textures/terrain/mxterra12_2to4
3254 {
3255 surfaceparm grasssteps
3256 surfaceparm nolightmap
3257 q3map_novertexshadows
3258 q3map_forcesunlight
3259 {
3260 map textures/stone/mxrock2b.tga
3261 rgbGen vertexLit
3262 alphaGen vertex
3263 tcmod scale .75 .75
3264 }
3265 {
3266 map textures/stone/mxrock4b.tga
3267 tcmod scale .75 .75
3268 rgbGen vertexLit
3269 alphaGen vertex
3270 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3271 }
3272 }
3273
3274 textures/terrain/mxterra12_3to4
3275 {
3276 surfaceparm nolightmap
3277 q3map_novertexshadows
3278 q3map_forcesunlight
3279 {
3280 map textures/stone/mxrock3g.tga
3281 rgbGen vertexLit
3282 alphaGen vertex
3283 tcmod scale .75 .75
3284 }
3285 {
3286 map textures/stone/mxrock4b.tga
3287 tcmod scale .75 .75
3288 rgbGen vertexLit
3289 alphaGen vertex
3290 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3291 }
3292 }
3293
3294
3295 ///////////////// escape /////////////////////
3296 //////////////////////////////////////////////
3297
3298 textures/terrain/mxterra13_0
3299 {
3300 surfaceparm grasssteps
3301 surfaceparm nolightmap
3302 q3map_novertexshadows
3303 q3map_forcesunlight
3304 {
3305 map textures/rock/roc_m01p.tga
3306 rgbGen vertexLit
3307 tcmod scale .05 .05
3308 }
3309 }
3310
3311 textures/terrain/mxterra13_1
3312 {
3313 surfaceparm gravelsteps
3314 surfaceparm nolightmap
3315 q3map_novertexshadows
3316 q3map_forcesunlight
3317 {
3318 map textures/rock/roc_m01p.tga
3319 rgbGen vertexLit
3320 tcmod scale .075 .075
3321 }
3322
3323
3324 }
3325
3326 textures/terrain/mxterra13_2
3327 {
3328 surfaceparm grasssteps
3329 surfaceparm nolightmap
3330 q3map_novertexshadows
3331 q3map_forcesunlight
3332 {
3333 map textures/snow/s_grass_ml03a_s.tga
3334 tcmod scale .075 .075
3335 rgbGen vertexLit
3336 }
3337 }
3338
3339 textures/terrain/mxterra13_0to1
3340 {
3341 surfaceparm grasssteps
3342 surfaceparm nolightmap
3343 q3map_novertexshadows
3344 q3map_forcesunlight
3345 {
3346 map textures//rock/roc_m01aa.tga
3347 rgbGen vertexLit
3348 alphaGen vertex
3349 tcmod scale .075 .075
3350 }
3351 {
3352 map textures/rock/roc_m01p.tga
3353 tcmod scale 1 1
3354 rgbGen vertexLit
3355 alphaGen vertex
3356 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3357 }
3358 }
3359
3360 textures/terrain/mxterra13_0to2
3361 {
3362 surfaceparm grasssteps
3363 surfaceparm nolightmap
3364 q3map_novertexshadows
3365 q3map_forcesunlight
3366 {
3367 map textures/rock/roc_m01p.tga
3368 rgbGen vertexLit
3369 alphaGen vertex
3370 tcmod scale .05 .05
3371 }
3372 {
3373 map textures/snow/s_grass_ml03a_s.tga
3374 tcmod scale .075 .075
3375 rgbGen vertexLit
3376 alphaGen vertex
3377 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3378 }
3379 }
3380
3381 textures/terrain/mxterra13_1to2
3382 {
3383 surfaceparm grasssteps
3384 surfaceparm nolightmap
3385 q3map_novertexshadows
3386 q3map_forcesunlight
3387 {
3388 map textures/rock/roc_m01p.tga
3389 rgbGen vertexLit
3390 alphaGen vertex
3391 tcmod scale .075 .075
3392 }
3393 {
3394 map textures/snow/s_grass_ml03a_s.tga
3395 tcmod scale .075 .075
3396 rgbGen vertexLit
3397 alphaGen vertex
3398 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3399 }
3400 }
3401
3402
3403 ///////////////// dark forest ////////////////
3404 //////////////////////////////////////////////
3405
3406 textures/terrain/mxterra14_0
3407 {
3408 surfaceparm grasssteps
3409 surfaceparm nolightmap
3410 q3map_novertexshadows
3411 q3map_forcesunlight
3412 {
3413 map textures/stone/mxrock0b.tga
3414 rgbGen vertexLit
3415 tcmod scale 0.1 0.1
3416 }
3417 }
3418
3419 textures/terrain/mxterra14_1
3420 {
3421 surfaceparm gravelsteps
3422 surfaceparm nolightmap
3423 q3map_novertexshadows
3424 q3map_forcesunlight
3425 {
3426 map textures/stone/mxrock1b.tga
3427 rgbGen vertexLit
3428 tcmod scale 0.1 0.1
3429 }
3430 }
3431
3432 textures/terrain/mxterra14_2
3433 {
3434 surfaceparm grasssteps
3435 surfaceparm nolightmap
3436 q3map_novertexshadows
3437 q3map_forcesunlight
3438 {
3439 map textures/stone/mxrock2b.tga
3440 tcmod scale 0.05 0.05
3441 rgbGen vertexLit
3442 }
3443 }
3444
3445 textures/terrain/mxterra14_3
3446 {
3447 surfaceparm nolightmap
3448 q3map_novertexshadows
3449 q3map_forcesunlight
3450 {
3451 map textures/stone/mxrock3g.tga
3452 tcmod scale 0.05 0.05
3453 rgbGen vertexLit
3454 }
3455 }
3456
3457 textures/terrain/mxterra14_4
3458 {
3459 surfaceparm nolightmap
3460 q3map_novertexshadows
3461 q3map_forcesunlight
3462 {
3463 map textures/stone/mxrock4b.tga
3464 tcmod scale 0.1 0.1
3465 rgbGen vertexLit
3466 }
3467 }
3468
3469 textures/terrain/mxterra14_0to1
3470 {
3471 surfaceparm grasssteps
3472 surfaceparm nolightmap
3473 q3map_novertexshadows
3474 q3map_forcesunlight
3475 {
3476 map textures/stone/mxrock0b.tga
3477 rgbGen vertexLit
3478 alphaGen vertex
3479 tcmod scale 0.1 0.1
3480 }
3481 {
3482 map textures/stone/mxrock1b.tga
3483 tcmod scale 0.1 0.1
3484 rgbGen vertexLit
3485 alphaGen vertex
3486 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3487 }
3488 }
3489
3490 textures/terrain/mxterra14_0to2
3491 {
3492 surfaceparm grasssteps
3493 surfaceparm nolightmap
3494 q3map_novertexshadows
3495 q3map_forcesunlight
3496 {
3497 map textures/stone/mxrock0b.tga
3498 rgbGen vertexLit
3499 alphaGen vertex
3500 tcmod scale 0.1 0.1
3501 }
3502 {
3503 map textures/stone/mxrock2b.tga
3504 tcmod scale 0.05 0.05
3505 rgbGen vertexLit
3506 alphaGen vertex
3507 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3508 }
3509 }
3510
3511 textures/terrain/mxterra14_0to3
3512 {
3513 surfaceparm grasssteps
3514 surfaceparm nolightmap
3515 q3map_novertexshadows
3516 q3map_forcesunlight
3517 {
3518 map textures/stone/mxrock0b.tga
3519 rgbGen vertexLit
3520 alphaGen vertex
3521 tcmod scale 0.1 0.1
3522 }
3523 {
3524 map textures/stone/mxrock3g.tga
3525 tcmod scale 0.05 0.05
3526 rgbGen vertexLit
3527 alphaGen vertex
3528 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3529 }
3530 }
3531
3532 textures/terrain/mxterra14_0to4
3533 {
3534 surfaceparm grasssteps
3535 surfaceparm nolightmap
3536 q3map_novertexshadows
3537 q3map_forcesunlight
3538 {
3539 map textures/stone/mxrock0b.tga
3540 rgbGen vertexLit
3541 alphaGen vertex
3542 tcmod scale 0.1 0.1
3543 }
3544 {
3545 map textures/stone/mxrock4b.tga
3546 tcmod scale 0.1 0.1
3547 rgbGen vertexLit
3548 alphaGen vertex
3549 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3550 }
3551 }
3552
3553 textures/terrain/mxterra14_1to2
3554 {
3555 surfaceparm grasssteps
3556 surfaceparm nolightmap
3557 q3map_novertexshadows
3558 q3map_forcesunlight
3559 {
3560 map textures/stone/mxrock1b.tga
3561 rgbGen vertexLit
3562 alphaGen vertex
3563 tcmod scale 0.1 0.1
3564 }
3565 {
3566 map textures/stone/mxrock2b.tga
3567 tcmod scale 0.05 0.05
3568 rgbGen vertexLit
3569 alphaGen vertex
3570 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3571 }
3572 }
3573
3574 textures/terrain/mxterra14_1to3
3575 {
3576 surfaceparm gravelsteps
3577 surfaceparm nolightmap
3578 q3map_novertexshadows
3579 q3map_forcesunlight
3580 {
3581 map textures/stone/mxrock1b.tga
3582 rgbGen vertexLit
3583 alphaGen vertex
3584 tcmod scale 0.1 0.1
3585 }
3586 {
3587 map textures/stone/mxrock3g.tga
3588 tcmod scale 0.05 0.05
3589 rgbGen vertexLit
3590 alphaGen vertex
3591 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3592 }
3593 }
3594
3595 textures/terrain/mxterra14_1to4
3596 {
3597 surfaceparm gravelsteps
3598 surfaceparm nolightmap
3599 q3map_novertexshadows
3600 q3map_forcesunlight
3601 {
3602 map textures/stone/mxrock1b.tga
3603 rgbGen vertexLit
3604 alphaGen vertex
3605 tcmod scale 0.1 0.1
3606 }
3607 {
3608 map textures/stone/mxrock4b.tga
3609 tcmod scale 0.1 0.1
3610 rgbGen vertexLit
3611 alphaGen vertex
3612 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3613 }
3614 }
3615
3616 textures/terrain/mxterra14_2to3
3617 {
3618 surfaceparm grasssteps
3619 surfaceparm nolightmap
3620 q3map_novertexshadows
3621 q3map_forcesunlight
3622 {
3623 map textures/stone/mxrock2b.tga
3624 rgbGen vertexLit
3625 alphaGen vertex
3626 tcmod scale 0.05 0.05
3627 }
3628 {
3629 map textures/stone/mxrock3g.tga
3630 tcmod scale 0.05 0.05
3631 rgbGen vertexLit
3632 alphaGen vertex
3633 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3634 }
3635 }
3636
3637 textures/terrain/mxterra14_2to4
3638 {
3639 surfaceparm grasssteps
3640 surfaceparm nolightmap
3641 q3map_novertexshadows
3642 q3map_forcesunlight
3643 {
3644 map textures/stone/mxrock2b.tga
3645 rgbGen vertexLit
3646 alphaGen vertex
3647 tcmod scale 0.05 0.05
3648 }
3649 {
3650 map textures/stone/mxrock4b.tga
3651 tcmod scale 0.1 0.1
3652 rgbGen vertexLit
3653 alphaGen vertex
3654 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3655 }
3656 }
3657
3658 textures/terrain/mxterra14_3to4
3659 {
3660 surfaceparm nolightmap
3661 q3map_novertexshadows
3662 q3map_forcesunlight
3663 {
3664 map textures/stone/mxrock3g.tga
3665 rgbGen vertexLit
3666 alphaGen vertex
3667 tcmod scale 0.05 0.05
3668 }
3669 {
3670 map textures/stone/mxrock4b.tga
3671 tcmod scale 0.1 0.1
3672 rgbGen vertexLit
3673 alphaGen vertex
3674 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3675 }
3676 }
3677
3678
3679 ///////////////// norway /////////////////////
3680 //////////////////////////////////////////////
3681
3682 textures/terrain/mxterra15_0
3683 {
3684 surfaceparm grasssteps
3685 surfaceparm nolightmap
3686 q3map_novertexshadows
3687 q3map_forcesunlight
3688 {
3689 map textures/stone/mxsnow0.tga
3690 rgbGen vertexLit
3691 tcmod scale 0.05 0.05
3692 }
3693 }
3694
3695 textures/terrain/mxterra15_1
3696 {
3697 surfaceparm gravelsteps
3698 surfaceparm nolightmap
3699 q3map_novertexshadows
3700 q3map_forcesunlight
3701 {
3702 map textures/stone/mxsnow1.tga
3703 rgbGen vertexLit
3704 tcmod scale 0.025 0.025
3705 }
3706 }
3707
3708 textures/terrain/mxterra15_2
3709 {
3710 surfaceparm grasssteps
3711 surfaceparm nolightmap
3712 q3map_novertexshadows
3713 q3map_forcesunlight
3714 {
3715 map textures/stone/mxsnow2.tga
3716 tcmod scale 0.05 0.05
3717 rgbGen vertexLit
3718 }
3719 }
3720
3721 textures/terrain/mxterra15_3
3722 {
3723 surfaceparm nolightmap
3724 q3map_novertexshadows
3725 q3map_forcesunlight
3726 {
3727 map textures/stone/mxsnow3.tga
3728 tcmod scale 0.05 0.05
3729 rgbGen vertexLit
3730 }
3731 }
3732
3733 textures/terrain/mxterra15_4
3734 {
3735 surfaceparm nolightmap
3736 q3map_novertexshadows
3737 q3map_forcesunlight
3738 {
3739 map textures/stone/mxsnow4.tga
3740 tcmod scale 0.1 0.1
3741 rgbGen vertexLit
3742 }
3743 }
3744
3745 textures/terrain/mxterra15_0to1
3746 {
3747 surfaceparm grasssteps
3748 surfaceparm nolightmap
3749 q3map_novertexshadows
3750 q3map_forcesunlight
3751 {
3752 map textures/stone/mxsnow0.tga
3753 rgbGen vertexLit
3754 alphaGen vertex
3755 tcmod scale 0.05 0.05
3756 }
3757 {
3758 map textures/stone/mxsnow1.tga
3759 tcmod scale 0.025 0.025
3760 rgbGen vertexLit
3761 alphaGen vertex
3762 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3763 }
3764 }
3765
3766 textures/terrain/mxterra15_0to2
3767 {
3768 surfaceparm grasssteps
3769 surfaceparm nolightmap
3770 q3map_novertexshadows
3771 q3map_forcesunlight
3772 {
3773 map textures/stone/mxsnow0.tga
3774 rgbGen vertexLit
3775 alphaGen vertex
3776 tcmod scale 0.05 0.05
3777 }
3778 {
3779 map textures/stone/mxsnow2.tga
3780 tcmod scale 0.05 0.05
3781 rgbGen vertexLit
3782 alphaGen vertex
3783 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3784 }
3785 }
3786
3787 textures/terrain/mxterra15_0to3
3788 {
3789 surfaceparm grasssteps
3790 surfaceparm nolightmap
3791 q3map_novertexshadows
3792 q3map_forcesunlight
3793 {
3794 map textures/stone/mxsnow0.tga
3795 rgbGen vertexLit
3796 alphaGen vertex
3797 tcmod scale 0.05 0.05
3798 }
3799 {
3800 map textures/stone/mxsnow3.tga
3801 tcmod scale 0.05 0.05
3802 rgbGen vertexLit
3803 alphaGen vertex
3804 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3805 }
3806 }
3807
3808 textures/terrain/mxterra15_0to4
3809 {
3810 surfaceparm grasssteps
3811 surfaceparm nolightmap
3812 q3map_novertexshadows
3813 q3map_forcesunlight
3814 {
3815 map textures/stone/mxsnow0.tga
3816 rgbGen vertexLit
3817 alphaGen vertex
3818 tcmod scale 0.05 0.05
3819 }
3820 {
3821 map textures/stone/mxsnow4.tga
3822 tcmod scale 0.1 0.1
3823 rgbGen vertexLit
3824 alphaGen vertex
3825 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3826 }
3827 }
3828
3829
3830 textures/terrain/mxterra15_1to2
3831 {
3832 surfaceparm grasssteps
3833 surfaceparm nolightmap
3834 q3map_novertexshadows
3835 q3map_forcesunlight
3836 {
3837 map textures/stone/mxsnow1.tga
3838 rgbGen vertexLit
3839 alphaGen vertex
3840 tcmod scale 0.1 0.1
3841 }
3842 {
3843 map textures/stone/mxsnow2.tga
3844 tcmod scale 0.05 0.05
3845 rgbGen vertexLit
3846 alphaGen vertex
3847 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3848 }
3849 }
3850
3851 textures/terrain/mxterra15_1to3
3852 {
3853 surfaceparm gravelsteps
3854 surfaceparm nolightmap
3855 q3map_novertexshadows
3856 q3map_forcesunlight
3857 {
3858 map textures/stone/mxsnow1.tga
3859 rgbGen vertexLit
3860 alphaGen vertex
3861 tcmod scale 0.1 0.1
3862 }
3863 {
3864 map textures/stone/mxsnow3.tga
3865 tcmod scale 0.05 0.05
3866 rgbGen vertexLit
3867 alphaGen vertex
3868 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3869 }
3870 }
3871
3872 textures/terrain/mxterra15_1to4
3873 {
3874 surfaceparm gravelsteps
3875 surfaceparm nolightmap
3876 q3map_novertexshadows
3877 q3map_forcesunlight
3878 {
3879 map textures/stone/mxsnow1.tga
3880 rgbGen vertexLit
3881 alphaGen vertex
3882 tcmod scale 0.1 0.1
3883 }
3884 {
3885 map textures/stone/mxsnow4.tga
3886 tcmod scale 0.1 0.1
3887 rgbGen vertexLit
3888 alphaGen vertex
3889 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3890 }
3891 }
3892
3893 textures/terrain/mxterra15_2to3
3894 {
3895 surfaceparm grasssteps
3896 surfaceparm nolightmap
3897 q3map_novertexshadows
3898 q3map_forcesunlight
3899 {
3900 map textures/stone/mxsnow2.tga
3901 rgbGen vertexLit
3902 alphaGen vertex
3903 tcmod scale 0.05 0.05
3904 }
3905 {
3906 map textures/stone/mxsnow3.tga
3907 tcmod scale 0.05 0.05
3908 rgbGen vertexLit
3909 alphaGen vertex
3910 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3911 }
3912 }
3913
3914 textures/terrain/mxterra15_2to4
3915 {
3916 surfaceparm grasssteps
3917 surfaceparm nolightmap
3918 q3map_novertexshadows
3919 q3map_forcesunlight
3920 {
3921 map textures/stone/mxsnow2.tga
3922 rgbGen vertexLit
3923 alphaGen vertex
3924 tcmod scale 0.05 0.05
3925 }
3926 {
3927 map textures/stone/mxsnow4.tga
3928 tcmod scale 0.1 0.1
3929 rgbGen vertexLit
3930 alphaGen vertex
3931 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3932 }
3933 }
3934
3935
3936 textures/terrain/mxterra15_3to4
3937 {
3938 surfaceparm nolightmap
3939 q3map_novertexshadows
3940 q3map_forcesunlight
3941 {
3942 map textures/stone/mxsnow3.tga
3943 rgbGen vertexLit
3944 alphaGen vertex
3945 tcmod scale 0.05 0.05
3946 }
3947 {
3948 map textures/stone/mxsnow4.tga
3949 tcmod scale 0.1 0.1
3950 rgbGen vertexLit
3951 alphaGen vertex
3952 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3953 }
3954 }
3955
3956
3957
3958
3959
3960
3961
3962 /////////////////end ///////////////////
3963 //////////////////////////////////////////////
3964
3965 textures/terrain/mxterra16_0
3966 {
3967 surfaceparm grasssteps
3968 surfaceparm nolightmap
3969 q3map_novertexshadows
3970 q3map_forcesunlight
3971 {
3972 // map textures/stone/dirt_m03.tga
3973 map textures/stone/ground_c09a.tga
3974 // map textures/stone/mxrock0t.tga
3975 rgbGen vertexLit
3976 tcmod scale 0.1 0.1
3977 }
3978
3979 }
3980
3981 textures/terrain/mxterra16_1
3982 {
3983 surfaceparm gravelsteps
3984 surfaceparm nolightmap
3985 q3map_novertexshadows
3986 q3map_forcesunlight
3987 {
3988 map textures/stone/mxrock1b.tga
3989 rgbGen vertexLit
3990 tcmod scale 0.1 0.1
3991 }
3992
3993 }
3994
3995 textures/terrain/mxterra16_2
3996 {
3997 surfaceparm grasssteps
3998 surfaceparm nolightmap
3999 q3map_novertexshadows
4000 q3map_forcesunlight
4001 {
4002 // map textures/stone/ground_c09a.tga
4003 map textures/stone/mxrock4ca.tga
4004 // map textures/stone/dirt_m03.tga
4005 tcmod scale 0.05 0.05
4006 rgbGen vertexLit
4007 }
4008
4009
4010 }
4011 // assault_rock/ground_c09a
4012 // terrain/dirt_m03
4013 textures/terrain/mxterra16_3
4014 {
4015 surfaceparm nolightmap
4016 q3map_novertexshadows
4017 q3map_forcesunlight
4018 {
4019 map textures/stone/mxrock3g.tga
4020 tcmod scale 0.05 0.05
4021 rgbGen vertexLit
4022 }
4023
4024
4025 }
4026
4027 textures/terrain/mxterra16_4
4028 {
4029 surfaceparm nolightmap
4030 q3map_novertexshadows
4031 q3map_forcesunlight
4032 {
4033 map textures/stone/dirt_m03.tga
4034 // map textures/stone/mxrock4ca.tga
4035 tcmod scale 0.1 0.1
4036 rgbGen vertexLit
4037 }
4038
4039
4040 }
4041
4042 textures/terrain/mxterra16_0to1
4043 {
4044 surfaceparm grasssteps
4045 surfaceparm nolightmap
4046 q3map_novertexshadows
4047 q3map_forcesunlight
4048 {
4049 map textures/stone/ground_c09a.tga
4050 rgbGen vertexLit
4051 alphaGen vertex
4052 tcmod scale 0.1 0.1
4053 }
4054 {
4055 map textures/stone/mxrock1b.tga
4056 tcmod scale 0.1 0.1
4057 rgbGen vertexLit
4058 alphaGen vertex
4059 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4060 }
4061
4062
4063 }
4064
4065 textures/terrain/mxterra16_0to2
4066 {
4067 surfaceparm grasssteps
4068 surfaceparm nolightmap
4069 q3map_novertexshadows
4070 q3map_forcesunlight
4071 {
4072 map textures/stone/ground_c09a.tga
4073 rgbGen vertexLit
4074 alphaGen vertex
4075 tcmod scale 0.1 0.1
4076 }
4077 {
4078 map textures/stone/mxrock4ca.tga
4079 tcmod scale 0.05 0.05
4080 rgbGen vertexLit
4081 alphaGen vertex
4082 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4083 }
4084
4085
4086 }
4087
4088 textures/terrain/mxterra16_0to3
4089 {
4090 surfaceparm grasssteps
4091 surfaceparm nolightmap
4092 q3map_novertexshadows
4093 q3map_forcesunlight
4094 {
4095 map textures/stone/ground_c09a.tga
4096 rgbGen vertexLit
4097 alphaGen vertex
4098 tcmod scale 0.1 0.1
4099 }
4100 {
4101 map textures/stone/mxrock3g.tga
4102 tcmod scale 0.05 0.05
4103 rgbGen vertexLit
4104 alphaGen vertex
4105 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4106 }
4107
4108
4109 }
4110
4111 textures/terrain/mxterra16_0to4
4112 {
4113 surfaceparm grasssteps
4114 surfaceparm nolightmap
4115 q3map_novertexshadows
4116 q3map_forcesunlight
4117 {
4118 map textures/stone/ground_c09a.tga
4119 rgbGen vertexLit
4120 alphaGen vertex
4121 tcmod scale 0.1 0.1
4122 }
4123 {
4124 map textures/stone/dirt_m03.tga
4125 tcmod scale 0.1 0.1
4126 rgbGen vertexLit
4127 alphaGen vertex
4128 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4129 }
4130
4131
4132 }
4133
4134 textures/terrain/mxterra16_1to2
4135 {
4136 surfaceparm grasssteps
4137 surfaceparm nolightmap
4138 q3map_novertexshadows
4139 q3map_forcesunlight
4140 {
4141 map textures/stone/mxrock1b.tga
4142 rgbGen vertexLit
4143 alphaGen vertex
4144 tcmod scale 0.1 0.1
4145 }
4146 {
4147 map textures/stone/mxrock4ca.tga
4148 tcmod scale 0.05 0.05
4149 rgbGen vertexLit
4150 alphaGen vertex
4151 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4152 }
4153
4154 }
4155
4156 textures/terrain/mxterra16_1to3
4157 {
4158 surfaceparm gravelsteps
4159 surfaceparm nolightmap
4160 q3map_novertexshadows
4161 q3map_forcesunlight
4162 {
4163 map textures/stone/mxrock1b.tga
4164 rgbGen vertexLit
4165 alphaGen vertex
4166 tcmod scale 0.1 0.1
4167 }
4168 {
4169 map textures/stone/mxrock3g.tga
4170 tcmod scale 0.05 0.05
4171 rgbGen vertexLit
4172 alphaGen vertex
4173 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4174 }
4175
4176 }
4177
4178 textures/terrain/mxterra16_1to4
4179 {
4180 surfaceparm gravelsteps
4181 surfaceparm nolightmap
4182 q3map_novertexshadows
4183 q3map_forcesunlight
4184 {
4185 map textures/stone/mxrock1b.tga
4186 rgbGen vertexLit
4187 alphaGen vertex
4188 tcmod scale 0.1 0.1
4189 }
4190 {
4191 map textures/stone/dirt_m03.tga
4192 tcmod scale 0.1 0.1
4193 rgbGen vertexLit
4194 alphaGen vertex
4195 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4196 }
4197
4198 }
4199
4200 textures/terrain/mxterra16_2to3
4201 {
4202 surfaceparm grasssteps
4203 surfaceparm nolightmap
4204 q3map_novertexshadows
4205 q3map_forcesunlight
4206 {
4207 map textures/stone/mxrock4ca.tga
4208
4209 rgbGen vertexLit
4210 alphaGen vertex
4211 tcmod scale 0.05 0.05
4212 }
4213 {
4214 map textures/stone/mxrock3g.tga
4215 tcmod scale 0.05 0.05
4216 rgbGen vertexLit
4217 alphaGen vertex
4218 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4219 }
4220
4221 }
4222
4223 textures/terrain/mxterra16_2to4
4224 {
4225 surfaceparm grasssteps
4226 surfaceparm nolightmap
4227 q3map_novertexshadows
4228 q3map_forcesunlight
4229 {
4230 map textures/stone/mxrock4ca.tga
4231 rgbGen vertexLit
4232 alphaGen vertex
4233 tcmod scale 0.05 0.05
4234 }
4235 {
4236 map textures/stone/dirt_m03.tga
4237 tcmod scale 0.1 0.1
4238 rgbGen vertexLit
4239 alphaGen vertex
4240 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4241 }
4242
4243 }
4244
4245 textures/terrain/mxterra16_3to4
4246 {
4247 surfaceparm nolightmap
4248 q3map_novertexshadows
4249 q3map_forcesunlight
4250 {
4251 map textures/stone/mxrock3g.tga
4252 rgbGen vertexLit
4253 alphaGen vertex
4254 tcmod scale 0.05 0.05
4255 }
4256 {
4257 map textures/stone/dirt_m03.tga
4258 tcmod scale 0.1 0.1
4259 rgbGen vertexLit
4260 alphaGen vertex
4261 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4262 }
4263
4264 }
4265
4266
4267
4268 ///////////////// Boss2 /////////////////////
4269 //////////////////////////////////////////////
4270
4271 textures/terrain/mxterra17_0
4272 {
4273 surfaceparm grasssteps
4274 surfaceparm nolightmap
4275 q3map_novertexshadows
4276 q3map_forcesunlight
4277 {
4278 map textures/stone/mxsnow0.tga
4279 rgbGen vertexLit
4280 tcmod scale 0.05 0.05
4281 }
4282 }
4283
4284 textures/terrain/mxterra17_1
4285 {
4286 surfaceparm gravelsteps
4287 surfaceparm nolightmap
4288 q3map_novertexshadows
4289 q3map_forcesunlight
4290 {
4291 map textures/stone/mxsnow3.tga
4292 rgbGen vertexLit
4293 tcmod scale 0.025 0.025
4294 }
4295 }
4296
4297 textures/terrain/mxterra17_0to1
4298 {
4299 surfaceparm grasssteps
4300 surfaceparm nolightmap
4301 q3map_novertexshadows
4302 q3map_forcesunlight
4303 {
4304 map textures/stone/mxsnow0.tga
4305 rgbGen vertexLit
4306 alphaGen vertex
4307 tcmod scale 0.05 0.05
4308 }
4309 {
4310 map textures/stone/mxsnow3.tga
4311 tcmod scale 0.025 0.025
4312 rgbGen vertexLit
4313 alphaGen vertex
4314 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4315 }
4316 }
4317
4318 /////////////////end ///////////////////
4319 //////////////////////////////////////////////
4320
4321
4322
4323
3030
3131 The original id software readme that accompanied the RTCW source release is named README.txt and is contained within the source tree of both MP and SP games.
3232
33 ### Quick Start Guide
34
35 1. If you have not already done so, install Return to Castle Wolfenstein and remember the target installation directory.
36 2. Browse to the iortcw project release folder: https://github.com/iortcw/iortcw/releases.
37 3. Download the latest release file for your operating system, as well as patch-data-141.zip. As of this writing, the latest version of the iortcw release file is v1.51c.
38 4. Extract the latest release zip into a location where you would like to have your installation going forward (For example: c:\Games\iortcw\ in Windows or /home/joe/Games/iortcw/ in Linux).
39 5. Go to the location of your original existing installation, open the “Main” folder, and copy the following files over to your iortcw's “Main” folder for the single player campaign: **pak0.pk3, sp_pak1.pk3, sp_pak2.pk3, and sp_pak3.pk3**. For multiplayer, copy the following files to your iortcw's “Main” folder: **mp_bin.pk3, mp_pak0.pk3, mp_pak1.pk3, mp_pak2.pk3, mp_pak3.pk3, mp_pak4.pk3, mp_pak5.pk3, mp_pakmaps0.pk3, mp_pakmaps1.pk3, mp_pakmaps2.pk3, mp_pakmaps3.pk3, mp_pakmaps4.pk3, mp_pakmaps5.pk3, and mp_pakmaps6.pk3**.
40 6. Extract the contents of patch-data-141.zip (or a newer version in the meantime) into your iortcw folder and merge patch-data-141's content into your iortcw folder. For German, Spanish, French or Italian language support in-game, also extract the contents of one of the respective "patch-data-SP-language" zip files into your iortcw's "Main" folder.
41 7. Go to your iortcw installation folder and start either the “iowolfsp*” file for single player or “iowolfmp*” for multiplayer. If your system uses a 64-bit processor, run the single player or multiplayer file that ends with **x64**.
3342
3443 ### Compilation and installation
3544
369378
370379 Add the following code snippet to q_shared.h:
371380
372 #ifdef Q3_VM
373 typedef int intptr_t;
374 #else
375 #include <stdint.h>
376 #endif
377
381 ```c
382 #ifdef Q3_VM
383 typedef int intptr_t;
384 #else
385 #include <stdint.h>
386 #endif
387 ```
378388
379389 * Creating standalone games
380390
3636 # Microsoft Visual Studio
3737 ####################
3838 *.sdf
39 *.opensdf
40 *.suo
22 #
33 # GNU Make required
44 #
5
65 COMPILE_PLATFORM=$(shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g')
76 COMPILE_ARCH=$(shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/')
8 ARM_VER_CHECK=$(shell uname -m)
97
108 ifeq ($(COMPILE_PLATFORM),sunos)
119 # Solaris uname and GNU uname differ
122120 export CROSS_COMPILING
123121
124122 ifndef VERSION
125 VERSION=1.51c-SP
123 VERSION=1.51d-SP
126124 endif
127125
128126 ifndef CLIENTBIN
258256 endif
259257
260258 ifndef DEBUG_CFLAGS
261 DEBUG_CFLAGS=-g -O0
259 DEBUG_CFLAGS=-ggdb -O0
262260 endif
263261
264262 ifndef USE_BLOOM
299297 ZDIR=$(MOUNT_DIR)/zlib-1.2.11
300298 FTDIR=$(MOUNT_DIR)/freetype-2.9
301299 SPLDIR=$(MOUNT_DIR)/splines
300 TOOLSDIR=$(MOUNT_DIR)/tools
302301 Q3ASMDIR=$(MOUNT_DIR)/tools/asm
303302 LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg
304303 Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp
347346 endif
348347 endif
349348
349 # Add git version info
350 USE_GIT=
351 ifeq ($(wildcard ../.git),../.git)
352 GIT_REV=$(shell git show -s --pretty=format:%h-%ad --date=short)
353 ifneq ($(GIT_REV),)
354 VERSION:=$(VERSION)_GIT_$(GIT_REV)
355 USE_GIT=1
356 endif
357 endif
358
359
350360 #############################################################################
351361 # SETUP AND BUILD -- LINUX
352362 #############################################################################
353363
354 ## Defaults
355364 INSTALL=install
356365 MKDIR=mkdir -p
357366 EXTRA_FILES=
362371 endif
363372
364373 ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu" "gnu"))
365
366374 BASE_CFLAGS = -Wall -fno-strict-aliasing \
367375 -pipe -DUSE_ICON -DARCH_STRING=\\\"$(FILE_ARCH)\\\"
368376 CLIENT_CFLAGS += $(SDL_CFLAGS)
373381 ifeq ($(ARCH),x86_64)
374382 OPTIMIZEVM = -O3
375383 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
376 endif
384 else
377385 ifeq ($(ARCH),x86)
378386 OPTIMIZEVM = -O3 -march=i586
379387 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
380 endif
388 else
381389 ifeq ($(ARCH),ppc)
382390 ALTIVEC_CFLAGS = -maltivec
383391 endif
397405 # -ffast-math will cause the client to die with SIGFPE on Alpha
398406 OPTIMIZE = $(OPTIMIZEVM)
399407 endif
408 endif
409 endif
400410
401411 SHLIBEXT=so
402412 SHLIBCFLAGS=-fPIC -fvisibility=hidden
413423 ifeq ($(CROSS_COMPILING),1)
414424 ifeq ($(ARCH),x86)
415425 SDL_LIBS = $(LIBSDIR)/linux32/libSDL2main.a \
416 $(LIBSDIR)/linux32/libSDL2-2.0.so.0.9.0
426 $(LIBSDIR)/linux32/libSDL2-2.0.so.0.12.0
417427 endif
418428 ifeq ($(ARCH),x86_64)
419429 SDL_LIBS = $(LIBSDIR)/linux64/libSDL2main.a \
420 $(LIBSDIR)/linux64/libSDL2-2.0.so.0.9.0
430 $(LIBSDIR)/linux64/libSDL2-2.0.so.0.12.0
421431 endif
422432 endif
423433 endif
462472 LIBS = -framework Cocoa
463473 CLIENT_LIBS=
464474 RENDERER_LIBS=
465 OPTIMIZEVM= -O3
466
467 BASE_CFLAGS = -Wall
475 OPTIMIZEVM = -O3
476
477 # Default minimum Mac OS X version
478 ifeq ($(MACOSX_VERSION_MIN),)
479 MACOSX_VERSION_MIN=10.7
480 endif
481
482 MACOSX_MAJOR=$(shell echo $(MACOSX_VERSION_MIN) | cut -d. -f1)
483 MACOSX_MINOR=$(shell echo $(MACOSX_VERSION_MIN) | cut -d. -f2)
484 ifeq ($(shell test $(MACOSX_MINOR) -gt 9; echo $$?),0)
485 # Multiply and then remove decimal. 10.10 -> 101000.0 -> 101000
486 MAC_OS_X_VERSION_MIN_REQUIRED=$(shell echo "$(MACOSX_MAJOR) * 10000 + $(MACOSX_MINOR) * 100" | bc | cut -d. -f1)
487 else
488 # Multiply by 100 and then remove decimal. 10.7 -> 1070.0 -> 1070
489 MAC_OS_X_VERSION_MIN_REQUIRED=$(shell echo "$(MACOSX_VERSION_MIN) * 100" | bc | cut -d. -f1)
490 endif
491
492 LDFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)
493 BASE_CFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN) \
494 -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED)
468495
469496 ifeq ($(ARCH),ppc)
470 BASE_CFLAGS += -arch ppc -mmacosx-version-min=10.5 \
471 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060
497 BASE_CFLAGS += -arch ppc
472498 ALTIVEC_CFLAGS = -faltivec
473499 endif
474500 ifeq ($(ARCH),ppc64)
475 BASE_CFLAGS += -arch ppc64 -mmacosx-version-min=10.5 \
476 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060
501 BASE_CFLAGS += -arch ppc64
477502 ALTIVEC_CFLAGS = -faltivec
478503 endif
479504 ifeq ($(ARCH),x86)
480505 OPTIMIZEVM += -march=prescott -mfpmath=sse
481506 # x86 vm will crash without -mstackrealign since MMX instructions will be
482507 # used no matter what and they corrupt the frame pointer in VM calls
483 BASE_CFLAGS += -arch i386 -mstackrealign -mmacosx-version-min=10.6 \
484 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060
508 BASE_CFLAGS += -arch i386 -m32 -mstackrealign
485509 endif
486510 ifeq ($(ARCH),x86_64)
487511 OPTIMIZEVM += -mfpmath=sse
488 BASE_CFLAGS += -arch x86_64 -mmacosx-version-min=10.6 \
489 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060
512 BASE_CFLAGS += -arch x86_64
490513 endif
491514
492515 # When compiling on OSX for OSX, we're not cross compiling as far as the
497520 endif
498521
499522 ifeq ($(CROSS_COMPILING),1)
500 ifeq ($(ARCH),ppc)
501 CC=powerpc-apple-darwin10-gcc
502 RANLIB=powerpc-apple-darwin10-ranlib
523 ifeq ($(ARCH),x86_64)
524 CC=x86_64-apple-darwin13-cc
525 RANLIB=x86_64-apple-darwin13-ranlib
503526 else
504527 ifeq ($(ARCH),x86)
505 CC=i686-apple-darwin10-gcc
506 RANLIB=i686-apple-darwin10-ranlib
528 CC=i386-apple-darwin13-cc
529 RANLIB=i386-apple-darwin13-ranlib
507530 else
508531 $(error Architecture $(ARCH) is not supported when cross compiling)
509532 endif
513536 BASE_CFLAGS += -fno-strict-aliasing -fno-common -pipe
514537
515538 ifeq ($(USE_OPENAL),1)
539 ifneq ($(USE_LOCAL_HEADERS),1)
540 CLIENT_CFLAGS += -I/System/Library/Frameworks/OpenAL.framework/Headers
541 endif
516542 ifneq ($(USE_OPENAL_DLOPEN),1)
517543 ifneq ($(USE_INTERNAL_LIBS),1)
518544 CLIENT_CFLAGS += $(OPENAL_CFLAGS)
519545 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS)
546 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libopenal.dylib
520547 else
521548 CLIENT_LIBS += -framework OpenAL
522549 endif
532559
533560 BASE_CFLAGS += -D_THREAD_SAFE=1
534561
562 CLIENT_LIBS += -framework IOKit
563 RENDERER_LIBS += -framework OpenGL
564
535565 ifeq ($(USE_LOCAL_HEADERS),1)
566 # libSDL2-2.0.0.dylib for PPC is SDL 2.0.1 + changes to compile
536567 ifneq ($(findstring $(ARCH),ppc ppc64),)
537 CLIENT_CFLAGS += -I$(SDLHDIR)/include-2.0.1
568 BASE_CFLAGS += -I$(SDLHDIR)/include-2.0.1
538569 else
539 CLIENT_CFLAGS += -I$(SDLHDIR)/include
540 endif
541 else
542 CLIENT_CFLAGS += $(SDL_CFLAGS)
543 endif
544
545 # We copy sdlmain before ranlib'ing it so that subversion doesn't think
546 # the file has been modified by each build.
547 ifeq ($(USE_INTERNAL_LIBS),1)
570 BASE_CFLAGS += -I$(SDLHDIR)/include
571 endif
572
573 # We copy sdlmain before ranlib'ing it so that subversion doesn't think
574 # the file has been modified by each build.
548575 LIBSDLMAIN=$(B)/libSDL2main.a
549576 LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDL2main.a
550 CLIENT_LIBS += -framework IOKit $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
551 RENDERER_LIBS += -framework OpenGL $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
577 CLIENT_LIBS += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
578 RENDERER_LIBS += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
579 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib
552580 else
553 CLIENT_LIBS += -framework IOKit $(SDL_LIBS)
554 RENDERER_LIBS += -framework OpenGL $(SDL_LIBS)
555 endif
556
557 ifeq ($(USE_INTERNAL_LIBS),1)
558 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib $(LIBSDIR)/macosx/libopenal.dylib
581 BASE_CFLAGS += -I/Library/Frameworks/SDL2.framework/Headers
582 CLIENT_LIBS += -framework SDL2
583 RENDERER_LIBS += -framework SDL2
559584 endif
560585
561586 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
623648 # using generic windres if specific one is not present
624649 ifndef WINDRES
625650 WINDRES=windres
626 endif
651 endif
627652
628653 ifeq ($(CC),)
629654 $(error Cannot find a suitable cross compiler for $(PLATFORM))
666691
667692 ifeq ($(COMPILE_PLATFORM),cygwin)
668693 TOOLS_BINEXT=.exe
669 TOOLS_CC=$(CC)
694
695 # Under cygwin the default of using gcc for TOOLS_CC won't work, so
696 # we need to figure out the appropriate compiler to use, based on the
697 # host architecture that we're running under (as tools run on the host)
698 ifeq ($(COMPILE_ARCH),x86_64)
699 TOOLS_MINGW_PREFIXES=x86_64-w64-mingw32 amd64-mingw32msvc
700 endif
701 ifeq ($(COMPILE_ARCH),x86)
702 TOOLS_MINGW_PREFIXES=i686-w64-mingw32 i586-mingw32msvc i686-pc-mingw32
703 endif
704
705 TOOLS_CC=$(firstword $(strip $(foreach TOOLS_MINGW_PREFIX, $(TOOLS_MINGW_PREFIXES), \
706 $(call bin_path, $(TOOLS_MINGW_PREFIX)-gcc))))
670707 endif
671708
672709 LIBS= -lws2_32 -lwinmm -lpsapi
699736 endif
700737 endif
701738
739
702740 # libmingw32 must be linked before libSDLmain
703741 CLIENT_LIBS += -lmingw32
704742 RENDERER_LIBS += -lmingw32
705743
706744 ifeq ($(USE_LOCAL_HEADERS),1)
707745 CLIENT_CFLAGS += -I$(SDLHDIR)/include
708 endif
709
710 ifeq ($(USE_INTERNAL_LIBS),1)
711746 ifeq ($(ARCH),x86)
712747 CLIENT_LIBS += $(LIBSDIR)/win32/libSDL2main.a \
713 $(LIBSDIR)/win32/libSDL2.dll.a
748 $(LIBSDIR)/win32/libSDL2.dll.a
714749 RENDERER_LIBS += $(LIBSDIR)/win32/libSDL2main.a \
715 $(LIBSDIR)/win32/libSDL2.dll.a
750 $(LIBSDIR)/win32/libSDL2.dll.a
716751 SDLDLL=SDL2.dll
717752 CLIENT_EXTRA_FILES += $(LIBSDIR)/win32/SDL2.dll $(LIBSDIR)/win32/OpenAL32.dll
718 endif
719 ifeq ($(ARCH),x86_64)
753 else
720754 CLIENT_LIBS += $(LIBSDIR)/win64/libSDL264main.a \
721 $(LIBSDIR)/win64/libSDL264.dll.a
755 $(LIBSDIR)/win64/libSDL264.dll.a
722756 RENDERER_LIBS += $(LIBSDIR)/win64/libSDL264main.a \
723 $(LIBSDIR)/win64/libSDL264.dll.a
757 $(LIBSDIR)/win64/libSDL264.dll.a
724758 SDLDLL=SDL264.dll
725759 CLIENT_EXTRA_FILES += $(LIBSDIR)/win64/SDL264.dll $(LIBSDIR)/win64/OpenAL64.dll
726760 endif
734768 else # ifdef MINGW
735769
736770 #############################################################################
737 # SETUP AND BUILD -- *BSD (is dying)
738 #############################################################################
739
740 ifneq (,$(findstring "$(PLATFORM)", "freebsd" "openbsd" "netbsd"))
741
742 BASE_CFLAGS = -Wall -fno-strict-aliasing \
771 # SETUP AND BUILD -- FREEBSD
772 #############################################################################
773
774 ifeq ($(PLATFORM),freebsd)
775
776 # flags
777 BASE_CFLAGS = \
778 -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
779 -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON
780 CLIENT_CFLAGS += $(SDL_CFLAGS)
781
782 OPTIMIZEVM =
783 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
784
785 SHLIBEXT=so
786 SHLIBCFLAGS=-fPIC
787 SHLIBLDFLAGS=-shared $(LDFLAGS)
788
789 THREAD_LIBS=-lpthread
790 # don't need -ldl (FreeBSD)
791 LIBS=-lm
792
793 CLIENT_LIBS =
794
795 CLIENT_LIBS += $(SDL_LIBS)
796 RENDERER_LIBS = $(SDL_LIBS)
797
798 # optional features/libraries
799 ifeq ($(USE_OPENAL),1)
800 ifeq ($(USE_OPENAL_DLOPEN),1)
801 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS)
802 endif
803 endif
804
805 ifeq ($(USE_CURL),1)
806 CLIENT_CFLAGS += $(CURL_CFLAGS)
807 ifeq ($(USE_CURL_DLOPEN),1)
808 CLIENT_LIBS += $(CURL_LIBS)
809 endif
810 endif
811
812 # cross-compiling tweaks
813 ifeq ($(ARCH),x86)
814 ifeq ($(CROSS_COMPILING),1)
815 BASE_CFLAGS += -m32
816 endif
817 endif
818 ifeq ($(ARCH),x86_64)
819 ifeq ($(CROSS_COMPILING),1)
820 BASE_CFLAGS += -m64
821 endif
822 endif
823 else # ifeq freebsd
824
825 #############################################################################
826 # SETUP AND BUILD -- OPENBSD
827 #############################################################################
828
829 ifeq ($(PLATFORM),openbsd)
830
831 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
743832 -pipe -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON
744833 CLIENT_CFLAGS += $(SDL_CFLAGS)
745834
749838 ifeq ($(ARCH),x86_64)
750839 OPTIMIZEVM = -O3
751840 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
752 FILE_ARCH = amd64
753 endif
841 else
754842 ifeq ($(ARCH),x86)
755843 OPTIMIZEVM = -O3 -march=i586
756844 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
757 endif
845 else
758846 ifeq ($(ARCH),ppc)
759847 ALTIVEC_CFLAGS = -maltivec
760848 endif
761849 ifeq ($(ARCH),ppc64)
762850 ALTIVEC_CFLAGS = -maltivec
763 endif
764 ifeq ($(ARCH),sparc)
765 OPTIMIZE += -mtune=ultrasparc3 -mv8plus
766 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus
767851 endif
768852 ifeq ($(ARCH),sparc64)
769853 OPTIMIZE += -mtune=ultrasparc3 -mv8plus
774858 # -ffast-math will cause the client to die with SIGFPE on Alpha
775859 OPTIMIZE = $(OPTIMIZEVM)
776860 endif
861 endif
862 endif
777863
778864 ifeq ($(USE_CURL),1)
779865 CLIENT_CFLAGS += $(CURL_CFLAGS)
780866 USE_CURL_DLOPEN=0
781867 endif
782868
869 # no shm_open on OpenBSD
870 USE_MUMBLE=0
871
783872 SHLIBEXT=so
784873 SHLIBCFLAGS=-fPIC
785874 SHLIBLDFLAGS=-shared $(LDFLAGS)
803892 CLIENT_LIBS += $(CURL_LIBS)
804893 endif
805894 endif
806 else # ifeq *BSD
895 else # ifeq openbsd
896
897 #############################################################################
898 # SETUP AND BUILD -- NETBSD
899 #############################################################################
900
901 ifeq ($(PLATFORM),netbsd)
902
903 LIBS=-lm
904 SHLIBEXT=so
905 SHLIBCFLAGS=-fPIC
906 SHLIBLDFLAGS=-shared $(LDFLAGS)
907 THREAD_LIBS=-lpthread
908
909 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
910
911 ifeq ($(ARCH),x86)
912 HAVE_VM_COMPILED=true
913 endif
914
915 BUILD_CLIENT = 0
916 else # ifeq netbsd
807917
808918 #############################################################################
809919 # SETUP AND BUILD -- IRIX
854964 -pipe -DUSE_ICON
855965 CLIENT_CFLAGS += $(SDL_CFLAGS)
856966
857 OPTIMIZEVM = -O3
967 OPTIMIZEVM = -O3 -funroll-loops
858968
859969 ifeq ($(ARCH),sparc)
860 OPTIMIZEVM += -O3 -mtune=ultrasparc3 -mv8plus -mno-faster-structs
861 endif
970 OPTIMIZEVM += -O3 \
971 -fstrength-reduce -falign-functions=2 \
972 -mtune=ultrasparc3 -mv8plus -mno-faster-structs
973 else
862974 ifeq ($(ARCH),x86)
863 OPTIMIZEVM += -march=i586
975 OPTIMIZEVM += -march=i586 -fomit-frame-pointer \
976 -falign-functions=2 -fstrength-reduce
977 BASE_CFLAGS += -m32
864978 CLIENT_CFLAGS += -I/usr/X11/include/NVIDIA
865979 CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
980 endif
866981 endif
867982
868983 OPTIMIZE = $(OPTIMIZEVM) -ffast-math
884999 #############################################################################
8851000 # SETUP AND BUILD -- GENERIC
8861001 #############################################################################
887 BASE_CFLAGS =
1002 BASE_CFLAGS=
8881003 OPTIMIZE = -O3
8891004
8901005 SHLIBEXT=so
8941009 endif #Linux
8951010 endif #darwin
8961011 endif #MINGW
897 endif #*BSD
1012 endif #FreeBSD
1013 endif #OpenBSD
1014 endif #NetBSD
8981015 endif #IRIX
8991016 endif #SunOS
9001017
9331050 HAVE_VM_COMPILED=false
9341051 endif
9351052
936 ifneq ($(findstring $(ARCH),x86 x86_64 ppc ppc64 sparc sparc64),)
937 HAVE_VM_COMPILED=true
938 endif
939
940 ifeq ($(ARM_VER_CHECK),armv7l)
1053 ifneq ($(findstring $(ARCH),armv7l x86 x86_64 ppc ppc64 sparc sparc64),)
9411054 HAVE_VM_COMPILED=true
9421055 endif
9431056
10301143
10311144 ifeq ($(NEED_OPUS),1)
10321145 ifeq ($(USE_INTERNAL_OPUS),1)
1033 OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOAT_APPROX -DUSE_ALLOCA \
1146 OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA \
10341147 -I$(OPUSDIR)/include -I$(OPUSDIR)/celt -I$(OPUSDIR)/silk \
10351148 -I$(OPUSDIR)/silk/float -I$(OPUSFILEDIR)/include
10361149 else
10921205 BASE_CFLAGS += -DUSE_INTERNAL_JPEG
10931206 BASE_CFLAGS += -I$(JPDIR)
10941207 else
1095 # IJG libjpeg doesn't have $(PKG_CONFIG), but libjpeg-turbo uses libjpeg.pc;
1208 # IJG libjpeg doesn't have pkg-config, but libjpeg-turbo uses libjpeg.pc;
10961209 # we fall back to hard-coded answers if libjpeg.pc is unavailable
10971210 JPEG_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags libjpeg || true)
10981211 JPEG_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs libjpeg || echo -ljpeg)
11921305 define DO_REF_STR
11931306 $(echo_cmd) "REF_STR $<"
11941307 $(Q)rm -f $@
1195 $(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@
1196 $(Q)cat $< | sed -e 's/^/\"/;s/$$/\\n\"/' | tr -d '\r' >> $@
1197 $(Q)echo ";" >> $@
1308 $(Q)$(STRINGIFY) $< $@
11981309 endef
11991310
12001311 define DO_BOT_CC
13241435 @echo " PKG_CONFIG: $(PKG_CONFIG)"
13251436 @echo " CC: $(CC)"
13261437 @echo " CXX: $(CXX)"
1327 ifdef MINGW
1438 ifeq ($(PLATFORM),mingw32)
13281439 @echo " WINDRES: $(WINDRES)"
13291440 endif
13301441 @echo ""
13371448 @echo " SERVER_CFLAGS:"
13381449 $(call print_wrapped, $(SERVER_CFLAGS))
13391450 @echo ""
1451 @echo " TOOLS_CFLAGS:"
1452 $(call print_wrapped, $(TOOLS_CFLAGS))
1453 @echo ""
13401454 @echo " LDFLAGS:"
1341 ifneq ($(LDFLAGS),)
13421455 $(call print_wrapped, $(LDFLAGS))
1343 endif
13441456 @echo ""
13451457 @echo " LIBS:"
13461458 $(call print_wrapped, $(LIBS))
13661478 endif
13671479
13681480 $(B).zip: $(TARGETS)
1481 ifeq ($(PLATFORM),darwin)
1482 ifdef ARCHIVE
1483 @("./make-macosx-app.sh" release $(ARCH); if [ "$$?" -eq 0 ] && [ -d "$(B)/iowolfsp.app" ]; then rm -f $@; cd $(B) && zip --symlinks -r9 ../../$@ `find "iowolfsp.app" -print | sed -e "s!$(B)/!!g"`; else rm -f $@; cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS); fi)
1484 endif
1485 endif
1486 ifneq ($(PLATFORM),darwin)
1487 ifdef ARCHIVE
13691488 @rm -f $@
13701489 @(cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS))
1490 endif
1491 endif
13711492
13721493 makedirs:
13731494 @$(MKDIR) $(B)/splines
14351556 Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT)
14361557 Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT)
14371558 Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT)
1559 STRINGIFY = $(B)/tools/stringify$(TOOLS_BINEXT)
14381560
14391561 LBURGOBJ= \
14401562 $(B)/tools/lburg/lburg.o \
15271649 $(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP)
15281650 $(echo_cmd) "LD $@"
15291651 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS)
1652
1653 $(STRINGIFY): $(TOOLSDIR)/stringify.c
1654 $(echo_cmd) "TOOLS_CC $@"
1655 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(TOOLSDIR)/stringify.c $(TOOLS_LIBS)
15301656
15311657 define DO_Q3LCC
15321658 $(echo_cmd) "Q3LCC $<"
21202246
21212247 ifeq ($(HAVE_VM_COMPILED),true)
21222248 ifneq ($(findstring $(ARCH),x86 x86_64),)
2123 Q3OBJ += $(B)/client/vm_x86.o
2249 Q3OBJ += \
2250 $(B)/client/vm_x86.o
21242251 endif
21252252 ifneq ($(findstring $(ARCH),ppc ppc64),)
21262253 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o
21282255 ifneq ($(findstring $(ARCH),sparc sparc64),)
21292256 Q3OBJ += $(B)/client/vm_sparc.o
21302257 endif
2131 ifeq ($(ARM_VER_CHECK),armv7l)
2258 ifeq ($(ARCH),armv7l)
21322259 Q3OBJ += $(B)/client/vm_armv7l.o
21332260 endif
21342261 endif
22912418
22922419 ifeq ($(HAVE_VM_COMPILED),true)
22932420 ifneq ($(findstring $(ARCH),x86 x86_64),)
2294 Q3DOBJ += $(B)/ded/vm_x86.o
2421 Q3DOBJ += \
2422 $(B)/ded/vm_x86.o
22952423 endif
22962424 ifneq ($(findstring $(ARCH),ppc ppc64),)
22972425 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o
22992427 ifneq ($(findstring $(ARCH),sparc sparc64),)
23002428 Q3DOBJ += $(B)/ded/vm_sparc.o
23012429 endif
2302 ifeq ($(ARM_VER_CHECK),armv7l)
2430 ifeq ($(ARCH),armv7l)
23032431 Q3DOBJ += $(B)/ded/vm_armv7l.o
23042432 endif
23052433 endif
23702498 ifdef MINGW
23712499 $(B)/$(BASEGAME)/cgame_sp_$(SHLIBNAME): $(Q3CGOBJ)
23722500 $(echo_cmd) "LD $@"
2373 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
2501 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) $(LIBS)
23742502 else
23752503 $(B)/$(BASEGAME)/cgame.sp.$(SHLIBNAME): $(Q3CGOBJ)
23762504 $(echo_cmd) "LD $@"
2377 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
2505 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) $(LIBS)
23782506 endif
23792507 $(B)/$(BASEGAME)/vm/cgame.sp.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
23802508 $(echo_cmd) "Q3ASM $@"
24452573 ifdef MINGW
24462574 $(B)/$(BASEGAME)/qagame_sp_$(SHLIBNAME): $(Q3GOBJ)
24472575 $(echo_cmd) "LD $@"
2448 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
2576 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) $(LIBS)
24492577 else
24502578 $(B)/$(BASEGAME)/qagame.sp.$(SHLIBNAME): $(Q3GOBJ)
24512579 $(echo_cmd) "LD $@"
2452 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
2580 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) $(LIBS)
24532581 endif
24542582 $(B)/$(BASEGAME)/vm/qagame.sp.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
24552583 $(echo_cmd) "Q3ASM $@"
24792607 ifdef MINGW
24802608 $(B)/$(BASEGAME)/ui_sp_$(SHLIBNAME): $(Q3UIOBJ)
24812609 $(echo_cmd) "LD $@"
2482 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
2610 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(LIBS)
24832611 else
24842612 $(B)/$(BASEGAME)/ui.sp.$(SHLIBNAME): $(Q3UIOBJ)
24852613 $(echo_cmd) "LD $@"
2486 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
2614 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(LIBS)
24872615 endif
24882616 $(B)/$(BASEGAME)/vm/ui.sp.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
24892617 $(echo_cmd) "Q3ASM $@"
25702698 $(B)/renderer/tr_altivec.o: $(RDIR)/tr_altivec.c
25712699 $(DO_REF_CC_ALTIVEC)
25722700
2573 $(B)/rend2/glsl/%.c: $(R2DIR)/glsl/%.glsl
2701 $(B)/rend2/glsl/%.c: $(R2DIR)/glsl/%.glsl $(STRINGIFY)
25742702 $(DO_REF_STR)
25752703
25762704 $(B)/rend2/glsl/%.o: $(B)/rend2/glsl/%.c
26822810 $(B)/ded/%.o: $(NDIR)/%.c
26832811 $(DO_DED_CC)
26842812
2813 # Extra dependencies to ensure the git version is incorporated
2814 ifeq ($(USE_GIT),1)
2815 $(B)/client/cl_console.o : ../.git
2816 $(B)/client/common.o : ../.git
2817 $(B)/ded/common.o : ../.git
2818 endif
2819
2820
26852821 #############################################################################
26862822 ## GAME MODULE RULES
26872823 #############################################################################
27322868 $(Q3GVMOBJ) $(Q3CGVMOBJ) $(Q3UIVMOBJ)
27332869 TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ)
27342870 STRINGOBJ = $(Q3R2STRINGOBJ)
2871
27352872
27362873 copyfiles: release
27372874 @if [ ! -d $(COPYDIR)/$(BASEGAME) ]; then echo "You need to set COPYDIR to where your RTCW data is!"; fi
27992936 @echo "TOOLS_CLEAN $(B)"
28002937 @rm -f $(TOOLSOBJ)
28012938 @rm -f $(TOOLSOBJ_D_FILES)
2802 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM)
2939 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) $(STRINGIFY)
28032940
28042941 distclean: clean toolsclean
28052942 @rm -rf $(BUILD_DIR)
2727 ; Call to compiled code after setting up the register environment for the VM
2828 ; prototype:
2929 ; uint8_t qvmcall64(int *programStack, int *opStack, intptr_t *instructionPointers, byte *dataBase);
30 ;
31 ; This call-stub has its own custom calling convention due to pushing all non-volatile registers
32 ; to the stack. The game uses set/longjmp which on Windows uses "RtlUnwindEx" to unwind the callstack.
33 ; This function cannot be unwound by default due to the custom calling convention.
34 ; To allow unwinding, we need to add custom SEH unwind data to the function.
3035
31 qvmcall64 PROC
32 push rsi ; push non-volatile registers to stack
36 qvmcall64 PROC FRAME
37 push r12 ; push all non-volatile registers to stack
38 .pushreg r12
39 push r13
40 .pushreg r13
41 push r14
42 .pushreg r14
43 push r15
44 .pushreg r15
3345 push rdi
46 .pushreg rdi
47 push rsi
48 .pushreg rsi
3449 push rbx
50 .pushreg rbx
51 push rbp
52 .pushreg rbp
53
3554 ; need to save pointer in rcx so we can write back the programData value to caller
3655 push rcx
56 .pushreg rcx
57
58 .endprolog ; custom unwind data ends here
3759
3860 ; registers r8 and r9 have correct value already thanx to __fastcall
3961 xor rbx, rbx ; opStackOfs starts out being 0
4769 mov dword ptr [rcx], esi ; write back the programStack value
4870 mov al, bl ; return opStack offset
4971
72 pop rbp ; restore all non-volatile registers after the call
5073 pop rbx
74 pop rsi
5175 pop rdi
52 pop rsi
76 pop r15
77 pop r14
78 pop r13
79 pop r12
5380
5481 ret
5582 qvmcall64 ENDP
640640 for ( li = levelitems; li; li = li->next )
641641 {
642642 if ( li->number == number ) {
643 strncpy( name, itemconfig->iteminfo[li->iteminfo].name, size - 1 );
644 name[size - 1] = '\0';
643 Q_strncpyz( name, itemconfig->iteminfo[li->iteminfo].name, size );
645644 return;
646645 } //end for
647646 } //end for
517517 if ( !ci->accModels[ACC_HAT] ) { // don't launch anything if they don't have one
518518 return;
519519 }
520
521 CG_GetOriginForTag( cent, &cent->pe.headRefEnt, "tag_mouth", 0, origin, NULL );
520522
521523 velocity[0] = dir[0] * ( 0.75 + random() ) * GIB_VELOCITY;
522524 velocity[1] = dir[1] * ( 0.75 + random() ) * GIB_VELOCITY;
114114 ==============
115115 */
116116 void CG_LoseArmor( centity_t *cent, int index ) {
117 char *protoTags[] = { "tag_chest",
118 "tag_calfleft",
119 "tag_armleft",
120 "tag_back",
121 "tag_legleft",
122 "tag_calfright",
123 "tag_armright",
124 "tag_back",
125 "tag_legright"};
126
127 char *ssTags[] = { "tag_chest",
128 "tag_calfleft",
129 "tag_armleft",
130 "tag_back",
131 "tag_legleft",
132 "tag_calfright",
133 "tag_armright",
134 "tag_back",
135 "tag_legright",
136
137 "tag_footleft",
138 "tag_footright",
139 "tag_sholeft",
140 "tag_shoright",
141 "tag_torso",
142 "tag_calfleft",
143 "tag_calfright"};
144
145 char *heinrichTags[] = {"tag_chest",
146 "tag_calfleft",
147 "tag_armleft",
148 "tag_back",
149 "tag_legleft",
150 "tag_calfright",
151 "tag_armright",
152 "tag_back",
153 "tag_legright",
154
155 "tag_footleft",
156 "tag_footright",
157 "tag_sholeft",
158 "tag_shoright",
159 "tag_torso",
160 "tag_legleft",
161 "tag_legright",
162
163 "tag_sholeft",
164 "tag_shoright",
165 "tag_legleft",
166 "tag_legright",
167 "tag_calfleft",
168 "tag_calfright"};
169
170 //clientInfo_t *ci;
117171 // TTimo: bunch of inits
118172 int totalparts = 0, dynamicparts = 0, protoParts = 9, superParts = 16, heinrichParts = 22;
173 char **tags = NULL;
119174 qhandle_t *models = NULL;
120175 qhandle_t sound = 0; //----(SA) added
121176 int dmgbits = 16; // 32/2;
122177 int clientNum;
123 vec3_t origin = { 0 }, velocity, dir;
178 //int tagIndex;
179 vec3_t origin, velocity, dir;
124180
125181
126182 if ( cent->currentState.aiChar == AICHAR_PROTOSOLDIER ) {
183 tags = &protoTags[0];
127184 models = &cgs.media.protoArmor[0];
128185 dynamicparts = totalparts = protoParts;
129186 sound = cgs.media.protoArmorBreak;
130187 } else if ( cent->currentState.aiChar == AICHAR_SUPERSOLDIER ) {
188 tags = &ssTags[0];
131189 models = &cgs.media.superArmor[0];
132190 dynamicparts = 14; // the other two stay permanent
133191 totalparts = superParts;
134192 sound = cgs.media.superArmorBreak;
135193 } else if ( cent->currentState.aiChar == AICHAR_HEINRICH ) {
194 tags = &heinrichTags[0];
136195 models = &cgs.media.heinrichArmor[0];
137196 dynamicparts = 20; // will get kicked down to 16
138197 totalparts = heinrichParts;
153212 if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
154213 CG_Error( "Bad clientNum on player entity" );
155214 }
215 //ci = &cgs.clientinfo[ clientNum ];
156216
157217 // check if the model for the damaged part to fling is there
158218 if ( cent->currentState.dmgFlags & ( 1 << ( index + dynamicparts ) ) ) {
163223 return;
164224 }
165225
226 CG_GetOriginForTag( cent, &cent->pe.torsoRefEnt, tags[index], 0, origin, NULL );
227
166228 // calculate direction vector based on player center->tag position
167229 VectorSubtract( origin, cent->currentState.origin, dir );
168230 VectorNormalize( dir );
173235 }
174236 //----(SA) end
175237
238 //#define FLY_VELOCITY 75
239 //#define FLY_JUMP 200
176240 #define FLY_VELOCITY 200
177241 #define FLY_JUMP 300
178242
243 // velocity[0] = dir[0]*(0.75+random())*FLY_VELOCITY;
244 // velocity[1] = dir[1]*(0.75+random())*FLY_VELOCITY;
179245 velocity[0] = dir[0] * FLY_VELOCITY;
180246 velocity[1] = dir[1] * FLY_VELOCITY;
181247 velocity[2] = FLY_JUMP - 50 + dir[2] * ( 0.5 + random() ) * FLY_VELOCITY;
199265 } else {
200266 re->hModel = models[index + dynamicparts];
201267 }
268
202269
203270 re->fadeStartTime = le->endTime - 1000;
204271 re->fadeEndTime = le->endTime;
248315 }
249316 }
250317 }
318
251319
252320 /*
253321 ==============
26982698
26992699
27002700 // make sure we aren't looking at cg.predictedPlayerEntity for LG
2701 nonPredictedCent = &cg_entities[cent->currentState.clientNum];
2701 nonPredictedCent = &cg_entities[cent->currentState.number];
27022702
27032703 // if the index of the nonPredictedCent is not the same as the clientNum
27042704 // then this is a fake player (like on the single player podiums), so
32463246 Com_Printf( "%s", msg );
32473247 } else if ( print_level == PRINT_WARNING ) {
32483248 Com_Printf( S_COLOR_YELLOW "%s", msg ); // yellow
3249 } else if ( print_level == PRINT_ERROR ) {
3250 Com_Printf (S_COLOR_RED "%s", msg); // red
32493251 } else if ( print_level == PRINT_DEVELOPER ) {
3250 Com_DPrintf( S_COLOR_RED "%s", msg ); // red
3252 Com_DPrintf( S_COLOR_RED "%s", msg ); // red - developer only
32513253 }
32523254 }
32533255
41114111 //
41124112 // TODO: play a special "holding mg42" torso animation
41134113 //
4114 //VectorCopy( angles, cs->ideal_viewangles );
4114 VectorCopy( angles, cs->ideal_viewangles );
41154115 if ( cs->triggerReleaseTime < level.time ) {
41164116 trap_EA_Attack( bs->client );
41174117 cs->bFlags |= BFL_ATTACKED;
19821982 if ( BotSameTeam( bs, i ) ) {
19831983 shootbutton = qfalse;
19841984 break;
1985 } else if (bs->enemy == i) {
1985 } else if (gametype < GT_CTF || bs->enemy == i) {
19861986 shootbutton = qtrue;
19871987 }
19881988 }
14931493
14941494 traceEnt = &g_entities[ tr.entityNum ];
14951495
1496 if ( traceEnt->classname && Q_stricmp( traceEnt->classname, "trigger_hurt" ) == 0 ) {
1497 // ignore trigger_hurt so it's possible to pickup chalice (-1472 -3472 284) at the end of map crypt2
1498 trap_Trace( &tr, tr.endpos, NULL, NULL, end, tr.entityNum, ( CONTENTS_SOLID | CONTENTS_BODY | CONTENTS_CORPSE | CONTENTS_TRIGGER ) );
1499
1500 // muzzle and trigger_hurt are in player bbox?
1501 if ( tr.entityNum == ent->s.number ) {
1502 return;
1503 }
1504 }
1505
1506 if ( tr.surfaceFlags & SURF_NOIMPACT ) {
1507 return;
1508 }
1509
1510 traceEnt = &g_entities[ tr.entityNum ];
1511
14961512 // G_Printf( "%s activate %s\n", ent->classname, traceEnt->classname);
14971513
14981514 // Ridah, check for using a friendly AI
474474 tr = &ps->serverCursorHintTrace;
475475 trace_contents = ( CONTENTS_TRIGGER | CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_BODY | CONTENTS_CORPSE ); // SP fine checking corpses
476476 trap_Trace( tr, offset, NULL, NULL, end, ps->clientNum, trace_contents );
477
478 traceEnt = &g_entities[tr->entityNum];
479
480 if ( traceEnt->classname && Q_stricmp( traceEnt->classname, "trigger_hurt" ) == 0 ) {
481 // ignore trigger_hurt so it's possible to pickup chalice (-1472 -3472 284) at the end of map crypt2
482 trap_Trace( tr, tr->endpos, NULL, NULL, end, tr->entityNum, trace_contents );
483
484 // muzzle and trigger_hurt are in player bbox?
485 if ( tr->entityNum == ps->clientNum ) {
486 tr->entityNum = ENTITYNUM_NONE;
487 tr->fraction = 1;
488 }
489 }
477490
478491 // reset all
479492 hintType = ps->serverCursorHint = HINT_NONE;
20482048
20492049 FS_SV_FOpenFileRead( fbuffer, &f );
20502050 if ( !f ) {
2051 Q_strncpyz( cl_cdkey, " ", 17 );
2051 Com_Memset( cl_cdkey, '\0', 17 );
20522052 return;
20532053 }
20542054
20602060 if ( CL_CDKeyValidate( buffer, NULL ) ) {
20612061 Q_strncpyz( cl_cdkey, buffer, 17 );
20622062 } else {
2063 Q_strncpyz( cl_cdkey, " ", 17 );
2063 Com_Memset( cl_cdkey, '\0', 17 );
20642064 }
20652065 }
20662066
20782078
20792079 FS_SV_FOpenFileRead( fbuffer, &f );
20802080 if ( !f ) {
2081 Q_strncpyz( &cl_cdkey[16], " ", 17 );
2081 Com_Memset( &cl_cdkey[16], '\0', 17 );
20822082 return;
20832083 }
20842084
20902090 if ( CL_CDKeyValidate( buffer, NULL ) ) {
20912091 strcat( &cl_cdkey[16], buffer );
20922092 } else {
2093 Q_strncpyz( &cl_cdkey[16], " ", 17 );
2093 Com_Memset( &cl_cdkey[16], '\0', 17 );
20942094 }
20952095 }
20962096
31983198 int i;
31993199 searchpath_t *search;
32003200 pack_t *pak;
3201 char curpath[MAX_OSPATH + 1], *pakfile;
3201 char curpath[MAX_OSPATH + 1], *pakfile;
32023202 int numfiles;
32033203 char **pakfiles;
32043204 char *sorted[MAX_PAKFILES];
32053205
3206 // find all pak files in this directory
32063207 Q_strncpyz(curpath, FS_BuildOSPath(path, dir, ""), sizeof(curpath));
32073208 curpath[strlen(curpath) - 1] = '\0'; // strip the trailing slash
32083209
32403241 numfiles = MAX_PAKFILES;
32413242 }
32423243 for ( i = 0 ; i < numfiles ; i++ ) {
3243 sorted[i] = pakfiles[i];
3244
3245 // JPW NERVE sp_* to _p_* so "sp_pak*" gets alphabetically sorted before "pak*"
3246 //----(SA) SP mod
3247
3248 // (SA) sort order to be further clarified later (10/8/01)
3249 if ( !Q_strncmp( sorted[i],"sp_",3 ) ) { // sort sp first
3250 memcpy( sorted[i],"zz",2 );
3251 }
3252
3244 if ( pakfiles ) {
3245 sorted[i] = pakfiles[i];
3246
3247 // JPW NERVE sp_* to _p_* so "sp_pak*" gets alphabetically sorted before "pak*"
3248 //----(SA) SP mod
3249 // (SA) sort order to be further clarified later (10/8/01)
3250 if ( !Q_strncmp( sorted[i],"sp_",3 ) ) { // sort sp first
3251 memcpy( sorted[i],"zz",2 );
3252 }
3253 }
32533254 }
32543255
32553256 qsort( sorted, numfiles, sizeof(char *), paksort );
32563257
32573258 for ( i = 0 ; i < numfiles ; i++ ) {
3258
32593259 if ( Q_strncmp( sorted[i],"mp_",3 ) ) { // (SA) SP mod -- exclude mp_*
3260
3261 // JPW NERVE KLUDGE: fix filenames broken in mp/sp/pak sort above
3262 //----(SA) mod for SP
3260 // JPW NERVE KLUDGE: fix filenames broken in mp/sp/pak sort above
3261 //----(SA) mod for SP
32633262 if ( !Q_strncmp( sorted[i],"zz_",3 ) ) {
32643263 memcpy( sorted[i],"sp",2 );
32653264 }
3266
3267 // jpw
3265 // jpw
32683266 pakfile = FS_BuildOSPath( path, dir, sorted[i] );
32693267 if ( ( pak = FS_LoadZipFile( pakfile, sorted[i] ) ) == 0 ) {
32703268 continue;
228228 #define ARCH_STRING "amd64"
229229 #elif defined __axp__
230230 #define ARCH_STRING "alpha"
231 #elif defined __powerpc64__
232 #define ARCH_STRING "powerpc64"
233 #elif defined __powerpc__
234 #define ARCH_STRING "powerpc"
231235 #endif
232236
233237 #if BYTE_ORDER == BIG_ENDIAN
167167 */
168168 void COM_StripFilename( char *in, char *out ) {
169169 char *end;
170 Q_strncpyz( out, in, strlen( in ) );
170 memcpy( out, in, strlen( in ) );
171171 end = COM_SkipPath( out );
172172 *end = 0;
173173 }
8484 #define LEGACY_HEARTBEAT_FOR_MASTER "Wolfenstein-1"
8585
8686 #ifndef PRODUCT_VERSION
87 #define PRODUCT_VERSION "1.51c-SP"
87 #define PRODUCT_VERSION "1.51d-SP"
8888 #endif
8989
9090 #ifndef PRODUCT_DATE
418418 typedef vec_t vec4_t[4];
419419 typedef vec_t vec5_t[5];
420420
421 typedef vec_t quat_t[4];
422
421423 typedef int fixed4_t;
422424 typedef int fixed8_t;
423425 typedef int fixed16_t;
652654 #define Vector4Copy( a,b ) ( ( b )[0] = ( a )[0],( b )[1] = ( a )[1],( b )[2] = ( a )[2],( b )[3] = ( a )[3] )
653655
654656 #define Byte4Copy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3])
657
658 #define QuatCopy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3])
655659
656660 #define Vector4MA( v, s, b, o ) ( ( o )[0] = ( v )[0] + ( b )[0] * ( s ),( o )[1] = ( v )[1] + ( b )[1] * ( s ),( o )[2] = ( v )[2] + ( b )[2] * ( s ),( o )[3] = ( v )[3] + ( b )[3] * ( s ) )
657661 #define Vector4Average( v, b, s, o ) ( ( o )[0] = ( ( v )[0] * ( 1 - ( s ) ) ) + ( ( b )[0] * ( s ) ),( o )[1] = ( ( v )[1] * ( 1 - ( s ) ) ) + ( ( b )[1] * ( s ) ),( o )[2] = ( ( v )[2] * ( 1 - ( s ) ) ) + ( ( b )[2] * ( s ) ),( o )[3] = ( ( v )[3] * ( 1 - ( s ) ) ) + ( ( b )[3] * ( s ) ) )
8787
8888 // current size of search window
8989 float size = 1.0 / float(linearSearchSteps);
90
91 // adjust position if offset above surface
92 dp -= ds * r_parallaxMapOffset;
9093
9194 // current depth position
9295 float depth = 0.0;
140143 }
141144 #endif
142145
143 return bestDepth;
146 return bestDepth - r_parallaxMapOffset;
144147 }
145148
146149 float LightRay(vec2 dp, vec2 ds, sampler2D normalMap)
200203 float rr = roughness*roughness;
201204 float rrrr = rr*rr;
202205 float d = (NH * NH) * (rrrr - 1.0) + 1.0;
203 float v = (EH * EH) * (roughness + 0.5);
206 float v = (EH * EH) * (roughness + 0.5) + EPSILON;
204207 return specular * (rrrr / (4.0 * d * d * v));
205208 }
206209
221224 return attenuation;
222225 }
223226
224 #if defined(USE_BOX_CUBEMAP_PARALLAX) && __VERSION__ >= 130
227 #if defined(USE_BOX_CUBEMAP_PARALLAX)
225228 vec4 hitCube(vec3 ray, vec3 pos, vec3 invSize, float lod, samplerCube tex)
226229 {
227230 // find any hits on cubemap faces facing the camera
260263 float NL, NH, NE, EH, attenuation;
261264
262265 #if defined(USE_LIGHT) && !defined(USE_FAST_LIGHT)
263 mat3 tangentToWorld = mat3(var_Tangent.xyz, var_Bitangent.xyz, var_Normal.xyz);
266 vec3 surfNormal = (!gl_FrontFacing ? var_Normal : -var_Normal).xyz;
267 mat3 tangentToWorld = mat3(var_Tangent.xyz, var_Bitangent.xyz, surfNormal);
264268 viewDir = vec3(var_Normal.w, var_Tangent.w, var_Bitangent.w);
265269 E = normalize(viewDir);
266270 #endif
331335 N.z = sqrt(clamp((0.25 - N.x * N.x) - N.y * N.y, 0.0, 1.0));
332336 N = tangentToWorld * N;
333337 #else
334 N = var_Normal.xyz;
338 N = surfNormal;
335339 #endif
336340
337341 N = normalize(N);
357361
358362 #if !defined(USE_LIGHT_VECTOR)
359363 ambientColor = lightColor;
360 float surfNL = clamp(dot(var_Normal.xyz, L), 0.0, 1.0);
364 float surfNL = clamp(dot(surfNormal, L), 0.0, 1.0);
361365
362366 // reserve 25% ambient to avoid black areas on normalmaps
363367 lightColor *= 0.75;
11421142
11431143 if (r_parallaxMapShadows->integer)
11441144 Q_strcat(extradefines, 1024, "#define USE_PARALLAXMAP_SHADOWS\n");
1145
1146 Q_strcat(extradefines, 1024, va("#define r_parallaxMapOffset %f\n", r_parallaxMapOffset->value));
11451147 }
11461148 }
11471149
17751775 }
17761776 else if(lightMap)
17771777 {
1778 if(r_greyscale->integer)
1778 // GL_LUMINANCE is not valid for OpenGL 3.2 Core context and
1779 // everything becomes solid black
1780 if(0 && r_greyscale->integer)
17791781 internalFormat = GL_LUMINANCE;
17801782 else
17811783 internalFormat = GL_RGBA;
17901792 // select proper internal format
17911793 if ( samples == 3 )
17921794 {
1793 if(r_greyscale->integer)
1795 if(0 && r_greyscale->integer)
17941796 {
17951797 if(r_texturebits->integer == 16 || r_texturebits->integer == 32)
17961798 internalFormat = GL_LUMINANCE8;
18271829 }
18281830 else if ( samples == 4 )
18291831 {
1830 if(r_greyscale->integer)
1832 if(0 && r_greyscale->integer)
18311833 {
18321834 if(r_texturebits->integer == 16 || r_texturebits->integer == 32)
18331835 internalFormat = GL_LUMINANCE8_ALPHA8;
22842286 case GL_DEPTH_COMPONENT32_ARB:
22852287 // Fix for sampling depth buffer on old nVidia cards.
22862288 // from http://www.idevgames.com/forums/thread-4141-post-34844.html#pid34844
2287 qglTextureParameterfEXT(image->texnum, textureTarget, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
2289 if ( !QGL_VERSION_ATLEAST( 3, 0 ) ) {
2290 qglTextureParameterfEXT(image->texnum, textureTarget, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
2291 }
22882292 qglTextureParameterfEXT(image->texnum, textureTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
22892293 qglTextureParameterfEXT(image->texnum, textureTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
22902294 break;
3636 qboolean textureFilterAnisotropic = qfalse;
3737 int maxAnisotropy = 0;
3838 float displayAspect = 0.0f;
39 qboolean haveClampToEdge = qfalse;
3940
4041 glstate_t glState;
4142
154155 cvar_t *r_specularMapping;
155156 cvar_t *r_deluxeMapping;
156157 cvar_t *r_parallaxMapping;
158 cvar_t *r_parallaxMapOffset;
157159 cvar_t *r_parallaxMapShadows;
158160 cvar_t *r_cubeMapping;
159161 cvar_t *r_cubemapSize;
363365 if ( glRefConfig.glslMaxAnimatedBones < 12 ) {
364366 glRefConfig.glslMaxAnimatedBones = 0;
365367 }
368 }
369
370 // check for GLSL function textureCubeLod()
371 if ( r_cubeMapping->integer && !QGL_VERSION_ATLEAST( 3, 0 ) ) {
372 ri.Printf( PRINT_WARNING, "WARNING: Disabled r_cubeMapping because it requires OpenGL 3.0\n" );
373 ri.Cvar_Set( "r_cubeMapping", "0" );
366374 }
367375
368376 // set default state
11281136 */
11291137 void R_PrintLongString(const char *string) {
11301138 char buffer[1024];
1131 const char *p = string;
1132 int remainingLength = strlen(string);
1133
1134 while (remainingLength > 0)
1139 const char *p;
1140 int size = strlen(string);
1141
1142 p = string;
1143 while(size > 0)
11351144 {
1136 // Take as much characters as possible from the string without splitting words between buffers
1137 // This avoids the client console splitting a word up when one half fits on the current line,
1138 // but the second half would have to be written on a new line
1139 int charsToTake = sizeof(buffer) - 1;
1140 if (remainingLength > charsToTake) {
1141 while (p[charsToTake - 1] > ' ' && p[charsToTake] > ' ') {
1142 charsToTake--;
1143 if (charsToTake == 0) {
1144 charsToTake = sizeof(buffer) - 1;
1145 break;
1146 }
1147 }
1148 } else if (remainingLength < charsToTake) {
1149 charsToTake = remainingLength;
1150 }
1151
1152 Q_strncpyz( buffer, p, charsToTake + 1 );
1145 Q_strncpyz(buffer, p, sizeof (buffer) );
11531146 ri.Printf( PRINT_ALL, "%s", buffer );
1154 remainingLength -= charsToTake;
1155 p += charsToTake;
1147 p += 1023;
1148 size -= 1023;
11561149 }
11571150 }
11581151
11771170 ri.Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string );
11781171 ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string );
11791172 ri.Printf( PRINT_ALL, "GL_EXTENSIONS: " );
1173 // glConfig.extensions_string is a limited length so get the full list directly
11801174 if ( qglGetStringi )
11811175 {
11821176 GLint numExtensions;
11901184 }
11911185 else
11921186 {
1193 R_PrintLongString( glConfig.extensions_string );
1187 R_PrintLongString( (char *) qglGetString( GL_EXTENSIONS ) );
11941188 }
11951189 ri.Printf( PRINT_ALL, "\n" );
11961190 ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize );
14051399 r_specularMapping = ri.Cvar_Get( "r_specularMapping", "1", CVAR_ARCHIVE | CVAR_LATCH );
14061400 r_deluxeMapping = ri.Cvar_Get( "r_deluxeMapping", "1", CVAR_ARCHIVE | CVAR_LATCH );
14071401 r_parallaxMapping = ri.Cvar_Get( "r_parallaxMapping", "0", CVAR_ARCHIVE | CVAR_LATCH );
1402 r_parallaxMapOffset = ri.Cvar_Get( "r_parallaxMapOffset", "0", CVAR_ARCHIVE | CVAR_LATCH );
14081403 r_parallaxMapShadows = ri.Cvar_Get( "r_parallaxMapShadows", "0", CVAR_ARCHIVE | CVAR_LATCH );
14091404 r_cubeMapping = ri.Cvar_Get( "r_cubeMapping", "0", CVAR_ARCHIVE | CVAR_LATCH );
14101405 r_cubemapSize = ri.Cvar_Get( "r_cubemapSize", "128", CVAR_ARCHIVE | CVAR_LATCH );
14701465 r_dlightScale = ri.Cvar_Get( "r_dlightScale", "1.0", CVAR_ARCHIVE ); //----(SA) added
14711466 r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
14721467 r_finish = ri.Cvar_Get( "r_finish", "0", CVAR_ARCHIVE );
1473 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
1468 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR", CVAR_ARCHIVE );
14741469
14751470 r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0",
14761471 CVAR_ARCHIVE | CVAR_LATCH );
16971692 ri.Printf( PRINT_ALL, "glGetError() = 0x%x\n", err );
16981693 }
16991694
1695 // print info
1696 GfxInfo_f();
17001697 ri.Printf( PRINT_ALL, "----- finished R_Init -----\n" );
17011698 }
17021699
17471744 textureFilterAnisotropic = qfalse;
17481745 maxAnisotropy = 0;
17491746 displayAspect = 0.0f;
1747 haveClampToEdge = qfalse;
17501748
17511749 Com_Memset( &glState, 0, sizeof( glState ) );
17521750 }
10701070 float *heightLodError;
10711071 } srfBspSurface_t;
10721072
1073 typedef struct {
1074 vec3_t translate;
1075 quat_t rotate;
1076 vec3_t scale;
1077 } iqmTransform_t;
1078
10731079 // inter-quake-model
10741080 typedef struct {
10751081 int num_vertexes;
11031109
11041110 char *jointNames;
11051111 int *jointParents;
1106 float *jointMats;
1107 float *poseMats;
1112 float *bindJoints; // [num_joints * 12]
1113 float *invBindJoints; // [num_joints * 12]
1114 iqmTransform_t *poses; // [num_frames * num_poses]
11081115 float *bounds;
11091116
11101117 int numVaoSurfaces;
18171824 extern int maxAnisotropy;
18181825 extern glRefConfig_t glRefConfig;
18191826 extern float displayAspect;
1827 extern qboolean haveClampToEdge;
18201828
18211829 //
18221830 // cvars
19821990 extern cvar_t *r_specularMapping;
19831991 extern cvar_t *r_deluxeMapping;
19841992 extern cvar_t *r_parallaxMapping;
1993 extern cvar_t *r_parallaxMapOffset;
19851994 extern cvar_t *r_parallaxMapShadows;
19861995 extern cvar_t *r_cubeMapping;
19871996 extern cvar_t *r_cubemapSize;
11 ===========================================================================
22 Copyright (C) 2011 Thilo Schulz <thilo@tjps.eu>
33 Copyright (C) 2011 Matthias Bentrup <matthias.bentrup@googlemail.com>
4 Copyright (C) 2011-2019 Zack Middleton <zturtleman@gmail.com>
45
56 This file is part of Quake III Arena source code.
67
4344 }
4445 // "multiply" 3x4 matrices, these are assumed to be the top 3 rows
4546 // of a 4x4 matrix with the last row = (0 0 0 1)
46 static void Matrix34Multiply( float *a, float *b, float *out ) {
47 static void Matrix34Multiply( const float *a, const float *b, float *out ) {
4748 out[ 0] = a[0] * b[0] + a[1] * b[4] + a[ 2] * b[ 8];
4849 out[ 1] = a[0] * b[1] + a[1] * b[5] + a[ 2] * b[ 9];
4950 out[ 2] = a[0] * b[2] + a[1] * b[6] + a[ 2] * b[10];
5758 out[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10];
5859 out[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11];
5960 }
60 static void InterpolateMatrix( float *a, float *b, float lerp, float *mat ) {
61 float unLerp = 1.0f - lerp;
62
63 mat[ 0] = a[ 0] * unLerp + b[ 0] * lerp;
64 mat[ 1] = a[ 1] * unLerp + b[ 1] * lerp;
65 mat[ 2] = a[ 2] * unLerp + b[ 2] * lerp;
66 mat[ 3] = a[ 3] * unLerp + b[ 3] * lerp;
67 mat[ 4] = a[ 4] * unLerp + b[ 4] * lerp;
68 mat[ 5] = a[ 5] * unLerp + b[ 5] * lerp;
69 mat[ 6] = a[ 6] * unLerp + b[ 6] * lerp;
70 mat[ 7] = a[ 7] * unLerp + b[ 7] * lerp;
71 mat[ 8] = a[ 8] * unLerp + b[ 8] * lerp;
72 mat[ 9] = a[ 9] * unLerp + b[ 9] * lerp;
73 mat[10] = a[10] * unLerp + b[10] * lerp;
74 mat[11] = a[11] * unLerp + b[11] * lerp;
75 }
76 static void JointToMatrix( vec4_t rot, vec3_t scale, vec3_t trans,
61 static void JointToMatrix( const quat_t rot, const vec3_t scale, const vec3_t trans,
7762 float *mat ) {
7863 float xx = 2.0f * rot[0] * rot[0];
7964 float yy = 2.0f * rot[1] * rot[1];
9883 mat[10] = scale[2] * (1.0f - (xx + yy));
9984 mat[11] = trans[2];
10085 }
101 static void Matrix34Invert( float *inMat, float *outMat )
102 {
86 static void Matrix34Invert( const float *inMat, float *outMat ) {
10387 vec3_t trans;
10488 float invSqrLen, *v;
10589
118102 outMat[ 3] = -DotProduct(outMat + 0, trans);
119103 outMat[ 7] = -DotProduct(outMat + 4, trans);
120104 outMat[11] = -DotProduct(outMat + 8, trans);
105 }
106 static void QuatSlerp(const quat_t from, const quat_t _to, float fraction, quat_t out) {
107 float angle, cosAngle, sinAngle, backlerp, lerp;
108 quat_t to;
109
110 // cos() of angle
111 cosAngle = from[0] * _to[0] + from[1] * _to[1] + from[2] * _to[2] + from[3] * _to[3];
112
113 // negative handling is needed for taking shortest path (required for model joints)
114 if ( cosAngle < 0.0f ) {
115 cosAngle = -cosAngle;
116 to[0] = - _to[0];
117 to[1] = - _to[1];
118 to[2] = - _to[2];
119 to[3] = - _to[3];
120 } else {
121 QuatCopy( _to, to );
122 }
123
124 if ( cosAngle < 0.999999f ) {
125 // spherical lerp (slerp)
126 angle = acosf( cosAngle );
127 sinAngle = sinf( angle );
128 backlerp = sinf( ( 1.0f - fraction ) * angle ) / sinAngle;
129 lerp = sinf( fraction * angle ) / sinAngle;
130 } else {
131 // linear lerp
132 backlerp = 1.0f - fraction;
133 lerp = fraction;
134 }
135
136 out[0] = from[0] * backlerp + to[0] * lerp;
137 out[1] = from[1] * backlerp + to[1] * lerp;
138 out[2] = from[2] * backlerp + to[2] * lerp;
139 out[3] = from[3] * backlerp + to[3] * lerp;
140 }
141 static vec_t QuatNormalize2( const quat_t v, quat_t out) {
142 float length, ilength;
143
144 length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2] + v[3]*v[3];
145
146 if (length) {
147 /* writing it this way allows gcc to recognize that rsqrt can be used */
148 ilength = 1/(float)sqrt (length);
149 /* sqrt(length) = length * (1 / sqrt(length)) */
150 length *= ilength;
151 out[0] = v[0]*ilength;
152 out[1] = v[1]*ilength;
153 out[2] = v[2]*ilength;
154 out[3] = v[3]*ilength;
155 } else {
156 out[0] = out[1] = out[2] = 0;
157 out[3] = -1;
158 }
159
160 return length;
121161 }
122162
123163 /*
138178 unsigned short *framedata;
139179 char *str;
140180 int i, j, k;
141 float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f};
181 iqmTransform_t *transform;
142182 float *mat, *matInv;
143183 size_t size, joint_names;
144184 byte *dataPtr;
561601 if( header->num_joints ) {
562602 size += joint_names; // joint names
563603 size += header->num_joints * sizeof(int); // joint parents
564 size += header->num_joints * 12 * sizeof( float ); // joint mats
604 size += header->num_joints * 12 * sizeof(float); // bind joint matricies
605 size += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
565606 }
566607 if( header->num_poses ) {
567 size += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
608 size += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
568609 }
569610 if( header->ofs_bounds ) {
570611 size += header->num_frames * 6 * sizeof(float); // model bounds
635676 iqmData->jointParents = (int*)dataPtr;
636677 dataPtr += header->num_joints * sizeof(int); // joint parents
637678
638 iqmData->jointMats = (float*)dataPtr;
639 dataPtr += header->num_joints * 12 * sizeof( float ); // joint mats
679 iqmData->bindJoints = (float*)dataPtr;
680 dataPtr += header->num_joints * 12 * sizeof(float); // bind joint matricies
681
682 iqmData->invBindJoints = (float*)dataPtr;
683 dataPtr += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
640684 }
641685 if( header->num_poses ) {
642 iqmData->poseMats = (float*)dataPtr;
643 dataPtr += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
686 iqmData->poses = (iqmTransform_t*)dataPtr;
687 dataPtr += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
644688 }
645689 if( header->ofs_bounds ) {
646690 iqmData->bounds = (float*)dataPtr;
806850 iqmData->jointParents[i] = joint->parent;
807851 }
808852
809 // calculate joint matrices and their inverses
810 // joint inverses are needed only until the pose matrices are calculated
811 mat = iqmData->jointMats;
812 matInv = jointInvMats;
853 // calculate bind joint matrices and their inverses
854 mat = iqmData->bindJoints;
855 matInv = iqmData->invBindJoints;
813856 joint = (iqmJoint_t *)((byte *)header + header->ofs_joints);
814857 for( i = 0; i < header->num_joints; i++, joint++ ) {
815858 float baseFrame[12], invBaseFrame[12];
816859
860 QuatNormalize2( joint->rotate, joint->rotate );
861
817862 JointToMatrix( joint->rotate, joint->scale, joint->translate, baseFrame );
818863 Matrix34Invert( baseFrame, invBaseFrame );
819864
820865 if ( joint->parent >= 0 )
821866 {
822 Matrix34Multiply( iqmData->jointMats + 12 * joint->parent, baseFrame, mat );
867 Matrix34Multiply( iqmData->bindJoints + 12 * joint->parent, baseFrame, mat );
823868 mat += 12;
824 Matrix34Multiply( invBaseFrame, jointInvMats + 12 * joint->parent, matInv );
869 Matrix34Multiply( invBaseFrame, iqmData->invBindJoints + 12 * joint->parent, matInv );
825870 matInv += 12;
826871 }
827872 else
836881
837882 if( header->num_poses )
838883 {
839 // calculate pose matrices
884 // calculate pose transforms
885 transform = iqmData->poses;
840886 framedata = (unsigned short *)((byte *)header + header->ofs_frames);
841 mat = iqmData->poseMats;
842887 for( i = 0; i < header->num_frames; i++ ) {
843888 pose = (iqmPose_t *)((byte *)header + header->ofs_poses);
844 for( j = 0; j < header->num_poses; j++, pose++ ) {
889 for( j = 0; j < header->num_poses; j++, pose++, transform++ ) {
845890 vec3_t translate;
846 vec4_t rotate;
891 quat_t rotate;
847892 vec3_t scale;
848 float mat1[12], mat2[12];
849893
850894 translate[0] = pose->channeloffset[0];
851895 if( pose->mask & 0x001)
880924 if( pose->mask & 0x200)
881925 scale[2] += *framedata++ * pose->channelscale[9];
882926
883 // construct transformation matrix
884 JointToMatrix( rotate, scale, translate, mat1 );
885
886 if( pose->parent >= 0 ) {
887 Matrix34Multiply( iqmData->jointMats + 12 * pose->parent,
888 mat1, mat2 );
889 } else {
890 Com_Memcpy( mat2, mat1, sizeof(mat1) );
891 }
892
893 Matrix34Multiply( mat2, jointInvMats + 12 * j, mat );
894 mat += 12;
927 VectorCopy( translate, transform->translate );
928 QuatNormalize2( rotate, transform->rotate );
929 VectorCopy( scale, transform->scale );
895930 }
896931 }
897932 }
13051340
13061341
13071342 static void ComputePoseMats( iqmData_t *data, int frame, int oldframe,
1308 float backlerp, float *mat ) {
1309 float *mat1, *mat2;
1310 int *joint = data->jointParents;
1311 int i;
1312
1343 float backlerp, float *poseMats ) {
1344 iqmTransform_t relativeJoints[IQM_MAX_JOINTS];
1345 iqmTransform_t *relativeJoint;
1346 const iqmTransform_t *pose;
1347 const iqmTransform_t *oldpose;
1348 const int *jointParent;
1349 const float *invBindMat;
1350 float *poseMat, lerp;
1351 int i;
1352
1353 relativeJoint = relativeJoints;
1354
1355 // copy or lerp animation frame pose
13131356 if ( oldframe == frame ) {
1314 mat1 = data->poseMats + 12 * data->num_poses * frame;
1315 for( i = 0; i < data->num_poses; i++, joint++ ) {
1316 if( *joint >= 0 ) {
1317 Matrix34Multiply( mat + 12 * *joint,
1318 mat1 + 12*i, mat + 12*i );
1319 } else {
1320 Com_Memcpy( mat + 12*i, mat1 + 12*i, 12 * sizeof(float) );
1321 }
1322 }
1323 } else {
1324 mat1 = data->poseMats + 12 * data->num_poses * frame;
1325 mat2 = data->poseMats + 12 * data->num_poses * oldframe;
1326
1327 for( i = 0; i < data->num_poses; i++, joint++ ) {
1328 if( *joint >= 0 ) {
1329 float tmpMat[12];
1330 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1331 backlerp, tmpMat );
1332 Matrix34Multiply( mat + 12 * *joint,
1333 tmpMat, mat + 12*i );
1334
1335 } else {
1336 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1337 backlerp, mat + 12*i );
1338 }
1357 pose = &data->poses[frame * data->num_poses];
1358 for ( i = 0; i < data->num_poses; i++, pose++, relativeJoint++ ) {
1359 VectorCopy( pose->translate, relativeJoint->translate );
1360 QuatCopy( pose->rotate, relativeJoint->rotate );
1361 VectorCopy( pose->scale, relativeJoint->scale );
1362 }
1363 } else {
1364 lerp = 1.0f - backlerp;
1365 pose = &data->poses[frame * data->num_poses];
1366 oldpose = &data->poses[oldframe * data->num_poses];
1367 for ( i = 0; i < data->num_poses; i++, oldpose++, pose++, relativeJoint++ ) {
1368 relativeJoint->translate[0] = oldpose->translate[0] * backlerp + pose->translate[0] * lerp;
1369 relativeJoint->translate[1] = oldpose->translate[1] * backlerp + pose->translate[1] * lerp;
1370 relativeJoint->translate[2] = oldpose->translate[2] * backlerp + pose->translate[2] * lerp;
1371
1372 relativeJoint->scale[0] = oldpose->scale[0] * backlerp + pose->scale[0] * lerp;
1373 relativeJoint->scale[1] = oldpose->scale[1] * backlerp + pose->scale[1] * lerp;
1374 relativeJoint->scale[2] = oldpose->scale[2] * backlerp + pose->scale[2] * lerp;
1375
1376 QuatSlerp( oldpose->rotate, pose->rotate, lerp, relativeJoint->rotate );
1377 }
1378 }
1379
1380 // multiply by inverse of bind pose and parent 'pose mat' (bind pose transform matrix)
1381 relativeJoint = relativeJoints;
1382 jointParent = data->jointParents;
1383 invBindMat = data->invBindJoints;
1384 poseMat = poseMats;
1385 for ( i = 0; i < data->num_poses; i++, relativeJoint++, jointParent++, invBindMat += 12, poseMat += 12 ) {
1386 float mat1[12], mat2[12];
1387
1388 JointToMatrix( relativeJoint->rotate, relativeJoint->scale, relativeJoint->translate, mat1 );
1389
1390 if ( *jointParent >= 0 ) {
1391 Matrix34Multiply( &data->bindJoints[(*jointParent)*12], mat1, mat2 );
1392 Matrix34Multiply( mat2, invBindMat, mat1 );
1393 Matrix34Multiply( &poseMats[(*jointParent)*12], mat1, poseMat );
1394 } else {
1395 Matrix34Multiply( mat1, invBindMat, poseMat );
13391396 }
13401397 }
13411398 }
13461403 int i;
13471404
13481405 if ( data->num_poses == 0 ) {
1349 Com_Memcpy( mat, data->jointMats, data->num_joints * 12 * sizeof(float) );
1406 Com_Memcpy( mat, data->bindJoints, data->num_joints * 12 * sizeof(float) );
13501407 return;
13511408 }
13521409
13581415
13591416 Com_Memcpy(outmat, mat1, sizeof(outmat));
13601417
1361 Matrix34Multiply( outmat, data->jointMats + 12*i, mat1 );
1418 Matrix34Multiply( outmat, data->bindJoints + 12*i, mat1 );
13621419 }
13631420 }
13641421
14261483 float *vtxMat = &influenceVtxMat[12*i];
14271484 float *nrmMat = &influenceNrmMat[9*i];
14281485 int j;
1429 float blendWeights[4] = {0};
1430 int numWeights;
1431
1432 for ( numWeights = 0; numWeights < 4; numWeights++ ) {
1433 if ( data->blendWeightsType == IQM_FLOAT )
1434 blendWeights[numWeights] = data->influenceBlendWeights.f[4*influence + numWeights];
1435 else
1436 blendWeights[numWeights] = (float)data->influenceBlendWeights.b[4*influence + numWeights] / 255.0f;
1437
1438 if ( blendWeights[numWeights] <= 0.0f )
1439 break;
1440 }
1441
1442 if ( numWeights == 0 ) {
1486 float blendWeights[4];
1487
1488 if ( data->blendWeightsType == IQM_FLOAT ) {
1489 blendWeights[0] = data->influenceBlendWeights.f[4*influence + 0];
1490 blendWeights[1] = data->influenceBlendWeights.f[4*influence + 1];
1491 blendWeights[2] = data->influenceBlendWeights.f[4*influence + 2];
1492 blendWeights[3] = data->influenceBlendWeights.f[4*influence + 3];
1493 } else {
1494 blendWeights[0] = (float)data->influenceBlendWeights.b[4*influence + 0] / 255.0f;
1495 blendWeights[1] = (float)data->influenceBlendWeights.b[4*influence + 1] / 255.0f;
1496 blendWeights[2] = (float)data->influenceBlendWeights.b[4*influence + 2] / 255.0f;
1497 blendWeights[3] = (float)data->influenceBlendWeights.b[4*influence + 3] / 255.0f;
1498 }
1499
1500 if ( blendWeights[0] <= 0.0f ) {
14431501 // no blend joint, use identity matrix.
14441502 vtxMat[0] = identityMatrix[0];
14451503 vtxMat[1] = identityMatrix[1];
14691527 vtxMat[10] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 10];
14701528 vtxMat[11] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 11];
14711529
1472 for( j = 1; j < numWeights; j++ ) {
1530 for( j = 1; j < 4; j++ ) {
1531 if ( blendWeights[j] <= 0.0f ) {
1532 break;
1533 }
1534
14731535 vtxMat[0] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 0];
14741536 vtxMat[1] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 1];
14751537 vtxMat[2] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 2];
12311231 #endif
12321232 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
12331233 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
1234 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
1235 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
1234 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP );
1235 qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP );
12361236 } else {
12371237 if ( dirty ) {
12381238 // otherwise, just subimage upload it so that drivers can tell we are going to be changing
12001200 image->width = width;
12011201 image->height = height;
12021202 if (flags & IMGFLAG_CLAMPTOEDGE)
1203 glWrapClampMode = GL_CLAMP_TO_EDGE;
1203 glWrapClampMode = haveClampToEdge ? GL_CLAMP_TO_EDGE : GL_CLAMP;
12041204 else
12051205 glWrapClampMode = GL_REPEAT;
12061206
3333 qboolean textureFilterAnisotropic = qfalse;
3434 int maxAnisotropy = 0;
3535 float displayAspect = 0.0f;
36 qboolean haveClampToEdge = qfalse;
3637
3738 glstate_t glState;
3839
10321033 */
10331034 void R_PrintLongString(const char *string) {
10341035 char buffer[1024];
1035 const char *p = string;
1036 int remainingLength = strlen(string);
1037
1038 while (remainingLength > 0)
1036 const char *p;
1037 int size = strlen(string);
1038
1039 p = string;
1040 while(size > 0)
10391041 {
1040 // Take as much characters as possible from the string without splitting words between buffers
1041 // This avoids the client console splitting a word up when one half fits on the current line,
1042 // but the second half would have to be written on a new line
1043 int charsToTake = sizeof(buffer) - 1;
1044 if (remainingLength > charsToTake) {
1045 while (p[charsToTake - 1] > ' ' && p[charsToTake] > ' ') {
1046 charsToTake--;
1047 if (charsToTake == 0) {
1048 charsToTake = sizeof(buffer) - 1;
1049 break;
1050 }
1051 }
1052 } else if (remainingLength < charsToTake) {
1053 charsToTake = remainingLength;
1054 }
1055
1056 Q_strncpyz( buffer, p, charsToTake + 1 );
1042 Q_strncpyz(buffer, p, sizeof (buffer) );
10571043 ri.Printf( PRINT_ALL, "%s", buffer );
1058 remainingLength -= charsToTake;
1059 p += charsToTake;
1044 p += 1023;
1045 size -= 1023;
10601046 }
10611047 }
10621048
10811067 ri.Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string );
10821068 ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string );
10831069 ri.Printf( PRINT_ALL, "GL_EXTENSIONS: " );
1070 // glConfig.extensions_string is a limited length so get the full list directly
10841071 #ifndef USE_OPENGLES
10851072 if ( qglGetStringi )
10861073 {
10961083 else
10971084 #endif
10981085 {
1099 R_PrintLongString( glConfig.extensions_string );
1086 R_PrintLongString( (char *) qglGetString( GL_EXTENSIONS ) );
11001087 }
11011088 ri.Printf( PRINT_ALL, "\n" );
11021089 ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize );
12981285 r_dlightScale = ri.Cvar_Get( "r_dlightScale", "1.0", CVAR_ARCHIVE ); //----(SA) added
12991286 r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
13001287 r_finish = ri.Cvar_Get( "r_finish", "0", CVAR_ARCHIVE );
1301 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
1288 r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR", CVAR_ARCHIVE );
13021289
13031290 r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0",
13041291 CVAR_ARCHIVE | CVAR_LATCH );
15061493 ri.Printf( PRINT_ALL, "glGetError() = 0x%x\n", err );
15071494 }
15081495
1496 // print info
1497 GfxInfo_f();
15091498 ri.Printf( PRINT_ALL, "----- finished R_Init -----\n" );
15101499 }
15111500
15481537 textureFilterAnisotropic = qfalse;
15491538 maxAnisotropy = 0;
15501539 displayAspect = 0.0f;
1540 haveClampToEdge = qfalse;
15511541
15521542 Com_Memset( &glState, 0, sizeof( glState ) );
15531543 }
701701 drawVert_t *verts;
702702 } srfTriangles_t;
703703
704 typedef struct {
705 vec3_t translate;
706 quat_t rotate;
707 vec3_t scale;
708 } iqmTransform_t;
709
704710 // inter-quake-model
705711 typedef struct {
706712 int num_vertexes;
734740
735741 char *jointNames;
736742 int *jointParents;
737 float *jointMats;
738 float *poseMats;
743 float *bindJoints; // [num_joints * 12]
744 float *invBindJoints; // [num_joints * 12]
745 iqmTransform_t *poses; // [num_frames * num_poses]
739746 float *bounds;
740747 } iqmData_t;
741748
11341141 extern qboolean textureFilterAnisotropic;
11351142 extern int maxAnisotropy;
11361143 extern float displayAspect;
1144 extern qboolean haveClampToEdge;
11371145
11381146 //
11391147 // cvars
11 ===========================================================================
22 Copyright (C) 2011 Thilo Schulz <thilo@tjps.eu>
33 Copyright (C) 2011 Matthias Bentrup <matthias.bentrup@googlemail.com>
4 Copyright (C) 2011-2019 Zack Middleton <zturtleman@gmail.com>
45
56 This file is part of Quake III Arena source code.
67
4344 }
4445 // "multiply" 3x4 matrices, these are assumed to be the top 3 rows
4546 // of a 4x4 matrix with the last row = (0 0 0 1)
46 static void Matrix34Multiply( float *a, float *b, float *out ) {
47 static void Matrix34Multiply( const float *a, const float *b, float *out ) {
4748 out[ 0] = a[0] * b[0] + a[1] * b[4] + a[ 2] * b[ 8];
4849 out[ 1] = a[0] * b[1] + a[1] * b[5] + a[ 2] * b[ 9];
4950 out[ 2] = a[0] * b[2] + a[1] * b[6] + a[ 2] * b[10];
5758 out[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10];
5859 out[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11];
5960 }
60 static void InterpolateMatrix( float *a, float *b, float lerp, float *mat ) {
61 float unLerp = 1.0f - lerp;
62
63 mat[ 0] = a[ 0] * unLerp + b[ 0] * lerp;
64 mat[ 1] = a[ 1] * unLerp + b[ 1] * lerp;
65 mat[ 2] = a[ 2] * unLerp + b[ 2] * lerp;
66 mat[ 3] = a[ 3] * unLerp + b[ 3] * lerp;
67 mat[ 4] = a[ 4] * unLerp + b[ 4] * lerp;
68 mat[ 5] = a[ 5] * unLerp + b[ 5] * lerp;
69 mat[ 6] = a[ 6] * unLerp + b[ 6] * lerp;
70 mat[ 7] = a[ 7] * unLerp + b[ 7] * lerp;
71 mat[ 8] = a[ 8] * unLerp + b[ 8] * lerp;
72 mat[ 9] = a[ 9] * unLerp + b[ 9] * lerp;
73 mat[10] = a[10] * unLerp + b[10] * lerp;
74 mat[11] = a[11] * unLerp + b[11] * lerp;
75 }
76 static void JointToMatrix( vec4_t rot, vec3_t scale, vec3_t trans,
61 static void JointToMatrix( const quat_t rot, const vec3_t scale, const vec3_t trans,
7762 float *mat ) {
7863 float xx = 2.0f * rot[0] * rot[0];
7964 float yy = 2.0f * rot[1] * rot[1];
9883 mat[10] = scale[2] * (1.0f - (xx + yy));
9984 mat[11] = trans[2];
10085 }
101 static void Matrix34Invert( float *inMat, float *outMat )
102 {
86 static void Matrix34Invert( const float *inMat, float *outMat ) {
10387 vec3_t trans;
10488 float invSqrLen, *v;
10589
118102 outMat[ 3] = -DotProduct(outMat + 0, trans);
119103 outMat[ 7] = -DotProduct(outMat + 4, trans);
120104 outMat[11] = -DotProduct(outMat + 8, trans);
105 }
106 static void QuatSlerp(const quat_t from, const quat_t _to, float fraction, quat_t out) {
107 float angle, cosAngle, sinAngle, backlerp, lerp;
108 quat_t to;
109
110 // cos() of angle
111 cosAngle = from[0] * _to[0] + from[1] * _to[1] + from[2] * _to[2] + from[3] * _to[3];
112
113 // negative handling is needed for taking shortest path (required for model joints)
114 if ( cosAngle < 0.0f ) {
115 cosAngle = -cosAngle;
116 to[0] = - _to[0];
117 to[1] = - _to[1];
118 to[2] = - _to[2];
119 to[3] = - _to[3];
120 } else {
121 QuatCopy( _to, to );
122 }
123
124 if ( cosAngle < 0.999999f ) {
125 // spherical lerp (slerp)
126 angle = acosf( cosAngle );
127 sinAngle = sinf( angle );
128 backlerp = sinf( ( 1.0f - fraction ) * angle ) / sinAngle;
129 lerp = sinf( fraction * angle ) / sinAngle;
130 } else {
131 // linear lerp
132 backlerp = 1.0f - fraction;
133 lerp = fraction;
134 }
135
136 out[0] = from[0] * backlerp + to[0] * lerp;
137 out[1] = from[1] * backlerp + to[1] * lerp;
138 out[2] = from[2] * backlerp + to[2] * lerp;
139 out[3] = from[3] * backlerp + to[3] * lerp;
140 }
141 static vec_t QuatNormalize2( const quat_t v, quat_t out) {
142 float length, ilength;
143
144 length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2] + v[3]*v[3];
145
146 if (length) {
147 /* writing it this way allows gcc to recognize that rsqrt can be used */
148 ilength = 1/(float)sqrt (length);
149 /* sqrt(length) = length * (1 / sqrt(length)) */
150 length *= ilength;
151 out[0] = v[0]*ilength;
152 out[1] = v[1]*ilength;
153 out[2] = v[2]*ilength;
154 out[3] = v[3]*ilength;
155 } else {
156 out[0] = out[1] = out[2] = 0;
157 out[3] = -1;
158 }
159
160 return length;
121161 }
122162
123163 /*
138178 unsigned short *framedata;
139179 char *str;
140180 int i, j, k;
141 float jointInvMats[IQM_MAX_JOINTS * 12] = {0.0f};
181 iqmTransform_t *transform;
142182 float *mat, *matInv;
143183 size_t size, joint_names;
144184 byte *dataPtr;
558598 if( header->num_joints ) {
559599 size += joint_names; // joint names
560600 size += header->num_joints * sizeof(int); // joint parents
561 size += header->num_joints * 12 * sizeof( float ); // joint mats
601 size += header->num_joints * 12 * sizeof(float); // bind joint matricies
602 size += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
562603 }
563604 if( header->num_poses ) {
564 size += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
605 size += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
565606 }
566607 if( header->ofs_bounds ) {
567608 size += header->num_frames * 6 * sizeof(float); // model bounds
632673 iqmData->jointParents = (int*)dataPtr;
633674 dataPtr += header->num_joints * sizeof(int); // joint parents
634675
635 iqmData->jointMats = (float*)dataPtr;
636 dataPtr += header->num_joints * 12 * sizeof( float ); // joint mats
676 iqmData->bindJoints = (float*)dataPtr;
677 dataPtr += header->num_joints * 12 * sizeof(float); // bind joint matricies
678
679 iqmData->invBindJoints = (float*)dataPtr;
680 dataPtr += header->num_joints * 12 * sizeof(float); // inverse bind joint matricies
637681 }
638682 if( header->num_poses ) {
639 iqmData->poseMats = (float*)dataPtr;
640 dataPtr += header->num_poses * header->num_frames * 12 * sizeof( float ); // pose mats
683 iqmData->poses = (iqmTransform_t*)dataPtr;
684 dataPtr += header->num_poses * header->num_frames * sizeof(iqmTransform_t); // pose transforms
641685 }
642686 if( header->ofs_bounds ) {
643687 iqmData->bounds = (float*)dataPtr;
803847 iqmData->jointParents[i] = joint->parent;
804848 }
805849
806 // calculate joint matrices and their inverses
807 // joint inverses are needed only until the pose matrices are calculated
808 mat = iqmData->jointMats;
809 matInv = jointInvMats;
850 // calculate bind joint matrices and their inverses
851 mat = iqmData->bindJoints;
852 matInv = iqmData->invBindJoints;
810853 joint = (iqmJoint_t *)((byte *)header + header->ofs_joints);
811854 for( i = 0; i < header->num_joints; i++, joint++ ) {
812855 float baseFrame[12], invBaseFrame[12];
813856
857 QuatNormalize2( joint->rotate, joint->rotate );
858
814859 JointToMatrix( joint->rotate, joint->scale, joint->translate, baseFrame );
815860 Matrix34Invert( baseFrame, invBaseFrame );
816861
817862 if ( joint->parent >= 0 )
818863 {
819 Matrix34Multiply( iqmData->jointMats + 12 * joint->parent, baseFrame, mat );
864 Matrix34Multiply( iqmData->bindJoints + 12 * joint->parent, baseFrame, mat );
820865 mat += 12;
821 Matrix34Multiply( invBaseFrame, jointInvMats + 12 * joint->parent, matInv );
866 Matrix34Multiply( invBaseFrame, iqmData->invBindJoints + 12 * joint->parent, matInv );
822867 matInv += 12;
823868 }
824869 else
833878
834879 if( header->num_poses )
835880 {
836 // calculate pose matrices
881 // calculate pose transforms
882 transform = iqmData->poses;
837883 framedata = (unsigned short *)((byte *)header + header->ofs_frames);
838 mat = iqmData->poseMats;
839884 for( i = 0; i < header->num_frames; i++ ) {
840885 pose = (iqmPose_t *)((byte *)header + header->ofs_poses);
841 for( j = 0; j < header->num_poses; j++, pose++ ) {
886 for( j = 0; j < header->num_poses; j++, pose++, transform++ ) {
842887 vec3_t translate;
843 vec4_t rotate;
888 quat_t rotate;
844889 vec3_t scale;
845 float mat1[12], mat2[12];
846890
847891 translate[0] = pose->channeloffset[0];
848892 if( pose->mask & 0x001)
877921 if( pose->mask & 0x200)
878922 scale[2] += *framedata++ * pose->channelscale[9];
879923
880 // construct transformation matrix
881 JointToMatrix( rotate, scale, translate, mat1 );
882
883 if( pose->parent >= 0 ) {
884 Matrix34Multiply( iqmData->jointMats + 12 * pose->parent,
885 mat1, mat2 );
886 } else {
887 Com_Memcpy( mat2, mat1, sizeof(mat1) );
888 }
889
890 Matrix34Multiply( mat2, jointInvMats + 12 * j, mat );
891 mat += 12;
924 VectorCopy( translate, transform->translate );
925 QuatNormalize2( rotate, transform->rotate );
926 VectorCopy( scale, transform->scale );
892927 }
893928 }
894929 }
11271162
11281163
11291164 static void ComputePoseMats( iqmData_t *data, int frame, int oldframe,
1130 float backlerp, float *mat ) {
1131 float *mat1, *mat2;
1132 int *joint = data->jointParents;
1133 int i;
1134
1165 float backlerp, float *poseMats ) {
1166 iqmTransform_t relativeJoints[IQM_MAX_JOINTS];
1167 iqmTransform_t *relativeJoint;
1168 const iqmTransform_t *pose;
1169 const iqmTransform_t *oldpose;
1170 const int *jointParent;
1171 const float *invBindMat;
1172 float *poseMat, lerp;
1173 int i;
1174
1175 relativeJoint = relativeJoints;
1176
1177 // copy or lerp animation frame pose
11351178 if ( oldframe == frame ) {
1136 mat1 = data->poseMats + 12 * data->num_poses * frame;
1137 for( i = 0; i < data->num_poses; i++, joint++ ) {
1138 if( *joint >= 0 ) {
1139 Matrix34Multiply( mat + 12 * *joint,
1140 mat1 + 12*i, mat + 12*i );
1141 } else {
1142 Com_Memcpy( mat + 12*i, mat1 + 12*i, 12 * sizeof(float) );
1143 }
1144 }
1145 } else {
1146 mat1 = data->poseMats + 12 * data->num_poses * frame;
1147 mat2 = data->poseMats + 12 * data->num_poses * oldframe;
1148
1149 for( i = 0; i < data->num_poses; i++, joint++ ) {
1150 if( *joint >= 0 ) {
1151 float tmpMat[12];
1152 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1153 backlerp, tmpMat );
1154 Matrix34Multiply( mat + 12 * *joint,
1155 tmpMat, mat + 12*i );
1156
1157 } else {
1158 InterpolateMatrix( mat1 + 12*i, mat2 + 12*i,
1159 backlerp, mat + 12*i );
1160 }
1179 pose = &data->poses[frame * data->num_poses];
1180 for ( i = 0; i < data->num_poses; i++, pose++, relativeJoint++ ) {
1181 VectorCopy( pose->translate, relativeJoint->translate );
1182 QuatCopy( pose->rotate, relativeJoint->rotate );
1183 VectorCopy( pose->scale, relativeJoint->scale );
1184 }
1185 } else {
1186 lerp = 1.0f - backlerp;
1187 pose = &data->poses[frame * data->num_poses];
1188 oldpose = &data->poses[oldframe * data->num_poses];
1189 for ( i = 0; i < data->num_poses; i++, oldpose++, pose++, relativeJoint++ ) {
1190 relativeJoint->translate[0] = oldpose->translate[0] * backlerp + pose->translate[0] * lerp;
1191 relativeJoint->translate[1] = oldpose->translate[1] * backlerp + pose->translate[1] * lerp;
1192 relativeJoint->translate[2] = oldpose->translate[2] * backlerp + pose->translate[2] * lerp;
1193
1194 relativeJoint->scale[0] = oldpose->scale[0] * backlerp + pose->scale[0] * lerp;
1195 relativeJoint->scale[1] = oldpose->scale[1] * backlerp + pose->scale[1] * lerp;
1196 relativeJoint->scale[2] = oldpose->scale[2] * backlerp + pose->scale[2] * lerp;
1197
1198 QuatSlerp( oldpose->rotate, pose->rotate, lerp, relativeJoint->rotate );
1199 }
1200 }
1201
1202 // multiply by inverse of bind pose and parent 'pose mat' (bind pose transform matrix)
1203 relativeJoint = relativeJoints;
1204 jointParent = data->jointParents;
1205 invBindMat = data->invBindJoints;
1206 poseMat = poseMats;
1207 for ( i = 0; i < data->num_poses; i++, relativeJoint++, jointParent++, invBindMat += 12, poseMat += 12 ) {
1208 float mat1[12], mat2[12];
1209
1210 JointToMatrix( relativeJoint->rotate, relativeJoint->scale, relativeJoint->translate, mat1 );
1211
1212 if ( *jointParent >= 0 ) {
1213 Matrix34Multiply( &data->bindJoints[(*jointParent)*12], mat1, mat2 );
1214 Matrix34Multiply( mat2, invBindMat, mat1 );
1215 Matrix34Multiply( &poseMats[(*jointParent)*12], mat1, poseMat );
1216 } else {
1217 Matrix34Multiply( mat1, invBindMat, poseMat );
11611218 }
11621219 }
11631220 }
11681225 int i;
11691226
11701227 if ( data->num_poses == 0 ) {
1171 Com_Memcpy( mat, data->jointMats, data->num_joints * 12 * sizeof(float) );
1228 Com_Memcpy( mat, data->bindJoints, data->num_joints * 12 * sizeof(float) );
11721229 return;
11731230 }
11741231
11801237
11811238 Com_Memcpy(outmat, mat1, sizeof(outmat));
11821239
1183 Matrix34Multiply( outmat, data->jointMats + 12*i, mat1 );
1240 Matrix34Multiply( outmat, data->bindJoints + 12*i, mat1 );
11841241 }
11851242 }
11861243
12441301 float *vtxMat = &influenceVtxMat[12*i];
12451302 float *nrmMat = &influenceNrmMat[9*i];
12461303 int j;
1247 float blendWeights[4] = {0};
1248 int numWeights;
1249
1250 for ( numWeights = 0; numWeights < 4; numWeights++ ) {
1251 if ( data->blendWeightsType == IQM_FLOAT )
1252 blendWeights[numWeights] = data->influenceBlendWeights.f[4*influence + numWeights];
1253 else
1254 blendWeights[numWeights] = (float)data->influenceBlendWeights.b[4*influence + numWeights] / 255.0f;
1255
1256 if ( blendWeights[numWeights] <= 0.0f )
1257 break;
1258 }
1259
1260 if ( numWeights == 0 ) {
1304 float blendWeights[4];
1305
1306 if ( data->blendWeightsType == IQM_FLOAT ) {
1307 blendWeights[0] = data->influenceBlendWeights.f[4*influence + 0];
1308 blendWeights[1] = data->influenceBlendWeights.f[4*influence + 1];
1309 blendWeights[2] = data->influenceBlendWeights.f[4*influence + 2];
1310 blendWeights[3] = data->influenceBlendWeights.f[4*influence + 3];
1311 } else {
1312 blendWeights[0] = (float)data->influenceBlendWeights.b[4*influence + 0] / 255.0f;
1313 blendWeights[1] = (float)data->influenceBlendWeights.b[4*influence + 1] / 255.0f;
1314 blendWeights[2] = (float)data->influenceBlendWeights.b[4*influence + 2] / 255.0f;
1315 blendWeights[3] = (float)data->influenceBlendWeights.b[4*influence + 3] / 255.0f;
1316 }
1317
1318 if ( blendWeights[0] <= 0.0f ) {
12611319 // no blend joint, use identity matrix.
12621320 vtxMat[0] = identityMatrix[0];
12631321 vtxMat[1] = identityMatrix[1];
12871345 vtxMat[10] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 10];
12881346 vtxMat[11] = blendWeights[0] * poseMats[12 * data->influenceBlendIndexes[4*influence + 0] + 11];
12891347
1290 for( j = 1; j < numWeights; j++ ) {
1348 for( j = 1; j < 4; j++ ) {
1349 if ( blendWeights[j] <= 0.0f ) {
1350 break;
1351 }
1352
12911353 vtxMat[0] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 0];
12921354 vtxMat[1] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 1];
12931355 vtxMat[2] += blendWeights[j] * poseMats[12 * data->influenceBlendIndexes[4*influence + j] + 2];
6161
6262 cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained
6363 cvar_t *r_allowResize; // make window resizable
64 cvar_t *r_windowPosx;
65 cvar_t *r_windowPosy;
6664 cvar_t *r_centerWindow;
6765 cvar_t *r_sdlDriver;
6866
7674 void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
7775 void (APIENTRYP qglUnlockArraysEXT) (void);
7876
79 #define GLE(ret, name, ...) name##proc * qgl##name;
77 #define GLE(ret, name, ...) name##proc * qgl##name = NULL;
8078 QGL_1_1_PROCS;
8179 QGL_1_1_FIXED_FUNCTION_PROCS;
8280 QGL_DESKTOP_1_1_PROCS;
10098 */
10199 void GLimp_Shutdown( void )
102100 {
103 int x, y;
104 const char *posx;
105 const char *posy;
106
107 SDL_GetWindowPosition( SDL_window, &x, &y );
108 ri.Printf( PRINT_DEVELOPER, "Saving window position at %d,%d before closing.\n", x, y );
109
110 posx = va( "%d", x );
111 posy = va( "%d", y );
112
113 ri.Cvar_Set( "r_windowPosx", posx );
114 ri.Cvar_Set( "r_windowPosy", posy );
115
116101 ri.IN_Shutdown();
117102
118103 SDL_QuitSubSystem( SDL_INIT_VIDEO );
340325 version = (const char *)qglGetString( GL_VERSION );
341326
342327 if ( !version ) {
343 Com_Error( ERR_FATAL, "GL_VERSION is NULL\n" );
328 Com_Error( ERR_FATAL, "GL_VERSION is NULL" );
344329 }
345330
346331 if ( Q_stricmpn( "OpenGL ES", version, 9 ) == 0 ) {
356341 }
357342
358343 if ( fixedFunction ) {
359 if ( QGL_VERSION_ATLEAST( 1, 2 ) ) {
344 if ( QGL_VERSION_ATLEAST( 1, 1 ) ) {
360345 QGL_1_1_PROCS;
361346 QGL_1_1_FIXED_FUNCTION_PROCS;
362347 QGL_DESKTOP_1_1_PROCS;
381366 qglFogi = GLimp_GLES_Fogi; /*Added*/
382367 #else
383368 // error so this doesn't segfault due to NULL desktop GL functions being used
384 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
369 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s", version );
385370 #endif
386371 } else {
387 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 1.2 is required\n", version );
372 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 1.1 is required", version );
388373 }
389374 } else {
390375 if ( QGL_VERSION_ATLEAST( 2, 0 ) ) {
400385 QGL_1_5_PROCS;
401386 QGL_2_0_PROCS;
402387 // error so this doesn't segfault due to NULL desktop GL functions being used
403 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s\n", version );
388 Com_Error( ERR_FATAL, "Unsupported OpenGL Version: %s", version );
404389 } else {
405 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 2.0 is required\n", version );
390 Com_Error( ERR_FATAL, "Unsupported OpenGL Version (%s), OpenGL 2.0 is required", version );
406391 }
407392 }
408393
544529 }
545530 ri.Printf( PRINT_ALL, " %d %d\n", glConfig.vidWidth, glConfig.vidHeight);
546531
532 // Center window
533 if( r_centerWindow->integer && !fullscreen )
534 {
535 x = ( desktopMode.w / 2 ) - ( glConfig.vidWidth / 2 );
536 y = ( desktopMode.h / 2 ) - ( glConfig.vidHeight / 2 );
537 }
538
547539 // Destroy existing state if it exists
548540 if( SDL_glContext != NULL )
549541 {
654646 perChannelColorBits = 0; /* Use minimum size for 16-bit color */
655647
656648 /* Need alpha or else SGIs choose 36+ bit RGB mode */
657 SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 1 );
649 SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 1);
658650 #endif
659651
660652 #ifdef USE_OPENGLES
673665 if(r_stereoEnabled->integer)
674666 {
675667 glConfig.stereoEnabled = qtrue;
676 SDL_GL_SetAttribute( SDL_GL_STEREO, 1 );
668 SDL_GL_SetAttribute(SDL_GL_STEREO, 1);
677669 }
678670 else
679671 {
680672 glConfig.stereoEnabled = qfalse;
681 SDL_GL_SetAttribute( SDL_GL_STEREO, 0 );
673 SDL_GL_SetAttribute(SDL_GL_STEREO, 0);
682674 }
683675
684676 SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
685677
678 #if 0 // if multisampling is enabled on X11, this causes create window to fail.
686679 // If not allowing software GL, demand accelerated
687680 if( !r_allowSoftwareGL->integer )
688 {
689 int value;
690
691681 SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
692
693 //Fall back to allow either if setting attribute failed
694 if( SDL_GL_GetAttribute( SDL_GL_ACCELERATED_VISUAL, &value ) != 1 )
695 SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, -1 );
696 }
697
698 if( r_centerWindow->integer && !fullscreen )
699 {
700 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
701 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
702 {
703 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
704 continue;
705 }
706 }
707 else if ( ( r_windowPosx->integer || r_windowPosy->integer ) && !fullscreen )
708 {
709 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, r_windowPosx->integer, r_windowPosy->integer,
710 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
711 {
712 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
713 continue;
714 }
715 }
716 else
717 {
718 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, x, y,
719 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
720 {
721 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
722 continue;
723 }
682 #endif
683
684 if( ( SDL_window = SDL_CreateWindow( CLIENT_WINDOW_TITLE, x, y,
685 glConfig.vidWidth, glConfig.vidHeight, flags ) ) == NULL )
686 {
687 ri.Printf( PRINT_DEVELOPER, "SDL_CreateWindow failed: %s\n", SDL_GetError( ) );
688 continue;
724689 }
725690
726691 if( fullscreen )
789754 ri.Printf( PRINT_ALL, "GLimp_GetProcAddresses() failed for OpenGL 3.2 core context\n" );
790755 renderer = NULL;
791756 }
792
757
793758 if (!renderer || (strstr(renderer, "Software Renderer") || strstr(renderer, "Software Rasterizer")))
794759 {
795760 if ( renderer )
976941 ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
977942 }
978943 }
979
980944
981945 // OpenGL 1 fixed function pipeline
982946 if ( fixedFunction )
11141078 {
11151079 ri.Printf( PRINT_ALL, "...GL_EXT_texture_filter_anisotropic not found\n" );
11161080 }
1081
1082 haveClampToEdge = qfalse;
1083 if ( QGL_VERSION_ATLEAST( 1, 2 ) || QGLES_VERSION_ATLEAST( 1, 0 ) || SDL_GL_ExtensionSupported( "GL_SGIS_texture_edge_clamp" ) )
1084 {
1085 ri.Printf( PRINT_ALL, "...using GL_SGIS_texture_edge_clamp\n" );
1086 haveClampToEdge = qtrue;
1087 }
1088 else
1089 {
1090 ri.Printf( PRINT_ALL, "...GL_SGIS_texture_edge_clamp not found\n" );
1091 }
11171092 }
11181093
11191094 #define R_MODE_FALLBACK 3 // 640 * 480
11331108 r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
11341109 r_sdlDriver = ri.Cvar_Get( "r_sdlDriver", "", CVAR_ROM );
11351110 r_allowResize = ri.Cvar_Get( "r_allowResize", "0", CVAR_ARCHIVE | CVAR_LATCH );
1136 r_windowPosx = ri.Cvar_Get( "r_windowPosx", "0", CVAR_ARCHIVE );
1137 r_windowPosy = ri.Cvar_Get( "r_windowPosy", "0", CVAR_ARCHIVE );
11381111 r_centerWindow = ri.Cvar_Get( "r_centerWindow", "0", CVAR_ARCHIVE | CVAR_LATCH );
11391112
11401113 if( ri.Cvar_VariableIntegerValue( "com_abnormalExit" ) )
12461219
12471220 if( r_fullscreen->modified )
12481221 {
1249 qboolean fullscreen;
1250 qboolean needToToggle;
1222 int fullscreen;
1223 qboolean needToToggle;
12511224
12521225 // Find out the current state
12531226 fullscreen = !!( SDL_GetWindowFlags( SDL_window ) & SDL_WINDOW_FULLSCREEN );
12651238 if( needToToggle )
12661239 {
12671240 // Need the vid_restart here since r_fullscreen is only latched
1268 if( fullscreen ) {
1241 if( fullscreen )
1242 {
12691243 Com_Printf( "Switching to windowed rendering\n" );
12701244 ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart\n");
1271 } else {
1245 }
1246 else
1247 {
12721248 Com_Printf( "Switching to fullscreen rendering\n" );
12731249 ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart\n");
12741250 }
3131
3232 #include "../client/client.h"
3333 #include "../sys/sys_local.h"
34
35 #if !SDL_VERSION_ATLEAST(2, 0, 17)
36 #define KMOD_SCROLL KMOD_RESERVED
37 #endif
3438
3539 static cvar_t *in_keyboardDebug = NULL;
3640
8387 if( keysym->mod & KMOD_NUM ) Com_Printf( " KMOD_NUM" );
8488 if( keysym->mod & KMOD_CAPS ) Com_Printf( " KMOD_CAPS" );
8589 if( keysym->mod & KMOD_MODE ) Com_Printf( " KMOD_MODE" );
86 if( keysym->mod & KMOD_RESERVED ) Com_Printf( " KMOD_RESERVED" );
90 if( keysym->mod & KMOD_SCROLL ) Com_Printf( " KMOD_SCROLL" );
8791
8892 Com_Printf( " Q:0x%02x(%s)\n", key, Key_KeynumToString( key, qtrue ) );
8993 }
11221126 width = e.window.data1;
11231127 height = e.window.data2;
11241128
1125 // check for fullscreen
1126 // SDL_WINDOWEVENT_RESIZED occurs when requested resolution != given resolution
1127 // This prevents an infinite vid_restart loop
1129 // ignore this event on fullscreen
11281130 if( cls.glconfig.isFullscreen )
11291131 {
11301132 break;
280280 #ifdef USE_SDL_AUDIO_CAPTURE
281281 // !!! FIXME: some of these SDL_OpenAudioDevice() values should be cvars.
282282 s_sdlCapture = Cvar_Get( "s_sdlCapture", "1", CVAR_ARCHIVE | CVAR_LATCH );
283 // !!! FIXME: pulseaudio capture records audio the entire time the program is running. https://bugzilla.libsdl.org/show_bug.cgi?id=4087
284 if (Q_stricmp(SDL_GetCurrentAudioDriver(), "pulseaudio") == 0)
285 {
286 Com_Printf("SDL audio capture support disabled for pulseaudio (https://bugzilla.libsdl.org/show_bug.cgi?id=4087)\n");
287 }
288 else if (!s_sdlCapture->integer)
283 if (!s_sdlCapture->integer)
289284 {
290285 Com_Printf("SDL audio capture support disabled by user ('+set s_sdlCapture 1' to enable)\n");
291286 }
962962 if ( COM_CompareExtension( name, DLL_EXT ) ) {
963963 return qtrue;
964964 }
965
966 #ifdef __APPLE__
967 // Allow system frameworks without dylib extensions
968 // i.e., /System/Library/Frameworks/OpenAL.framework/OpenAL
969 if ( strncmp( name, "/System/Library/Frameworks/", 27 ) == 0 ) {
970 return qtrue;
971 }
972 #endif
965973
966974 // Check for format of filename.so.1.2.3
967975 p = strstr( name, DLL_EXT "." );
0 #include <stdio.h>
1 #include <ctype.h>
2 #include <string.h>
3 #include <libgen.h>
4
5 int main(int argc, char **argv)
6 {
7 FILE *ifp;
8 FILE *ofp;
9 char buffer[1024];
10
11 if(argc < 3)
12 return 1;
13
14 char *inFile = argv[1];
15 char *outFile = argv[2];
16
17 ifp = fopen(inFile, "r");
18 if(!ifp)
19 return 2;
20
21 ofp = fopen(outFile, "w");
22 if(!ofp)
23 return 3;
24
25 // Strip extension
26 char *base = basename(inFile);
27 *strrchr(base, '.') = '\0';
28
29 fprintf(ofp, "const char *fallbackShader_%s =\n", base);
30
31 while(fgets(buffer, sizeof(buffer), ifp))
32 {
33 // Strip trailing whitespace from line
34 char *end = buffer + strlen(buffer) - 1;
35 while(end >= buffer && isspace(*end))
36 end--;
37
38 end[1] = '\0';
39
40 // Write line enquoted, with a newline
41 fprintf(ofp, "\"%s\\n\"\n", buffer);
42 }
43
44 fprintf(ofp, ";\n");
45
46 fclose(ifp);
47 fclose(ofp);
48
49 return 0;
50 }
46894689 trap_Cvar_Set( "cdkey2", "" );
46904690 trap_Cvar_Set( "cdkey3", "" );
46914691 trap_Cvar_Set( "cdkey4", "" );
4692 trap_Cvar_Set( "cdkeychecksum", "" );
4693 if ( buff[0] != 32 && strlen( buff ) == CDKEY_LEN ) {
4692 if ( strlen( buff ) == CDKEY_LEN ) {
46944693 Q_strncpyz( out, buff, 5 );
46954694 trap_Cvar_Set( "cdkey1", out );
46964695 Q_strncpyz( out, buff + 4, 5 );
0 #!/bin/bash
1
2 # Let's make the user give us a target to work with.
3 # architecture is assumed universal if not specified, and is optional.
4 # if arch is defined, it we will store the .app bundle in the target arch build directory
5 if [ $# == 0 ] || [ $# -gt 2 ]; then
6 echo "Usage: $0 target <arch>"
7 echo "Example: $0 release x86"
8 echo "Valid targets are:"
9 echo " release"
10 echo " debug"
11 echo
12 echo "Optional architectures are:"
13 echo " x86"
14 echo " x86_64"
15 echo " ppc"
16 echo
17 exit 1
18 fi
19
20 # validate target name
21 if [ "$1" == "release" ]; then
22 TARGET_NAME="release"
23 elif [ "$1" == "debug" ]; then
24 TARGET_NAME="debug"
25 else
26 echo "Invalid target: $1"
27 echo "Valid targets are:"
28 echo " release"
29 echo " debug"
30 exit 1
31 fi
32
33 CURRENT_ARCH=""
34
35 # validate the architecture if it was specified
36 if [ "$2" != "" ]; then
37 if [ "$2" == "x86" ]; then
38 CURRENT_ARCH="x86"
39 elif [ "$2" == "x86_64" ]; then
40 CURRENT_ARCH="x86_64"
41 elif [ "$2" == "ppc" ]; then
42 CURRENT_ARCH="ppc"
43 else
44 echo "Invalid architecture: $2"
45 echo "Valid architectures are:"
46 echo " x86"
47 echo " x86_64"
48 echo " ppc"
49 echo
50 exit 1
51 fi
52 fi
53
54 # symlinkArch() creates a symlink with the architecture suffix.
55 # meant for universal binaries, but also handles the way this script generates
56 # application bundles for a single architecture as well.
57 function symlinkArch()
58 {
59 EXT="dylib"
60 SEP="${3}"
61 SRCFILE="${1}"
62 DSTFILE="${2}${SEP}"
63 DSTPATH="${4}"
64
65 if [ ! -e "${DSTPATH}/${SRCFILE}.${EXT}" ]; then
66 echo "**** ERROR: missing ${SRCFILE}.${EXT} from ${MACOS}"
67 exit 1
68 fi
69
70 if [ ! -d "${DSTPATH}" ]; then
71 echo "**** ERROR: path not found ${DSTPATH}"
72 exit 1
73 fi
74
75 pushd "${DSTPATH}" > /dev/null
76
77 IS32=`file "${SRCFILE}.${EXT}" | grep "i386"`
78 IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64"`
79 ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc"`
80
81 if [ "${IS32}" != "" ]; then
82 if [ ! -L "${DSTFILE}i386.${EXT}" ]; then
83 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}i386.${EXT}"
84 fi
85 elif [ -L "${DSTFILE}i386.${EXT}" ]; then
86 rm "${DSTFILE}i386.${EXT}"
87 fi
88
89 if [ "${IS64}" != "" ]; then
90 if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then
91 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}"
92 fi
93 elif [ -L "${DSTFILE}x86_64.${EXT}" ]; then
94 rm "${DSTFILE}x86_64.${EXT}"
95 fi
96
97 if [ "${ISPPC}" != "" ]; then
98 if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then
99 ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}"
100 fi
101 elif [ -L "${DSTFILE}ppc.${EXT}" ]; then
102 rm "${DSTFILE}ppc.${EXT}"
103 fi
104
105 popd > /dev/null
106 }
107
108 SEARCH_ARCHS=" \
109 x86 \
110 x86_64 \
111 ppc \
112 "
113
114 HAS_LIPO=`command -v lipo`
115 HAS_CP=`command -v cp`
116
117 # if lipo is not available, we cannot make a universal binary, print a warning
118 if [ ! -x "${HAS_LIPO}" ] && [ "${CURRENT_ARCH}" == "" ]; then
119 CURRENT_ARCH=`uname -m`
120 if [ "${CURRENT_ARCH}" == "i386" ]; then CURRENT_ARCH="x86"; fi
121 echo "$0 cannot make a universal binary, falling back to architecture ${CURRENT_ARCH}"
122 fi
123
124 # if the optional arch parameter is used, replace SEARCH_ARCHS to only work with one
125 if [ "${CURRENT_ARCH}" != "" ]; then
126 SEARCH_ARCHS="${CURRENT_ARCH}"
127 fi
128
129 AVAILABLE_ARCHS=""
130
131 IORTCW_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
132 IORTCW_CLIENT_ARCHS=""
133 IORTCW_RENDERER_GL1_ARCHS=""
134 IORTCW_RENDERER_GL2_ARCHS=""
135 IORTCW_CGAME_ARCHS=""
136 IORTCW_GAME_ARCHS=""
137 IORTCW_UI_ARCHS=""
138
139 BASEDIR="main"
140
141 CGAME="cgame.sp"
142 GAME="qagame.sp"
143 UI="ui.sp"
144
145 RENDERER_OPENGL="renderer_sp_opengl1"
146 RENDERER_OPENGL2="renderer_sp_rend2"
147
148 CGAME_NAME="${CGAME}.dylib"
149 GAME_NAME="${GAME}.dylib"
150 UI_NAME="${UI}.dylib"
151
152 RENDERER_OPENGL1_NAME="renderer_sp_opengl1.dylib"
153 RENDERER_OPENGL2_NAME="renderer_sp_rend2.dylib"
154
155 ICNSDIR="misc"
156 ICNS="iortcw.icns"
157 PKGINFO="APPLIORTCW"
158
159 OBJROOT="build"
160 #BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
161 PRODUCT_NAME="iowolfsp"
162 WRAPPER_EXTENSION="app"
163 WRAPPER_NAME="${PRODUCT_NAME}.${WRAPPER_EXTENSION}"
164 CONTENTS_FOLDER_PATH="${WRAPPER_NAME}/Contents"
165 UNLOCALIZED_RESOURCES_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/Resources"
166 EXECUTABLE_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/MacOS"
167 EXECUTABLE_NAME="${PRODUCT_NAME}"
168
169 # loop through the architectures to build string lists for each universal binary
170 for ARCH in $SEARCH_ARCHS; do
171 CURRENT_ARCH=${ARCH}
172
173 if [ ${CURRENT_ARCH} == "x86" ]; then FILE_ARCH="i386"; fi
174 if [ ${CURRENT_ARCH} == "x86_64" ]; then FILE_ARCH="x86_64"; fi
175 if [ ${CURRENT_ARCH} == "ppc" ]; then FILE_ARCH="ppc"; fi
176
177 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
178 IORTCW_CLIENT="${EXECUTABLE_NAME}.${CURRENT_ARCH}"
179 IORTCW_RENDERER_GL1="${RENDERER_OPENGL}_${FILE_ARCH}.dylib"
180 IORTCW_RENDERER_GL2="${RENDERER_OPENGL2}_${FILE_ARCH}.dylib"
181 IORTCW_CGAME="${CGAME}.${FILE_ARCH}.dylib"
182 IORTCW_GAME="${GAME}.${FILE_ARCH}.dylib"
183 IORTCW_UI="${UI}.${FILE_ARCH}.dylib"
184
185 if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then
186 CURRENT_ARCH=""
187 BUILT_PRODUCTS_DIR=""
188 continue
189 fi
190
191 # executables
192 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_CLIENT} ]; then
193 IORTCW_CLIENT_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_CLIENT} ${IORTCW_CLIENT_ARCHS}"
194 VALID_ARCHS="${ARCH} ${VALID_ARCHS}"
195 else
196 continue
197 fi
198
199 # renderers
200 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL1} ]; then
201 IORTCW_RENDERER_GL1_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL1} ${IORTCW_RENDERER_GL1_ARCHS}"
202 fi
203 if [ -e ${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL2} ]; then
204 IORTCW_RENDERER_GL2_ARCHS="${BUILT_PRODUCTS_DIR}/${IORTCW_RENDERER_GL2} ${IORTCW_RENDERER_GL2_ARCHS}"
205 fi
206
207 # game
208 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_CGAME} ]; then
209 IORTCW_CGAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_CGAME} ${IORTCW_CGAME_ARCHS}"
210 fi
211 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_GAME} ]; then
212 IORTCW_GAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_GAME} ${IORTCW_GAME_ARCHS}"
213 fi
214 if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_UI} ]; then
215 IORTCW_UI_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IORTCW_UI} ${IORTCW_UI_ARCHS}"
216 fi
217
218 #echo "valid arch: ${ARCH}"
219 done
220
221 # final preparations and checks before attempting to make the application bundle
222 cd `dirname $0`
223
224 if [ ! -f Makefile ]; then
225 echo "$0 must be run from the iortcw build directory"
226 exit 1
227 fi
228
229 if [ "${IORTCW_CLIENT_ARCHS}" == "" ]; then
230 echo "$0: no iortcw binary architectures were found for target '${TARGET_NAME}'"
231 exit 1
232 fi
233
234 # set the final application bundle output directory
235 if [ "${2}" == "" ]; then
236 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-universal"
237 if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then
238 mkdir -p ${BUILT_PRODUCTS_DIR} || exit 1;
239 fi
240 else
241 BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}"
242 fi
243
244 BUNDLEBINDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}"
245
246
247 # here we go
248 echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'"
249 echo "with architectures:"
250 for ARCH in ${VALID_ARCHS}; do
251 echo " ${ARCH}"
252 done
253 echo ""
254
255 # make the application bundle directories
256 if [ ! -d "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR" ]; then
257 mkdir -p "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR" || exit 1;
258 fi
259 if [ ! -d "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" ]; then
260 mkdir -p "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" || exit 1;
261 fi
262
263 # copy and generate some application bundle resources
264 cp code/libs/macosx/*.dylib "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}"
265 cp ${ICNSDIR}/${ICNS} "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/$ICNS" || exit 1;
266 echo -n ${PKGINFO} > "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/PkgInfo" || exit 1;
267
268 # create Info.Plist
269 PLIST="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
270 <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
271 <plist version=\"1.0\">
272 <dict>
273 <key>CFBundleDevelopmentRegion</key>
274 <string>en</string>
275 <key>CFBundleExecutable</key>
276 <string>${EXECUTABLE_NAME}</string>
277 <key>CFBundleIconFile</key>
278 <string>iortcw</string>
279 <key>CFBundleIdentifier</key>
280 <string>org.iortcw.${PRODUCT_NAME}</string>
281 <key>CFBundleInfoDictionaryVersion</key>
282 <string>6.0</string>
283 <key>CFBundleName</key>
284 <string>${PRODUCT_NAME}</string>
285 <key>CFBundlePackageType</key>
286 <string>APPL</string>
287 <key>CFBundleShortVersionString</key>
288 <string>${IORTCW_VERSION}</string>
289 <key>CFBundleSignature</key>
290 <string>????</string>
291 <key>CFBundleVersion</key>
292 <string>${IORTCW_VERSION}</string>
293 <key>CGDisableCoalescedUpdates</key>
294 <true/>
295 <key>LSMinimumSystemVersion</key>
296 <string>${MACOSX_DEPLOYMENT_TARGET}</string>"
297
298 if [ -n "${MACOSX_DEPLOYMENT_TARGET_PPC}" ] || [ -n "${MACOSX_DEPLOYMENT_TARGET_X86}" ] || [ -n "${MACOSX_DEPLOYMENT_TARGET_X86_64}" ]; then
299 PLIST="${PLIST}
300 <key>LSMinimumSystemVersionByArchitecture</key>
301 <dict>"
302
303 if [ -n "${MACOSX_DEPLOYMENT_TARGET_PPC}" ]; then
304 PLIST="${PLIST}
305 <key>ppc</key>
306 <string>${MACOSX_DEPLOYMENT_TARGET_PPC}</string>"
307 fi
308
309 if [ -n "${MACOSX_DEPLOYMENT_TARGET_X86}" ]; then
310 PLIST="${PLIST}
311 <key>i386</key>
312 <string>${MACOSX_DEPLOYMENT_TARGET_X86}</string>"
313 fi
314
315 if [ -n "${MACOSX_DEPLOYMENT_TARGET_X86_64}" ]; then
316 PLIST="${PLIST}
317 <key>x86_64</key>
318 <string>${MACOSX_DEPLOYMENT_TARGET_X86_64}</string>"
319 fi
320
321 PLIST="${PLIST}
322 </dict>"
323 fi
324
325 PLIST="${PLIST}
326 <key>NSHumanReadableCopyright</key>
327 <string>Return to Castle Wolfenstein single player Copyright (C) 1999-2010 id Software LLC, a ZeniMax Media company.</string>
328 <key>NSPrincipalClass</key>
329 <string>NSApplication</string>
330 <key>NSHighResolutionCapable</key>
331 <false/>
332 </dict>
333 </plist>
334 "
335 echo -e "${PLIST}" > "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Info.plist"
336
337 # action takes care of generating universal binaries if lipo is available
338 # otherwise, it falls back to using a simple copy, expecting the first item in
339 # the second parameter list to be the desired architecture
340 function action()
341 {
342 COMMAND=""
343
344 if [ -x "${HAS_LIPO}" ]; then
345 COMMAND="${HAS_LIPO} -create -o"
346 $HAS_LIPO -create -o "${1}" ${2} # make sure $2 is treated as a list of files
347 elif [ -x ${HAS_CP} ]; then
348 COMMAND="${HAS_CP}"
349 SRC="${2// */}" # in case there is a list here, use only the first item
350 $HAS_CP "${SRC}" "${1}"
351 else
352 "$0 cannot create an application bundle."
353 exit 1
354 fi
355
356 #echo "${COMMAND}" "${1}" "${2}"
357 }
358
359 #
360 # the meat of universal binary creation
361 # destination file names do not have architecture suffix.
362 # action will handle merging universal binaries if supported.
363 # symlink appropriate architecture names for universal (fat) binary support.
364 #
365
366 # executables
367 action "${BUNDLEBINDIR}/${EXECUTABLE_NAME}" "${IORTCW_CLIENT_ARCHS}"
368
369 # renderers
370 action "${BUNDLEBINDIR}/${RENDERER_OPENGL1_NAME}" "${IORTCW_RENDERER_GL1_ARCHS}"
371 action "${BUNDLEBINDIR}/${RENDERER_OPENGL2_NAME}" "${IORTCW_RENDERER_GL2_ARCHS}"
372 symlinkArch "${RENDERER_OPENGL}" "${RENDERER_OPENGL}" "_" "${BUNDLEBINDIR}"
373 symlinkArch "${RENDERER_OPENGL2}" "${RENDERER_OPENGL2}" "_" "${BUNDLEBINDIR}"
374
375 # game
376 action "${BUNDLEBINDIR}/${BASEDIR}/${CGAME_NAME}" "${IORTCW_CGAME_ARCHS}"
377 action "${BUNDLEBINDIR}/${BASEDIR}/${GAME_NAME}" "${IORTCW_GAME_ARCHS}"
378 action "${BUNDLEBINDIR}/${BASEDIR}/${UI_NAME}" "${IORTCW_UI_ARCHS}"
379 symlinkArch "${CGAME}" "${CGAME}." "" "${BUNDLEBINDIR}/${BASEDIR}"
380 symlinkArch "${GAME}" "${GAME}." "" "${BUNDLEBINDIR}/${BASEDIR}"
381 symlinkArch "${UI}" "${UI}." "" "${BUNDLEBINDIR}/${BASEDIR}"
382
0 #!/bin/sh
0 #!/bin/bash
11 CC=gcc-4.0
2 APPBUNDLE=iowolfsp.app
3 BINARY=iowolfsp.ub
4 PKGINFO=APPLIORTCW
5 ICNS=misc/iortcw.icns
6 DESTDIR=build/release-darwin-ub
7 BASEDIR=main
8
9 BIN_OBJ="
10 build/release-darwin-x86_64/iowolfsp.x86_64
11 build/release-darwin-x86/iowolfsp.x86
12 build/release-darwin-ppc/iowolfsp.ppc
13 "
14 BASE_OBJ="
15 build/release-darwin-x86_64/$BASEDIR/cgame.sp.x86_64.dylib
16 build/release-darwin-x86/$BASEDIR/cgame.sp.i386.dylib
17 build/release-darwin-ppc/$BASEDIR/cgame.sp.ppc.dylib
18 build/release-darwin-x86_64/$BASEDIR/ui.sp.x86_64.dylib
19 build/release-darwin-x86/$BASEDIR/ui.sp.i386.dylib
20 build/release-darwin-ppc/$BASEDIR/ui.sp.ppc.dylib
21 build/release-darwin-x86_64/$BASEDIR/qagame.sp.x86_64.dylib
22 build/release-darwin-x86/$BASEDIR/qagame.sp.i386.dylib
23 build/release-darwin-ppc/$BASEDIR/qagame.sp.ppc.dylib
24 "
25 RENDER_OBJ="
26 build/release-darwin-x86_64/renderer_sp_opengl1_x86_64.dylib
27 build/release-darwin-x86/renderer_sp_opengl1_i386.dylib
28 build/release-darwin-ppc/renderer_sp_opengl1_ppc.dylib
29 build/release-darwin-x86_64/renderer_sp_rend2_x86_64.dylib
30 build/release-darwin-x86/renderer_sp_rend2_i386.dylib
31 build/release-darwin-ppc/renderer_sp_rend2_ppc.dylib
32 "
332
343 cd `dirname $0`
354 if [ ! -f Makefile ]; then
36 echo "This script must be run from the iowolfsp build directory"
5 echo "This script must be run from the iortcw build directory"
376 exit 1
387 fi
398
40 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
41
42 # we want to use the oldest available SDK for max compatiblity. However 10.4 and older
9 # we want to use the oldest available SDK for max compatibility. However 10.4 and older
4310 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
4411 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
45 # enough gcc to actually compile iowolfsp
46 # For PPC macs, G4's or better are required to run iowolfsp.
12 # enough gcc to actually compile iortcw
13 # For PPC macs, G4's or better are required to run iortcw.
4714
4815 unset X86_64_SDK
4916 unset X86_64_CFLAGS
17 unset X86_64_MACOSX_VERSION_MIN
5018 unset X86_SDK
5119 unset X86_CFLAGS
20 unset X86_MACOSX_VERSION_MIN
5221 unset PPC_SDK
5322 unset PPC_CFLAGS
23 unset PPC_MACOSX_VERSION_MIN
5424
5525 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
26 X86_64_SDK=/Developer/SDKs/MacOSX10.5.sdk
27 X86_64_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
28 X86_64_MACOSX_VERSION_MIN="10.5"
29
30 X86_SDK=/Developer/SDKs/MacOSX10.5.sdk
31 X86_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
32 X86_MACOSX_VERSION_MIN="10.5"
33
5634 PPC_SDK=/Developer/SDKs/MacOSX10.5.sdk
57 PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk"
35 PPC_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
36 PPC_MACOSX_VERSION_MIN="10.5"
5837 fi
5938
39 # SDL 2.0.5+ (x86, x86_64) only supports MacOSX 10.6 and later
6040 if [ -d /Developer/SDKs/MacOSX10.6.sdk ]; then
6141 X86_64_SDK=/Developer/SDKs/MacOSX10.6.sdk
62 X86_64_CFLAGS="-arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
42 X86_64_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
43 X86_64_MACOSX_VERSION_MIN="10.6"
6344
6445 X86_SDK=/Developer/SDKs/MacOSX10.6.sdk
65 X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
46 X86_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
47 X86_MACOSX_VERSION_MIN="10.6"
48 else
49 # Don't try to compile with 10.5 version min
50 X86_64_SDK=
51 X86_SDK=
6652 fi
53 # end SDL 2.0.5
6754
6855 if [ -z $X86_64_SDK ] || [ -z $X86_SDK ] || [ -z $PPC_SDK ]; then
69 echo "\
56 echo "\
7057 ERROR: This script is for building a Universal Binary. You cannot build
7158 for a different architecture unless you have the proper Mac OS X SDKs
7259 installed. If you just want to to compile for your own system run
7562 In order to build a binary with maximum compatibility you must
7663 build on Mac OS X 10.6 and have the MacOSX10.5 and MacOSX10.6
7764 SDKs installed from the Xcode install disk Packages folder."
78 exit 1
65
66 exit 1
7967 fi
8068
81 echo "Building X86_64 Client against \"$X86_64_SDK\""
82 echo "Building X86 Client against \"$X86_SDK\""
83 echo "Building PPC Client against \"$PPC_SDK\""
69 echo "Building X86_64 Client/Dedicated Server against \"$X86_64_SDK\""
70 echo "Building X86 Client/Dedicated Server against \"$X86_SDK\""
71 echo "Building PPC Client/Dedicated Server against \"$PPC_SDK\""
8472 echo
85
86 if [ ! -d $DESTDIR ]; then
87 mkdir -p $DESTDIR
88 fi
8973
9074 # For parallel make on multicore boxes...
9175 NCPU=`sysctl -n hw.ncpu`
9276
93 # x86_64 client
94 if [ -d build/release-release-x86_64 ]; then
95 rm -r build/release-darwin-x86_64
96 fi
97 (ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS make -j$NCPU) || exit 1;
77 # x86_64 client and server
78 #if [ -d build/release-release-x86_64 ]; then
79 # rm -r build/release-darwin-x86_64
80 #fi
81 (ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS MACOSX_VERSION_MIN=$X86_64_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
9882
9983 echo;echo
10084
101 # x86 client
102 if [ -d build/release-darwin-x86 ]; then
103 rm -r build/release-darwin-x86
104 fi
105 (ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS make -j$NCPU) || exit 1;
85 # x86 client and server
86 #if [ -d build/release-darwin-x86 ]; then
87 # rm -r build/release-darwin-x86
88 #fi
89 (ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS MACOSX_VERSION_MIN=$X86_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
10690
10791 echo;echo
10892
109 # PPC client
110 if [ -d build/release-darwin-ppc ]; then
111 rm -r build/release-darwin-ppc
112 fi
113 (ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS make -j$NCPU) || exit 1;
93 # PPC client and server
94 #if [ -d build/release-darwin-ppc ]; then
95 # rm -r build/release-darwin-ppc
96 #fi
97 (ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS MACOSX_VERSION_MIN=$PPC_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
11498
115 echo;echo
99 echo
116100
117 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
118 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
119 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
120 fi
121 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
122 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
123 fi
124 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
125 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
126 echo "
127 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
128 <!DOCTYPE plist
129 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
130 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
131 <plist version=\"1.0\">
132 <dict>
133 <key>LSMinimumSystemVersion</key>
134 <string>10.5.0</string>
135 <key>LSMinimumSystemVersionByArchitecture</key>
136 <dict>
137 <key>i386</key>
138 <string>10.6.0</string>
139 <key>x86_64</key>
140 <string>10.6.0</string>
141 </dict>
142 <key>CFBundleDevelopmentRegion</key>
143 <string>English</string>
144 <key>CFBundleExecutable</key>
145 <string>$BINARY</string>
146 <key>CFBundleGetInfoString</key>
147 <string>iowolfsp $Q3_VERSION</string>
148 <key>CFBundleIconFile</key>
149 <string>iortcw.icns</string>
150 <key>CFBundleIdentifier</key>
151 <string>org.iortcw</string>
152 <key>CFBundleInfoDictionaryVersion</key>
153 <string>6.0</string>
154 <key>CFBundleName</key>
155 <string>iowolfsp</string>
156 <key>CFBundlePackageType</key>
157 <string>APPL</string>
158 <key>CFBundleShortVersionString</key>
159 <string>$Q3_VERSION</string>
160 <key>CFBundleSignature</key>
161 <string>$PKGINFO</string>
162 <key>CFBundleVersion</key>
163 <string>$Q3_VERSION</string>
164 <key>NSExtensions</key>
165 <dict/>
166 <key>NSPrincipalClass</key>
167 <string>NSApplication</string>
168 </dict>
169 </plist>
170 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
171
172
173 # Make UB's from previous builds of x86, x86_64 and ppc binaries
174 lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
175
176 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
177 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
178 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
179
101 # use the following shell script to build a universal application bundle
102 export MACOSX_DEPLOYMENT_TARGET="10.5"
103 export MACOSX_DEPLOYMENT_TARGET_PPC="$PPC_MACOSX_VERSION_MIN"
104 export MACOSX_DEPLOYMENT_TARGET_X86="$X86_MACOSX_VERSION_MIN"
105 export MACOSX_DEPLOYMENT_TARGET_X86_64="$X86_64_MACOSX_VERSION_MIN"
106 "./make-macosx-app.sh" release
0 #!/bin/bash
1 #
2
3 # Let's make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "other valid options are x86_64 or ppc"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 elif [ "$1" == "x86_64" ]; then
17 BUILDARCH=x86_64
18 elif [ "$1" == "ppc" ]; then
19 BUILDARCH=ppc
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64 or ppc"
23 exit 1
24 fi
25
26 CC=gcc-4.0
27 DESTDIR=build/release-darwin-${BUILDARCH}
28
29 cd `dirname $0`
30 if [ ! -f Makefile ]; then
31 echo "This script must be run from the iortcw build directory"
32 exit 1
33 fi
34
35 # we want to use the oldest available SDK for max compatibility. However 10.4 and older
36 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
37 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
38 # enough gcc to actually compile iortcw
39 # For PPC macs, G4's or better are required to run iortcw.
40
41 unset ARCH_SDK
42 unset ARCH_CFLAGS
43 unset ARCH_MACOSX_VERSION_MIN
44
45 MACOS_VERSION=$(sw_vers -productVersion)
46 MACOS_MAJOR_VER=$(echo $MACOS_VERSION | awk -F. '{print $1}')
47 MACOS_MINOR_VER=$(echo $MACOS_VERSION | awk -F. '{print $2}')
48
49 # SDL 2.0.1 (ppc) supports MacOSX 10.5
50 # SDL 2.0.5+ (x86, x86_64) supports MacOSX 10.6 and later
51 if [ $BUILDARCH = "ppc" ]; then
52 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
53 ARCH_SDK=/Developer/SDKs/MacOSX10.5.sdk
54 ARCH_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
55 fi
56 ARCH_MACOSX_VERSION_MIN="10.5"
57 elif [ -d /Developer/SDKs/MacOSX10.6.sdk ]; then
58 ARCH_SDK=/Developer/SDKs/MacOSX10.6.sdk
59 ARCH_CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk"
60 ARCH_MACOSX_VERSION_MIN="10.6"
61 elif [ $MACOS_MAJOR_VER == 10 ] && [ $MACOS_MINOR_VER >= 9 ] || [ $MACOS_MAJOR_VER > 10 ]; then
62 ARCH_MACOSX_VERSION_MIN="10.9"
63 else
64 ARCH_MACOSX_VERSION_MIN="10.7"
65 fi
66
67
68 echo "Building ${BUILDARCH} Client/Dedicated Server against \"$ARCH_SDK\""
69 sleep 3
70
71 if [ ! -d $DESTDIR ]; then
72 mkdir -p $DESTDIR
73 fi
74
75 # For parallel make on multicore boxes...
76 NCPU=`sysctl -n hw.ncpu`
77
78
79 # intel client and server
80 #if [ -d build/release-darwin-${BUILDARCH} ]; then
81 # rm -r build/release-darwin-${BUILDARCH}
82 #fi
83 (ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS MACOSX_VERSION_MIN=$ARCH_MACOSX_VERSION_MIN make -j$NCPU) || exit 1;
84
85 # use the following shell script to build an application bundle
86 export MACOSX_DEPLOYMENT_TARGET="${ARCH_MACOSX_VERSION_MIN}"
87 export MACOSX_DEPLOYMENT_TARGET_PPC=
88 export MACOSX_DEPLOYMENT_TARGET_X86=
89 export MACOSX_DEPLOYMENT_TARGET_X86_64=
90 "./make-macosx-app.sh" release ${BUILDARCH}
+0
-147
SP/make-macosx_xcode3.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "other valid options are x86_64 or ppc"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 elif [ "$1" == "ppc" ]; then
21 BUILDARCH=ppc
22 ARCH=ppc
23 else
24 echo "Invalid architecture: $1"
25 echo "Valid architectures are x86, x86_64 or ppc"
26 exit 1
27 fi
28
29 CC=gcc-4.0
30 CXX=g++-4.0
31 APPBUNDLE=iowolfsp.app
32 BINARY=iowolfsp.${ARCH}
33 PKGINFO=APPLIOTCW
34 ICNS=misc/iortcw.icns
35 DESTDIR=build/release-darwin-${BUILDARCH}
36 BASEDIR=main
37
38 BIN_OBJ="
39 build/release-darwin-${BUILDARCH}/iowolfsp.${BUILDARCH}
40 "
41 BASE_OBJ="
42 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.sp.${ARCH}.dylib
43 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.sp.${ARCH}.dylib
44 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.sp.${ARCH}.dylib
45 "
46 RENDER_OBJ="
47 build/release-darwin-${BUILDARCH}/renderer_sp_opengl1_${ARCH}.dylib
48 build/release-darwin-${BUILDARCH}/renderer_sp_rend2_${ARCH}.dylib
49 "
50
51 cd `dirname $0`
52 if [ ! -f Makefile ]; then
53 echo "This script must be run from the iowolfsp build directory"
54 exit 1
55 fi
56
57 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
58
59 # We only care if we're >= 10.4, not if we're specifically Tiger.
60 # "8" is the Darwin major kernel version.
61 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
62
63 # we want to use the oldest available SDK for max compatiblity. However 10.4 and older
64 # can not build 64bit binaries, making 10.5 the minimum version. This has been tested
65 # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent
66 # enough gcc to actually compile iowolfsp
67 # For PPC macs, G4's or better are required to run iowolfsp.
68
69 unset ARCH_SDK
70 unset ARCH_CFLAGS
71
72 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
73 ARCH_SDK=/Developer/SDKs/MacOSX10.5.sdk
74 ARCH_CFLAGS="-arch ${ARCH} -isysroot /Developer/SDKs/MacOSX10.5.sdk"
75 fi
76
77
78 echo "Building ${BUILDARCH} Client/Dedicated Server against \"$ARCH_SDK\""
79 sleep 3
80
81 if [ ! -d $DESTDIR ]; then
82 mkdir -p $DESTDIR
83 fi
84
85 # For parallel make on multicore boxes...
86 NCPU=`sysctl -n hw.ncpu`
87
88
89 # intel client and server
90 if [ -d build/release-darwin-${BUILDARCH} ]; then
91 rm -r build/release-darwin-${BUILDARCH}
92 fi
93 (CC=${CC} CXX=${CXX} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
94
95 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
96 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
97 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
98 fi
99 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
100 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
101 fi
102 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
103 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
104 echo "
105 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
106 <!DOCTYPE plist
107 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
108 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
109 <plist version=\"1.0\">
110 <dict>
111 <key>CFBundleDevelopmentRegion</key>
112 <string>English</string>
113 <key>CFBundleExecutable</key>
114 <string>$BINARY</string>
115 <key>CFBundleGetInfoString</key>
116 <string>iowolfsp $Q3_VERSION</string>
117 <key>CFBundleIconFile</key>
118 <string>iortcw.icns</string>
119 <key>CFBundleIdentifier</key>
120 <string>org.ioquake.iortcw</string>
121 <key>CFBundleInfoDictionaryVersion</key>
122 <string>6.0</string>
123 <key>CFBundleName</key>
124 <string>iowolfsp</string>
125 <key>CFBundlePackageType</key>
126 <string>APPL</string>
127 <key>CFBundleShortVersionString</key>
128 <string>$Q3_VERSION</string>
129 <key>CFBundleSignature</key>
130 <string>$PKGINFO</string>
131 <key>CFBundleVersion</key>
132 <string>$Q3_VERSION</string>
133 <key>NSExtensions</key>
134 <dict/>
135 <key>NSPrincipalClass</key>
136 <string>NSApplication</string>
137 </dict>
138 </plist>
139 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
140
141
142 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
143 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
144 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
145 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
146 cp code/libs/macosx/*.dylib $DESTDIR
+0
-130
SP/make-macosx_xcode4.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "The other valid option is x86_64"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64"
23 exit 1
24 fi
25
26 CC=gcc
27 CXX=g++
28 APPBUNDLE=iowolfsp.app
29 BINARY=iowolfsp.${ARCH}
30 PKGINFO=APPLIOTCW
31 ICNS=misc/iortcw.icns
32 DESTDIR=build/release-darwin-${BUILDARCH}
33 BASEDIR=main
34
35 BIN_OBJ="
36 build/release-darwin-${BUILDARCH}/iowolfsp.${BUILDARCH}
37 "
38 BASE_OBJ="
39 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.sp.${ARCH}.dylib
40 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.sp.${ARCH}.dylib
41 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.sp.${ARCH}.dylib
42 "
43 RENDER_OBJ="
44 build/release-darwin-${BUILDARCH}/renderer_sp_opengl1_${ARCH}.dylib
45 build/release-darwin-${BUILDARCH}/renderer_sp_rend2_${ARCH}.dylib
46 "
47
48 cd `dirname $0`
49 if [ ! -f Makefile ]; then
50 echo "This script must be run from the iowolfsp build directory"
51 exit 1
52 fi
53
54 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
55
56 # We only care if we're >= 10.4, not if we're specifically Tiger.
57 # "8" is the Darwin major kernel version.
58 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
59
60 unset ARCH_CFLAGS
61
62 ARCH_CFLAGS="-arch ${ARCH}"
63
64 if [ ! -d $DESTDIR ]; then
65 mkdir -p $DESTDIR
66 fi
67
68 # For parallel make on multicore boxes...
69 NCPU=`sysctl -n hw.ncpu`
70
71
72 # intel client and server
73 if [ -d build/release-darwin-${BUILDARCH} ]; then
74 rm -r build/release-darwin-${BUILDARCH}
75 fi
76 (CC=${CC} CXX=${CXX} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
77
78 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
79 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
80 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
81 fi
82 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
83 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
84 fi
85 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
86 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
87 echo "
88 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
89 <!DOCTYPE plist
90 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
91 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
92 <plist version=\"1.0\">
93 <dict>
94 <key>CFBundleDevelopmentRegion</key>
95 <string>English</string>
96 <key>CFBundleExecutable</key>
97 <string>$BINARY</string>
98 <key>CFBundleGetInfoString</key>
99 <string>iowolfsp $Q3_VERSION</string>
100 <key>CFBundleIconFile</key>
101 <string>iortcw.icns</string>
102 <key>CFBundleIdentifier</key>
103 <string>org.ioquake.iortcw</string>
104 <key>CFBundleInfoDictionaryVersion</key>
105 <string>6.0</string>
106 <key>CFBundleName</key>
107 <string>iowolfsp</string>
108 <key>CFBundlePackageType</key>
109 <string>APPL</string>
110 <key>CFBundleShortVersionString</key>
111 <string>$Q3_VERSION</string>
112 <key>CFBundleSignature</key>
113 <string>$PKGINFO</string>
114 <key>CFBundleVersion</key>
115 <string>$Q3_VERSION</string>
116 <key>NSExtensions</key>
117 <dict/>
118 <key>NSPrincipalClass</key>
119 <string>NSApplication</string>
120 </dict>
121 </plist>
122 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
123
124
125 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
126 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
127 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
128 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
129 cp code/libs/macosx/*.dylib $DESTDIR
+0
-130
SP/make-macosx_xcode5.sh less more
0 #!/bin/sh
1 #
2
3 # Lets make the user give us a target build system
4
5 if [ $# -ne 1 ]; then
6 echo "Usage: $0 target_architecture"
7 echo "Example: $0 x86"
8 echo "The other valid option is x86_64"
9 echo
10 echo "If you don't know or care about architectures please consider using make-macosx-ub.sh instead of this script."
11 exit 1
12 fi
13
14 if [ "$1" == "x86" ]; then
15 BUILDARCH=x86
16 ARCH=i386
17 elif [ "$1" == "x86_64" ]; then
18 BUILDARCH=x86_64
19 ARCH=x86_64
20 else
21 echo "Invalid architecture: $1"
22 echo "Valid architectures are x86, x86_64"
23 exit 1
24 fi
25
26 CC=clang
27 CXX=clang++
28 APPBUNDLE=iowolfsp.app
29 BINARY=iowolfsp.${ARCH}
30 PKGINFO=APPLIOTCW
31 ICNS=misc/iortcw.icns
32 DESTDIR=build/release-darwin-${BUILDARCH}
33 BASEDIR=main
34
35 BIN_OBJ="
36 build/release-darwin-${BUILDARCH}/iowolfsp.${BUILDARCH}
37 "
38 BASE_OBJ="
39 build/release-darwin-${BUILDARCH}/$BASEDIR/cgame.sp.${ARCH}.dylib
40 build/release-darwin-${BUILDARCH}/$BASEDIR/ui.sp.${ARCH}.dylib
41 build/release-darwin-${BUILDARCH}/$BASEDIR/qagame.sp.${ARCH}.dylib
42 "
43 RENDER_OBJ="
44 build/release-darwin-${BUILDARCH}/renderer_sp_opengl1_${ARCH}.dylib
45 build/release-darwin-${BUILDARCH}/renderer_sp_rend2_${ARCH}.dylib
46 "
47
48 cd `dirname $0`
49 if [ ! -f Makefile ]; then
50 echo "This script must be run from the iowolfsp build directory"
51 exit 1
52 fi
53
54 Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
55
56 # We only care if we're >= 10.4, not if we're specifically Tiger.
57 # "8" is the Darwin major kernel version.
58 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
59
60 unset ARCH_CFLAGS
61
62 ARCH_CFLAGS="-arch ${ARCH}"
63
64 if [ ! -d $DESTDIR ]; then
65 mkdir -p $DESTDIR
66 fi
67
68 # For parallel make on multicore boxes...
69 NCPU=`sysctl -n hw.ncpu`
70
71
72 # intel client and server
73 if [ -d build/release-darwin-${BUILDARCH} ]; then
74 rm -r build/release-darwin-${BUILDARCH}
75 fi
76 (CC=${CC} CXX=${CXX} ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS make -j$NCPU) || exit 1;
77
78 echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
79 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
80 mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
81 fi
82 if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
83 mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
84 fi
85 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
86 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
87 echo "
88 <?xml version=\"1.0\" encoding=\"UTF-8\"?>
89 <!DOCTYPE plist
90 PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
91 \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
92 <plist version=\"1.0\">
93 <dict>
94 <key>CFBundleDevelopmentRegion</key>
95 <string>English</string>
96 <key>CFBundleExecutable</key>
97 <string>$BINARY</string>
98 <key>CFBundleGetInfoString</key>
99 <string>iowolfsp $Q3_VERSION</string>
100 <key>CFBundleIconFile</key>
101 <string>iortcw.icns</string>
102 <key>CFBundleIdentifier</key>
103 <string>org.ioquake.iortcw</string>
104 <key>CFBundleInfoDictionaryVersion</key>
105 <string>6.0</string>
106 <key>CFBundleName</key>
107 <string>iowolfsp</string>
108 <key>CFBundlePackageType</key>
109 <string>APPL</string>
110 <key>CFBundleShortVersionString</key>
111 <string>$Q3_VERSION</string>
112 <key>CFBundleSignature</key>
113 <string>$PKGINFO</string>
114 <key>CFBundleVersion</key>
115 <string>$Q3_VERSION</string>
116 <key>NSExtensions</key>
117 <dict/>
118 <key>NSPrincipalClass</key>
119 <string>NSApplication</string>
120 </dict>
121 </plist>
122 " > $DESTDIR/$APPBUNDLE/Contents/Info.plist
123
124
125 cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
126 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
127 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
128 cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
129 cp code/libs/macosx/*.dylib $DESTDIR
0 //models/players/zombie/sk_bod1
1 //{
2 // picmip2
3 // {
4 // map models/players/zombie/sk_bod1.tga
5 // rgbGen lightingdiffuse
6 // }
7 //}
8 ////bj/////
9 models/players/Bj/bj_body1
10 {
11 picmip2
12 {
13 map models/players/Bj/bj_body1.tga
14 rgbGen lightingDiffuse
15 }
16 }
17
18 models/players/Bj/bj_head1
19 {
20 picmip2
21 {
22 map models/players/Bj/bj_head1.tga
23 rgbGen lightingDiffuse
24 }
25 }
26
27 models/players/Bj/bj_head1_blink
28 {
29 picmip2
30 {
31 map models/players/Bj/bj_head1_blink.tga
32 rgbGen lightingDiffuse
33 }
34 }
35
36 models/players/Bj/bj_legs1
37 {
38 picmip2
39 {
40 map models/players/Bj/bj_legs1.tga
41 rgbGen lightingDiffuse
42 }
43 }
44
45 models/players/Bj/acc/bj_eq1
46 {
47 picmip2
48 {
49 map models/players/Bj/acc/bj_eq1.tga
50 rgbGen lightingDiffuse
51 }
52 }
53 ////blackguard////
54
55
56 models/players/blackguard/acc/bg_bp
57 {
58 picmip2
59 {
60 map models/players/blackguard/acc/bg_bp.tga
61 rgbGen lightingDiffuse
62 }
63 }
64 models/players/blackguard/acc/bg_glass
65 {
66 picmip2
67 sort 5
68 {
69 map models/players/blackguard/acc/bg_glass.tga
70 blendfunc blend
71 rgbGen lightingDiffuse
72 }
73 }
74 models/players/blackguard/acc/bg_helmut1
75 {
76 picmip2
77 {
78 map models/players/blackguard/acc/bg_helmut1.tga
79 rgbGen lightingDiffuse
80 }
81 }
82 models/players/blackguard/acc/bg_helmutcam
83 {
84 picmip2
85 {
86 map models/players/blackguard/acc/bg_helmutcam.tga
87 rgbGen lightingDiffuse
88 }
89 }
90 models/players/blackguard/acc/bg_helmutswf1
91 {
92 picmip2
93 {
94 map models/players/blackguard/acc/bg_helmutswf1.tga
95 rgbGen lightingDiffuse
96 }
97 }
98 models/players/blackguard/acc/cap
99 {
100 picmip2
101 {
102 map models/players/blackguard/acc/cap.tga
103 rgbGen lightingDiffuse
104 }
105 }
106 models/players/blackguard/acc/capswf
107 {
108 picmip2
109 {
110 map models/players/blackguard/acc/capswf.tga
111 rgbGen lightingDiffuse
112 }
113 }
114 models/players/blackguard/acc/snow_bp1
115 {
116 picmip2
117 {
118 map models/players/blackguard/acc/snow_bp1.tga
119 rgbGen lightingDiffuse
120 }
121 }
122 models/players/blackguard/acc/snow_glass1
123 {
124 picmip2
125 sort 5
126 {
127 map models/players/blackguard/acc/snow_glass1.tga
128 blendfunc blend
129 rgbGen lightingDiffuse
130 }
131 }
132 models/players/blackguard/acc/snow_helmut1
133 {
134 picmip2
135 {
136 map models/players/blackguard/acc/snow_helmut1.tga
137 rgbGen lightingDiffuse
138 }
139 }
140
141 models/players/blackguard/bg_body1
142 {
143 picmip2
144 {
145 map models/players/blackguard/bg_body1.tga
146 rgbGen lightingDiffuse
147 }
148 }
149
150 models/players/blackguard/bg_body2
151 {
152 picmip2
153 {
154 map models/players/blackguard/bg_body2.tga
155 rgbGen lightingDiffuse
156 }
157 }
158 models/players/blackguard/bg_bodycam1
159 {
160 picmip2
161 {
162 map models/players/blackguard/bg_bodycam1.tga
163 rgbGen lightingDiffuse
164 }
165 }
166 models/players/blackguard/bg_bodycas1
167 {
168 picmip2
169 {
170 map models/players/blackguard/bg_bodycas1.tga
171 rgbGen lightingDiffuse
172 }
173 }
174 models/players/blackguard/bg_bodyswf1
175 {
176 picmip2
177 {
178 map models/players/blackguard/bg_bodyswf1.tga
179 rgbGen lightingDiffuse
180 }
181 }
182
183
184 models/players/blackguard/bg_boot1
185 {
186 picmip2
187 {
188 map models/players/blackguard/bg_boot1.tga
189 rgbGen lightingDiffuse
190 }
191 }
192 models/players/blackguard/bg_bootcam
193 {
194 picmip2
195 {
196 map models/players/blackguard/bg_bootcam.tga
197 rgbGen lightingDiffuse
198 }
199 }
200 models/players/blackguard/bg_bootcas
201 {
202 picmip2
203 {
204 map models/players/blackguard/bg_bootcas.tga
205 rgbGen lightingDiffuse
206 }
207 }
208
209 models/players/blackguard/bg_head1
210 {
211 picmip2
212 {
213 map models/players/blackguard/bg_head1.tga
214 rgbGen lightingDiffuse
215 }
216 }
217 models/players/blackguard/bg_head1_blink
218 {
219 picmip2
220 {
221 map models/players/blackguard/bg_head1_blink.tga
222 alphaFunc GE128
223 depthWrite
224 rgbGen lightingDiffuse
225 }
226 }
227 models/players/blackguard/bg_head2_blink
228 {
229 picmip2
230 {
231 map models/players/blackguard/bg_head2_blink.tga
232 alphaFunc GE128
233 depthWrite
234 rgbGen lightingDiffuse
235 }
236 }
237
238 models/players/blackguard/bg_head2
239 {
240 picmip2
241 {
242 map models/players/blackguard/bg_head2.tga
243 rgbGen lightingDiffuse
244 }
245 }
246
247 models/players/blackguard/bg_head3
248 {
249 picmip2
250 {
251 map models/players/blackguard/bg_head3.tga
252 rgbGen lightingDiffuse
253 }
254 }
255 models/players/blackguard/bg_head4
256 {
257 picmip2
258 {
259 map models/players/blackguard/bg_head4.tga
260 rgbGen lightingDiffuse
261 }
262 }
263 models/players/blackguard/bg_head5
264 {
265 picmip2
266 {
267 map models/players/blackguard/bg_head5.tga
268 rgbGen lightingDiffuse
269 }
270 }
271 models/players/blackguard/bg_head6
272 {
273 picmip2
274 {
275 map models/players/blackguard/bg_head6.tga
276 rgbGen lightingDiffuse
277 }
278 }
279 models/players/blackguard/bg_head7
280 {
281 picmip2
282 {
283 map models/players/blackguard/bg_head7.tga
284 rgbGen lightingDiffuse
285 }
286 }
287 models/players/blackguard/bg_head8
288 {
289 picmip2
290 {
291 map models/players/blackguard/bg_head8.tga
292 rgbGen lightingDiffuse
293 }
294 }
295 models/players/blackguard/bg_headcas1
296 {
297 picmip2
298 {
299 map models/players/blackguard/bg_headcas1.tga
300 rgbGen lightingDiffuse
301 }
302 }
303 models/players/blackguard/bg_headcas2
304 {
305 picmip2
306 {
307 map models/players/blackguard/bg_headcas2.tga
308 rgbGen lightingDiffuse
309 }
310 }
311 models/players/blackguard/bg_headcas3
312 {
313 picmip2
314 {
315 map models/players/blackguard/bg_headcas3.tga
316 rgbGen lightingDiffuse
317 }
318 }
319
320 models/players/blackguard/bg_head3_blink
321 {
322 picmip2
323 {
324 map models/players/blackguard/bg_head3_blink.tga
325 rgbGen lightingDiffuse
326 }
327 }
328
329 models/players/blackguard/snow_body1
330 {
331 picmip2
332 {
333 map models/players/blackguard/snow_body1.tga
334 rgbGen lightingDiffuse
335 }
336 }
337
338 models/players/blackguard/snow_boot1
339 {
340 picmip2
341 {
342 map models/players/blackguard/snow_boot1.tga
343 rgbGen lightingDiffuse
344 }
345 }
346 ////deathshead////
347 models/players/deathshead1/dh_head1
348 {
349 picmip2
350 {
351 map models/players/deathshead1/dh_head1.tga
352 rgbGen lightingDiffuse
353 }
354 }
355 models/players/deathshead1/dh_head1_blink
356 {
357 picmip2
358 {
359 map models/players/deathshead1/dh_head1_blink.tga
360 alphaFunc GE128
361 rgbGen lightingDiffuse
362 }
363 }
364
365 models/players/deathshead1/dh_mon
366 {
367 picmip2
368 {
369 map models/players/deathshead1/dh_mon.tga
370 blendfunc blend
371 rgbGen lightingDiffuse
372 }
373 }
374
375 models/players/deathshead1/lab_body1
376 {
377 picmip2
378 cull twosided
379 {
380 map models/players/deathshead1/lab_body1.tga
381 rgbGen lightingDiffuse
382 }
383 }
384
385 models/players/deathshead1/lab_legs1
386 {
387 picmip2
388 {
389 map models/players/deathshead1/lab_legs1.tga
390 rgbGen lightingDiffuse
391 }
392 }
393 ////director/////
394 models/players/director/dir_body1
395 {
396 picmip2
397 {
398 map models/players/director/dir_body1.tga
399 rgbGen lightingDiffuse
400 }
401 }
402 ////himmler//
403 models/players/himmler/him_head_blink
404 {
405 picmip2
406 {
407 map models/players/himmler/him_head_blink.tga
408 alphaFunc GE128
409 rgbGen lightingDiffuse
410 }
411 }
412
413
414 models/players/himmler/him_glasses
415 {
416 picmip2
417 cull twosided
418 //sort 5
419 {
420 map models/players/himmler/him_glasses.tga
421 blendfunc blend
422 rgbGen lightingDiffuse
423 }
424 }
425
426 models/players/director/dir_glasses
427 {
428 picmip2
429 cull twosided
430 {
431 map models/players/director/dir_glasses.tga
432 blendfunc blend
433 rgbGen lightingDiffuse
434 }
435 }
436
437 models/players/director/dir_head1
438 {
439 picmip2
440 {
441 map models/players/director/dir_head1.tga
442 rgbGen lightingDiffuse
443 }
444 }
445
446 models/players/director/dir_head_blink
447 {
448 picmip2
449 {
450 map models/players/director/dir_head_blink.tga
451 alphaFunc GE128
452 rgbGen lightingDiffuse
453 }
454 }
455
456 models/players/director/dir_legs1
457 {
458 picmip2
459 {
460 map models/players/director/dir_legs1.tga
461 rgbGen lightingDiffuse
462 }
463 }
464 ///drz////
465 models/players/drz/drz_body1
466 {
467 picmip2
468 cull twosided
469 {
470 map models/players/drz/drz_body1.tga
471 rgbGen lightingDiffuse
472 }
473 }
474 models/players/drz/drz_swfbody1
475 {
476 picmip2
477 cull twosided
478 {
479 map models/players/drz/drz_swfbody1.tga
480 rgbGen lightingDiffuse
481 }
482 }
483 models/players/drz/drz_xbody1
484 {
485 picmip2
486 cull twosided
487 {
488 map models/players/drz/drz_xbody1.tga
489 rgbGen lightingDiffuse
490 }
491 }
492
493 models/players/drz/drz_glass
494 {
495 picmip2
496 cull twosided
497 {
498 map models/players/drz/drz_glass.tga
499 blendFunc GL_ONE GL_ZERO
500 rgbGen lightingdiffuse
501 }
502 {
503 map models/players/drz/escape_env.tga
504 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
505 tcMod Scale 2 2
506 tcGen environment
507 }
508 }
509
510 models/players/drz/drz_goggles
511 {
512 picmip2
513 {
514 map models/players/drz/drz_goggles.tga
515 rgbGen lightingDiffuse
516 }
517 }
518
519 models/players/drz/drz_head1
520 {
521 picmip2
522 {
523 map models/players/drz/drz_head1.tga
524 rgbGen lightingDiffuse
525 }
526 }
527
528 models/players/drz/drz_head2
529 {
530 picmip2
531 {
532 map models/players/drz/drz_head2.tga
533 rgbGen lightingDiffuse
534 }
535 }
536
537 models/players/drz/drz_head4
538 {
539 picmip2
540 {
541 map models/players/drz/drz_head4.tga
542 rgbGen lightingDiffuse
543 }
544 }
545
546 models/players/drz/drz_head_blink
547 {
548 picmip2
549 {
550 map models/players/drz/drz_head_blink.tga
551 alphaFunc GE128
552 depthWrite
553 rgbGen lightingDiffuse
554 }
555 }
556
557 models/players/drz/drz_head5
558 {
559 picmip2
560 {
561 map models/players/drz/drz_head5.tga
562 rgbGen lightingDiffuse
563 }
564 }
565
566 //models/players/drz/drz_head5_blink
567 //{
568 // picmip2
569 // {
570 // map models/players/drz/drz_head5_blink.tga
571 // rgbGen lightingDiffuse
572 // }
573 //}
574
575 models/players/drz/drz_head6
576 {
577 picmip2
578 {
579 map models/players/drz/drz_head6.tga
580 rgbGen lightingDiffuse
581 }
582 }
583
584 models/players/drz/drz_head6_blink
585 {
586 picmip2
587 {
588 map models/players/drz/drz_head6_blink.tga
589 rgbGen lightingDiffuse
590 }
591 }
592
593 models/players/drz/drz_head7
594 {
595 picmip2
596 {
597 map models/players/drz/drz_head7.tga
598 rgbGen lightingDiffuse
599 }
600 }
601 models/players/drz/drz_head8
602 {
603 picmip2
604 {
605 map models/players/drz/drz_head8.tga
606 rgbGen lightingDiffuse
607 }
608 }
609
610 models/players/drz/drz_legs1
611 {
612 picmip2
613 {
614 map models/players/drz/drz_legs1.tga
615 rgbGen lightingDiffuse
616 }
617 }
618
619 models/players/drz/drz_rockbody1
620 {
621 picmip2
622 cull twosided
623 {
624 map models/players/drz/drz_rockbody1.tga
625 rgbGen lightingDiffuse
626 }
627 }
628
629 models/players/drz/drz_rocklegs1
630 {
631 picmip2
632 {
633 map models/players/drz/drz_rocklegs1.tga
634 rgbGen lightingDiffuse
635 }
636 }
637 models/players/drz/drz_xlegs1
638 {
639 picmip2
640 {
641 map models/players/drz/drz_xlegs1.tga
642 rgbGen lightingDiffuse
643 }
644 }
645
646 models/players/drz/escape_env
647 {
648 picmip2
649 {
650 map models/players/drz/escape_env.tga
651 rgbGen lightingDiffuse
652 }
653 }
654 models/players/drz/vin_head1
655 {
656 picmip2
657 {
658 map models/players/drz/vin_head1.tga
659 rgbGen lightingDiffuse
660 }
661 }
662
663 models/players/drz/vin_body1
664 {
665 picmip2
666 cull twosided
667 {
668 map models/players/drz/vin_body1.tga
669 rgbGen lightingDiffuse
670 }
671 }
672
673 models/players/drz/vin_legs1
674 {
675 picmip2
676 {
677 map models/players/drz/vin_legs1.tga
678 rgbGen lightingDiffuse
679 }
680 }
681 models/players/drz/acc/drz_belt1
682 {
683 picmip2
684 {
685 map models/players/drz/acc/drz_belt1.tga
686 rgbGen lightingDiffuse
687 }
688 }
689 models/players/drz/acc/drz_cap1
690 {
691 picmip2
692 {
693 map models/players/drz/acc/drz_cap1.tga
694 rgbGen lightingDiffuse
695 }
696 }
697 models/players/drz/acc/drz_glass1
698 {
699 picmip2
700 cull twosided
701 {
702 map models/players/drz/acc/drz_glass1.tga
703 blendfunc blend
704 rgbGen lightingDiffuse
705 }
706 }
707
708
709 ///eliteguard//
710 models/players/eliteguard/eg_body1
711 {
712 picmip2
713 {
714 map models/players/eliteguard/eg_body1.tga
715 alphaFunc GE128
716 depthWrite
717 rgbGen lightingdiffuse
718 }
719 }
720 models/players/eliteguard/eg_body2
721 {
722 picmip2
723 cull twosided
724 {
725 map models/players/eliteguard/eg_body2.tga
726 rgbGen lightingdiffuse
727 }
728 }
729 models/players/eliteguard/eg_body3
730 {
731 picmip2
732 cull twosided
733 {
734 map models/players/eliteguard/eg_body3.tga
735 rgbGen lightingdiffuse
736 }
737 }
738 models/players/eliteguard/eg_bodycas1
739 {
740 picmip2
741 //cull twosided
742 {
743 map models/players/eliteguard/eg_bodycas1.tga
744 alphaFunc GE128
745 depthWrite
746 rgbGen lightingdiffuse
747 }
748 }
749 models/players/eliteguard/eg_bodycas2
750 {
751 picmip2
752 cull twosided
753 {
754 map models/players/eliteguard/eg_bodycas2.tga
755 rgbGen lightingdiffuse
756 }
757 }
758
759 models/players/eliteguard/eg_boot
760 {
761 picmip2
762 {
763 map models/players/eliteguard/eg_boot.tga
764 rgbGen lightingDiffuse
765 }
766 }
767 models/players/eliteguard/eg_bootcas
768 {
769 picmip2
770 {
771 map models/players/eliteguard/eg_bootcas.tga
772 rgbGen lightingDiffuse
773 }
774 }
775
776 models/players/eliteguard/acc/eg_glasses
777 {
778 picmip2
779 cull twosided
780
781 {
782 map models/players/eliteguard/acc/eg_glasses.tga
783 blendfunc blend
784 rgbGen lightingDiffuse
785 }
786 }
787 models/players/eliteguard/acc/eg_bar1
788 {
789 picmip2
790 cull twosided
791
792 {
793 map models/players/eliteguard/acc/eg_bar1.tga
794 rgbGen lightingDiffuse
795 }
796 }
797
798 models/players/eliteguard/eg_head1
799 {
800 picmip2
801 cull twosided
802
803 {
804 map models/players/eliteguard/eg_head1.tga
805 alphaFunc GE128
806 depthWrite
807 rgbGen lightingDiffuse
808 }
809 }
810
811 models/players/eliteguard/eg_head_blink
812 {
813 picmip2
814
815
816 {
817 map models/players/eliteguard/eg_head_blink.tga
818 alphaFunc GE128
819 depthWrite
820 rgbGen lightingDiffuse
821 }
822 }
823 models/players/eliteguard/eg_head_blink2
824 {
825 picmip2
826
827
828 {
829 map models/players/eliteguard/eg_head_blink2.tga
830 alphaFunc GE128
831 depthWrite
832 rgbGen lightingDiffuse
833 }
834 }
835 models/players/eliteguard/eg_head_blink3
836 {
837 picmip2
838
839
840 {
841 map models/players/eliteguard/eg_head_blink3.tga
842 alphaFunc GE128
843 depthWrite
844 rgbGen lightingDiffuse
845 }
846 }
847 models/players/eliteguard/eg_head_blink4
848 {
849 picmip2
850
851
852 {
853 map models/players/eliteguard/eg_head_blink4.tga
854 alphaFunc GE128
855 depthWrite
856 rgbGen lightingDiffuse
857 }
858 }
859 models/players/eliteguard/eg_head_blink5
860 {
861 picmip2
862
863
864 {
865 map models/players/eliteguard/eg_head_blink5.tga
866 alphaFunc GE128
867 depthWrite
868 rgbGen lightingDiffuse
869 }
870 }
871 models/players/eliteguard/eg_head_blink6
872 {
873 picmip2
874
875
876 {
877 map models/players/eliteguard/eg_head_blink6.tga
878 alphaFunc GE128
879 depthWrite
880 rgbGen lightingDiffuse
881 }
882 }
883
884 models/players/eliteguard/eg_head2
885 {
886 picmip2
887 cull twosided
888 {
889 map models/players/eliteguard/eg_head2.tga
890 alphaFunc GE128
891 depthWrite
892 rgbGen lightingDiffuse
893 }
894 }
895 models/players/eliteguard/eg_head3
896 {
897 picmip2
898 cull twosided
899 {
900 map models/players/eliteguard/eg_head3.tga
901 alphaFunc GE128
902 depthWrite
903 rgbGen lightingDiffuse
904 }
905 }
906
907 models/players/eliteguard/eg_head4
908 {
909 picmip2
910 cull twosided
911 {
912 map models/players/eliteguard/eg_head4.tga
913 alphaFunc GE128
914 depthWrite
915 rgbGen lightingDiffuse
916 }
917 }
918
919 models/players/eliteguard/eg_head5
920 {
921 picmip2
922
923 {
924 map models/players/eliteguard/eg_head5.tga
925 rgbGen lightingDiffuse
926 }
927 }
928 models/players/eliteguard/eg_head6
929 {
930 picmip2
931 //cull twosided
932 {
933 map models/players/eliteguard/eg_head6.tga
934 rgbGen lightingDiffuse
935 }
936 }
937 models/players/eliteguard/eg_headcas1
938 {
939 picmip2
940 cull twosided
941 {
942 map models/players/eliteguard/eg_headcas1.tga
943 alphaFunc GE128
944 depthWrite
945 rgbGen lightingDiffuse
946 }
947 }
948 models/players/eliteguard/eg_headcas2
949 {
950 picmip2
951
952 {
953 map models/players/eliteguard/eg_headcas2.tga
954 rgbGen lightingDiffuse
955 }
956 }
957 models/players/eliteguard/eg_headcas3
958 {
959 picmip2
960
961 {
962 map models/players/eliteguard/eg_headcas3.tga
963 rgbGen lightingDiffuse
964 }
965 }
966 ///eva////
967
968 models/players/eva/eva_body1
969 {
970 picmip2
971 {
972 map models/players/eva/eva_body1.tga
973 rgbGen lightingDiffuse
974 }
975 }
976
977 models/players/eva/eva_boot
978 {
979 picmip2
980 {
981 map models/players/eva/eva_boot.tga
982 rgbGen lightingDiffuse
983 }
984 }
985
986 models/players/eva/eva_head1
987 {
988 picmip2
989 {
990 map models/players/eva/eva_head1.tga
991 rgbGen lightingDiffuse
992 }
993 }
994 ////guard///
995
996 models/players/guard/i_head1
997 {
998 picmip2
999 {
1000 map models/players/guard/i_head1.tga
1001 rgbGen lightingDiffuse
1002 }
1003 }
1004 models/players/guard/i_body1
1005 {
1006 picmip2
1007 cull twosided
1008 {
1009 map models/players/guard/i_body1.tga
1010 rgbGen lightingDiffuse
1011 }
1012 }
1013
1014 models/players/guard/i_legs1
1015 {
1016 picmip2
1017 {
1018 map models/players/guard/i_legs1.tga
1019 rgbGen lightingDiffuse
1020 }
1021 }
1022
1023 ///hans///
1024 models/players/hans/fi_body1
1025 {
1026 picmip2
1027 cull twosided
1028 {
1029 map models/players/hans/fi_body1.tga
1030 rgbGen lightingDiffuse
1031 }
1032 }
1033
1034 models/players/hans/fi_head1
1035 {
1036 picmip2
1037 {
1038 map models/players/hans/fi_head1.tga
1039 rgbGen lightingDiffuse
1040 }
1041 }
1042
1043 models/players/hans/fi_head_blink
1044 {
1045 picmip2
1046 {
1047 map models/players/hans/fi_head_blink.tga
1048 blendfunc blend
1049 rgbGen lightingDiffuse
1050 }
1051 }
1052
1053 models/players/hans/fi_legs1
1054 {
1055 picmip2
1056 {
1057 map models/players/hans/fi_legs1.tga
1058 rgbGen lightingDiffuse
1059 }
1060 }
1061 models/players/hans/acc/ammo1
1062 {
1063 picmip2
1064 {
1065 map models/players/hans/acc/ammo1.tga
1066 rgbGen lightingDiffuse
1067 }
1068 }
1069 models/players/hans/acc/i_helmut
1070 {
1071 picmip2
1072 {
1073 map models/players/hans/acc/i_helmut.tga
1074 rgbGen lightingDiffuse
1075 }
1076 }
1077
1078 ////heinrich////
1079 models/players/heinrich/hein_armor1
1080 {
1081 picmip2
1082 cull twosided
1083 {
1084 map models/players/heinrich/hein_armor1.tga
1085 rgbGen lightingDiffuse
1086 }
1087 }
1088
1089 models/players/heinrich/hein_body1
1090 {
1091 picmip2
1092 {
1093 map models/players/heinrich/hein_body1.tga
1094 rgbGen lightingDiffuse
1095 }
1096 }
1097
1098 models/players/heinrich/hein_hair1
1099 {
1100 picmip2
1101 cull twosided
1102 {
1103 map models/players/heinrich/hein_hair1.tga
1104 alphaFunc GE128
1105 depthWrite
1106 rgbGen lightingDiffuse
1107 }
1108 }
1109
1110 models/players/heinrich/hein_head1
1111 {
1112 picmip2
1113 cull twosided
1114 {
1115 map models/players/heinrich/hein_head1.tga
1116 alphaFunc GE128
1117 depthWrite
1118 rgbGen lightingDiffuse
1119 }
1120 }
1121
1122 models/players/heinrich/hein_sword1
1123 {
1124 picmip2
1125 {
1126 map models/players/heinrich/hein_sword1.tga
1127 rgbGen lightingDiffuse
1128 }
1129 }
1130 ///helga///
1131 models/players/helga/hel_body1
1132 {
1133 picmip2
1134 cull twosided
1135 {
1136 map models/players/helga/hel_body1.tga
1137 rgbGen lightingDiffuse
1138 }
1139 }
1140
1141 models/players/helga/hel_head1
1142 {
1143 picmip2
1144 {
1145 map models/players/helga/hel_head1.tga
1146 rgbGen lightingDiffuse
1147 }
1148 }
1149 models/players/helga/hel_head_blink
1150 {
1151 picmip2
1152 {
1153 map models/players/helga/hel_head_blink.tga
1154 alphaFunc GE128
1155 depthWrite
1156 rgbGen lightingDiffuse
1157 }
1158 }
1159
1160 models/players/helga/hel_legs1
1161 {
1162 picmip2
1163 {
1164 map models/players/helga/hel_legs1.tga
1165 rgbGen lightingDiffuse
1166 }
1167 }
1168 //higgs///
1169 models/players/higgs/higg_bar1
1170 {
1171 picmip2
1172 {
1173 map models/players/higgs/higg_bar1.tga
1174 rgbGen lightingDiffuse
1175 }
1176 }
1177
1178 models/players/higgs/higg_body1
1179 {
1180 picmip2
1181 {
1182 map models/players/higgs/higg_body1.tga
1183 rgbGen lightingDiffuse
1184 }
1185 }
1186
1187 models/players/higgs/higg_head1
1188 {
1189 picmip2
1190 {
1191 map models/players/higgs/higg_head1.tga
1192 rgbGen lightingDiffuse
1193 }
1194 }
1195
1196 models/players/higgs/higg_head_blink
1197 {
1198 picmip2
1199 {
1200 map models/players/higgs/higg_head_blink.tga
1201 alphaFunc GE128
1202 depthWrite
1203 rgbGen lightingDiffuse
1204 }
1205 }
1206
1207 models/players/higgs/higg_legs1
1208 {
1209 picmip2
1210 {
1211 map models/players/higgs/higg_legs1.tga
1212 rgbGen lightingDiffuse
1213 }
1214 }
1215 ////infantryss////
1216 models/players/infantryss/amer_body1
1217 {
1218 picmip2
1219 {
1220 map models/players/infantryss/amer_body1.tga
1221 rgbGen lightingDiffuse
1222 }
1223 }
1224
1225 models/players/infantryss/amer_legs1
1226 {
1227 picmip2
1228 {
1229 map models/players/infantryss/amer_legs1.tga
1230 rgbGen lightingDiffuse
1231 }
1232 }
1233
1234 models/players/infantryss/ammo1
1235 {
1236 picmip2
1237 {
1238 map models/players/infantryss/ammo1.tga
1239 rgbGen lightingDiffuse
1240 }
1241 }
1242
1243 models/players/infantryss/i_body1
1244 {
1245 cull twosided
1246 picmip2
1247 {
1248 map models/players/infantryss/i_body1.tga
1249 rgbGen lightingDiffuse
1250 }
1251 }
1252 models/players/infantryss/i_body2
1253 {
1254 cull twosided
1255 picmip2
1256 {
1257 map models/players/infantryss/i_body2.tga
1258 rgbGen lightingDiffuse
1259 }
1260 }
1261
1262 models/players/infantryss/i_body3
1263 {
1264 picmip2
1265 {
1266 map models/players/infantryss/i_body3.tga
1267 rgbGen lightingDiffuse
1268 }
1269 }
1270
1271 models/players/infantryss/i_bodyburn
1272 {
1273 picmip2
1274 {
1275 map models/players/infantryss/i_bodyburn.tga
1276 rgbGen lightingDiffuse
1277 }
1278 }
1279
1280 models/players/infantryss/i_bodycam1
1281 {
1282 picmip2
1283 {
1284 map models/players/infantryss/i_bodycam1.tga
1285 rgbGen lightingDiffuse
1286 }
1287 }
1288
1289 models/players/infantryss/i_bodysn1
1290 {
1291 picmip2
1292 {
1293 map models/players/infantryss/i_bodysn1.tga
1294 rgbGen lightingDiffuse
1295 }
1296 }
1297 models/players/infantryss/i_xbody1
1298 {
1299 picmip2
1300 {
1301 map models/players/infantryss/i_xbody1.tga
1302 rgbGen lightingDiffuse
1303 }
1304 }
1305
1306 models/players/infantryss/i_body_vill
1307 {
1308 picmip2
1309 {
1310 map models/players/infantryss/i_body_vill.tga
1311 rgbGen lightingDiffuse
1312 }
1313 }
1314 models/players/infantryss/i_churbody1
1315 {
1316 picmip2
1317 {
1318 map models/players/infantryss/i_churbody1.tga
1319 rgbGen lightingDiffuse
1320 }
1321 }
1322 models/players/infantryss/i_churbody2
1323 {
1324 picmip2
1325 {
1326 map models/players/infantryss/i_churbody2.tga
1327 rgbGen lightingDiffuse
1328 }
1329 }
1330 models/players/infantryss/i_churlegs1
1331 {
1332 picmip2
1333 {
1334 map models/players/infantryss/i_churlegs1.tga
1335 rgbGen lightingDiffuse
1336 }
1337 }
1338 models/players/infantryss/i_churlegs2
1339 {
1340 picmip2
1341 {
1342 map models/players/infantryss/i_churlegs2.tga
1343 rgbGen lightingDiffuse
1344 }
1345 }
1346 models/players/infantryss/i_crylegs2
1347 {
1348 picmip2
1349 {
1350 map models/players/infantryss/i_crylegs2.tga
1351 rgbGen lightingDiffuse
1352 }
1353 }
1354
1355 models/players/infantryss/i_crybody1
1356 {
1357 picmip2
1358 {
1359 map models/players/infantryss/i_crybody1.tga
1360 rgbGen lightingDiffuse
1361 }
1362 }
1363
1364 models/players/infantryss/i_cryhead1
1365 {
1366 picmip2
1367 {
1368 map models/players/infantryss/i_cryhead1.tga
1369 rgbGen lightingDiffuse
1370 }
1371 }
1372 models/players/infantryss/i_cryhead2
1373 {
1374 picmip2
1375 {
1376 map models/players/infantryss/i_cryhead2.tga
1377 rgbGen lightingDiffuse
1378 }
1379 }
1380 models/players/infantryss/i_cryhead3
1381 {
1382 picmip2
1383 {
1384 map models/players/infantryss/i_cryhead3.tga
1385 rgbGen lightingDiffuse
1386 }
1387 }
1388 models/players/infantryss/i_cryhead4
1389 {
1390 picmip2
1391 {
1392 map models/players/infantryss/i_cryhead4.tga
1393 rgbGen lightingDiffuse
1394 }
1395 }
1396
1397 models/players/infantryss/i_head1
1398 {
1399 picmip2
1400 {
1401 map models/players/infantryss/i_head1.tga
1402 rgbGen lightingDiffuse
1403 }
1404 }
1405 models/players/infantryss/i_head2
1406 {
1407 picmip2
1408 {
1409 map models/players/infantryss/i_head2.tga
1410 rgbGen lightingDiffuse
1411 }
1412 }
1413 models/players/infantryss/i_head3
1414 {
1415 picmip2
1416 {
1417 map models/players/infantryss/i_head3.tga
1418 rgbGen lightingDiffuse
1419 }
1420 }
1421 models/players/infantryss/i_head4
1422 {
1423 picmip2
1424 {
1425 map models/players/infantryss/i_head4.tga
1426 rgbGen lightingDiffuse
1427 }
1428 }
1429 models/players/infantryss/i_head5
1430 {
1431 picmip2
1432 {
1433 map models/players/infantryss/i_head5.tga
1434 rgbGen lightingDiffuse
1435 }
1436 }
1437 models/players/infantryss/i_head6
1438 {
1439 picmip2
1440 {
1441 map models/players/infantryss/i_head6.tga
1442 rgbGen lightingDiffuse
1443 }
1444 }
1445 models/players/infantryss/i_head7
1446 {
1447 picmip2
1448 {
1449 map models/players/infantryss/i_head7.tga
1450 rgbGen lightingDiffuse
1451 }
1452 }
1453 models/players/infantryss/i_head8
1454 {
1455 picmip2
1456 {
1457 map models/players/infantryss/i_head8.tga
1458 rgbGen lightingDiffuse
1459 }
1460 }
1461 models/players/infantryss/i_head9
1462 {
1463 picmip2
1464 {
1465 map models/players/infantryss/i_head9.tga
1466 rgbGen lightingDiffuse
1467 }
1468 }
1469 models/players/infantryss/i_head10
1470 {
1471 picmip2
1472 {
1473 map models/players/infantryss/i_head10.tga
1474 rgbGen lightingDiffuse
1475 }
1476 }
1477 models/players/infantryss/i_head11
1478 {
1479 picmip2
1480 {
1481 map models/players/infantryss/i_head11.tga
1482 rgbGen lightingDiffuse
1483 }
1484 }
1485 models/players/infantryss/i_head12
1486 {
1487 picmip2
1488 {
1489 map models/players/infantryss/i_head12.tga
1490 rgbGen lightingDiffuse
1491 }
1492 }
1493 models/players/infantryss/i_head13
1494 {
1495 picmip2
1496 {
1497 map models/players/infantryss/i_head13.tga
1498 rgbGen lightingDiffuse
1499 }
1500 }
1501
1502 models/players/infantryss/i_head14
1503 {
1504 picmip2
1505 {
1506 map models/players/infantryss/i_head14.tga
1507 rgbGen lightingDiffuse
1508 }
1509 }
1510
1511 models/players/infantryss/i_head15
1512 {
1513 picmip2
1514 {
1515 map models/players/infantryss/i_head15.tga
1516 rgbGen lightingDiffuse
1517 }
1518 }
1519 models/players/infantryss/i_head15_blink
1520 {
1521 picmip2
1522 {
1523 map models/players/infantryss/i_head15_blink.tga
1524 // alphaFunc GE128
1525 // depthWrite
1526 blendfunc blend
1527 rgbGen lightingDiffuse
1528 }
1529 }
1530 models/players/infantryss/i_sfmhead1_blink
1531 {
1532 picmip2
1533 {
1534 map models/players/infantryss/i_sfmhead1_blink.tga
1535 // alphaFunc GE128
1536 // depthWrite
1537 blendfunc blend
1538 rgbGen lightingDiffuse
1539 }
1540 }
1541
1542 models/players/infantryss/i_sfmhead2_blink
1543 {
1544 picmip2
1545 {
1546 map models/players/infantryss/i_sfmhead2_blink.tga
1547 // alphaFunc GE128
1548 // depthWrite
1549 blendfunc blend
1550 rgbGen lightingDiffuse
1551 }
1552 }
1553
1554 models/players/infantryss/i_sfmhead3_blink
1555 {
1556 picmip2
1557 {
1558 map models/players/infantryss/i_sfmhead3_blink.tga
1559 // alphaFunc GE128
1560 // depthWrite
1561 blendfunc blend
1562 rgbGen lightingDiffuse
1563 }
1564 }
1565
1566 models/players/infantryss/i_head_blink
1567 {
1568 picmip2
1569 {
1570 map models/players/infantryss/i_head_blink.tga
1571 // alphaFunc GE128
1572 // depthWrite
1573 blendfunc blend
1574 rgbGen lightingDiffuse
1575 }
1576 }
1577
1578 models/players/infantryss/i_head15_blink
1579 {
1580 picmip2
1581 {
1582 map models/players/infantryss/i_head15_blink.tga
1583 rgbGen lightingDiffuse
1584 }
1585 }
1586
1587 models/players/infantryss/i_head16
1588 {
1589 picmip2
1590 {
1591 map models/players/infantryss/i_head16.tga
1592 rgbGen lightingDiffuse
1593 }
1594 }
1595
1596 models/players/infantryss/i_head16_blink
1597 {
1598 picmip2
1599 {
1600 map models/players/infantryss/i_head16_blink.tga
1601 rgbGen lightingDiffuse
1602 }
1603 }
1604
1605 models/players/infantryss/i_head17
1606 {
1607 picmip2
1608 {
1609 map models/players/infantryss/i_head17.tga
1610 rgbGen lightingDiffuse
1611 }
1612 }
1613
1614 models/players/infantryss/i_head17_blink
1615 {
1616 picmip2
1617 {
1618 map models/players/infantryss/i_head17_blink.tga
1619 rgbGen lightingDiffuse
1620 }
1621 }
1622
1623 models/players/infantryss/i_head18
1624 {
1625 picmip2
1626 {
1627 map models/players/infantryss/i_head18.tga
1628 rgbGen lightingDiffuse
1629 }
1630 }
1631
1632 models/players/infantryss/i_head18_blink
1633 {
1634 picmip2
1635 {
1636 map models/players/infantryss/i_head18_blink.tga
1637 rgbGen lightingDiffuse
1638 }
1639 }
1640
1641 models/players/infantryss/i_head19
1642 {
1643 picmip2
1644 {
1645 map models/players/infantryss/i_head19.tga
1646 rgbGen lightingDiffuse
1647 }
1648 }
1649
1650 models/players/infantryss/i_head19_blink
1651 {
1652 picmip2
1653 {
1654 map models/players/infantryss/i_head19_blink.tga
1655 rgbGen lightingDiffuse
1656 }
1657 }
1658
1659 models/players/infantryss/i_head1_blink
1660 {
1661 picmip2
1662 {
1663 map models/players/infantryss/i_head1_blink.tga
1664 rgbGen lightingDiffuse
1665 }
1666 }
1667
1668 models/players/infantryss/i_head20
1669 {
1670 picmip2
1671 {
1672 map models/players/infantryss/i_head20.tga
1673 rgbGen lightingDiffuse
1674 }
1675 }
1676
1677 models/players/infantryss/i_head20_blink
1678 {
1679 picmip2
1680 {
1681 map models/players/infantryss/i_head20_blink.tga
1682 rgbGen lightingDiffuse
1683 }
1684 }
1685
1686 models/players/infantryss/i_head21
1687 {
1688 picmip2
1689 {
1690 map models/players/infantryss/i_head21.tga
1691 rgbGen lightingDiffuse
1692 }
1693 }
1694
1695 models/players/infantryss/i_head21_blink
1696 {
1697 picmip2
1698 {
1699 map models/players/infantryss/i_head21_blink.tga
1700 rgbGen lightingDiffuse
1701 }
1702 }
1703
1704 models/players/infantryss/i_head23
1705 {
1706 picmip2
1707 {
1708 map models/players/infantryss/i_head23.tga
1709 rgbGen lightingDiffuse
1710 }
1711 }
1712
1713 models/players/infantryss/i_head23_blink
1714 {
1715 picmip2
1716 {
1717 map models/players/infantryss/i_head23_blink.tga
1718 rgbGen lightingDiffuse
1719 }
1720 }
1721
1722
1723
1724 models/players/infantryss/i_headburn
1725 {
1726 picmip2
1727 {
1728 map models/players/infantryss/i_headburn.tga
1729 rgbGen lightingDiffuse
1730 }
1731 }
1732 models/players/infantryss/i_headcam1
1733 {
1734 picmip2
1735 {
1736 map models/players/infantryss/i_headcam1.tga
1737 rgbGen lightingDiffuse
1738 }
1739 }
1740
1741 models/players/infantryss/i_headsn1
1742 {
1743 picmip2
1744 {
1745 map models/players/infantryss/i_headsn1.tga
1746 rgbGen lightingDiffuse
1747 }
1748 }
1749
1750 models/players/infantryss/i_headsn2
1751 {
1752 picmip2
1753 {
1754 map models/players/infantryss/i_headsn2.tga
1755 rgbGen lightingDiffuse
1756 }
1757 }
1758 models/players/infantryss/i_headsn3
1759 {
1760 picmip2
1761 {
1762 map models/players/infantryss/i_headsn3.tga
1763 rgbGen lightingDiffuse
1764 }
1765 }
1766 models/players/infantryss/i_headsn4
1767 {
1768 picmip2
1769 {
1770 map models/players/infantryss/i_headsn4.tga
1771 rgbGen lightingDiffuse
1772 }
1773 }
1774
1775 models/players/infantryss/i_legs1
1776 {
1777 picmip2
1778 {
1779 map models/players/infantryss/i_legs1.tga
1780 rgbGen lightingDiffuse
1781 }
1782 }
1783 models/players/infantryss/i_legs2
1784 {
1785 picmip2
1786 {
1787 map models/players/infantryss/i_legs2.tga
1788 rgbGen lightingDiffuse
1789 }
1790 }
1791
1792 models/players/infantryss/i_legs3
1793 {
1794 picmip2
1795 {
1796 map models/players/infantryss/i_legs3.tga
1797 rgbGen lightingDiffuse
1798 }
1799 }
1800
1801 models/players/infantryss/i_legsburn
1802 {
1803 picmip2
1804 {
1805 map models/players/infantryss/i_legsburn.tga
1806 rgbGen lightingDiffuse
1807 }
1808 }
1809
1810 models/players/infantryss/i_legscam1
1811 {
1812 picmip2
1813 {
1814 map models/players/infantryss/i_legscam1.tga
1815 rgbGen lightingDiffuse
1816 }
1817 }
1818
1819 models/players/infantryss/i_legscam2
1820 {
1821 picmip2
1822 {
1823 map models/players/infantryss/i_legscam2.tga
1824 rgbGen lightingDiffuse
1825 }
1826 }
1827
1828 models/players/infantryss/i_legssn1
1829 {
1830 picmip2
1831 {
1832 map models/players/infantryss/i_legssn1.tga
1833 rgbGen lightingDiffuse
1834 }
1835 }
1836
1837 models/players/infantryss/i_legssn2
1838 {
1839 picmip2
1840 {
1841 map models/players/infantryss/i_legssn2.tga
1842 rgbGen lightingDiffuse
1843 }
1844 }
1845
1846 models/players/infantryss/i_rockbody1
1847 {
1848 picmip2
1849 {
1850 map models/players/infantryss/i_rockbody1.tga
1851 rgbGen lightingDiffuse
1852 }
1853 }
1854
1855 models/players/infantryss/i_rocklegs1
1856 {
1857 picmip2
1858 {
1859 map models/players/infantryss/i_rocklegs1.tga
1860 rgbGen lightingDiffuse
1861 }
1862 }
1863
1864 models/players/infantryss/i_sfmbody1
1865 {
1866 picmip2
1867 {
1868 map models/players/infantryss/i_sfmbody1.tga
1869 rgbGen lightingDiffuse
1870 }
1871 }
1872
1873 models/players/infantryss/i_sfmbody2
1874 {
1875 picmip2
1876 {
1877 map models/players/infantryss/i_sfmbody2.tga
1878 rgbGen lightingDiffuse
1879 }
1880 }
1881
1882 models/players/infantryss/i_sfmhead1
1883 {
1884 picmip2
1885 {
1886 map models/players/infantryss/i_sfmhead1.tga
1887 rgbGen lightingDiffuse
1888 }
1889 }
1890
1891 models/players/infantryss/i_sfmhead1_blink
1892 {
1893 picmip2
1894 {
1895 map models/players/infantryss/i_sfmhead1_blink.tga
1896 rgbGen lightingDiffuse
1897 }
1898 }
1899
1900 models/players/infantryss/i_sfmhead2
1901 {
1902 picmip2
1903 {
1904 map models/players/infantryss/i_sfmhead2.tga
1905 rgbGen lightingDiffuse
1906 }
1907 }
1908
1909 models/players/infantryss/i_sfmhead2_blink
1910 {
1911 picmip2
1912 {
1913 map models/players/infantryss/i_sfmhead2_blink.tga
1914 rgbGen lightingDiffuse
1915 }
1916 }
1917
1918 models/players/infantryss/i_sfmhead3
1919 {
1920 picmip2
1921 {
1922 map models/players/infantryss/i_sfmhead3.tga
1923 rgbGen lightingDiffuse
1924 }
1925 }
1926
1927 models/players/infantryss/i_sfmhead3_blink
1928 {
1929 picmip2
1930 {
1931 map models/players/infantryss/i_sfmhead3_blink.tga
1932 rgbGen lightingDiffuse
1933 }
1934 }
1935
1936 models/players/infantryss/i_sfmlegs1
1937 {
1938 picmip2
1939 {
1940 map models/players/infantryss/i_sfmlegs1.tga
1941 rgbGen lightingDiffuse
1942 }
1943 }
1944 models/players/infantryss/acc/ammo1
1945 {
1946 picmip2
1947 {
1948 map models/players/infantryss/acc/ammo1.tga
1949 rgbGen lightingDiffuse
1950 }
1951 }
1952 models/players/infantryss/acc/ammosn1
1953 {
1954 picmip2
1955 {
1956 map models/players/infantryss/acc/ammosn1.tga
1957 rgbGen lightingDiffuse
1958 }
1959 }
1960 models/players/infantryss/acc/binoc
1961 {
1962 picmip2
1963 {
1964 map models/players/infantryss/acc/binoc.tga
1965 rgbGen lightingDiffuse
1966 }
1967 }
1968 models/players/infantryss/acc/cap
1969 {
1970 picmip2
1971 {
1972 map models/players/infantryss/acc/cap.tga
1973 rgbGen lightingDiffuse
1974 }
1975 }
1976 models/players/infantryss/acc/churcap
1977 {
1978 picmip2
1979 {
1980 map models/players/infantryss/acc/churcap.tga
1981 rgbGen lightingDiffuse
1982 }
1983 }
1984 models/players/infantryss/acc/cig
1985 {
1986 picmip2
1987 {
1988 map models/players/infantryss/acc/cig.tga
1989 rgbGen lightingDiffuse
1990 }
1991 }
1992 models/players/infantryss/acc/crycap
1993 {
1994 picmip2
1995 {
1996 map models/players/infantryss/acc/crycap.tga
1997 rgbGen lightingDiffuse
1998 }
1999 }
2000 models/players/infantryss/acc/escapecap
2001 {
2002 picmip2
2003 {
2004 map models/players/infantryss/acc/escapecap.tga
2005 rgbGen lightingDiffuse
2006 }
2007 }
2008 models/players/infantryss/acc/fieldkit
2009 {
2010 picmip2
2011 {
2012 map models/players/infantryss/acc/fieldkit.tga
2013 rgbGen lightingDiffuse
2014 }
2015 }
2016 models/players/infantryss/acc/fieldkitsn
2017 {
2018 picmip2
2019 {
2020 map models/players/infantryss/acc/fieldkitsn.tga
2021 rgbGen lightingDiffuse
2022 }
2023 }
2024 models/players/infantryss/acc/helgrass
2025 {
2026 picmip2
2027 cull twosided
2028 {
2029 map models/players/infantryss/acc/helgrass.tga
2030 alphaFunc GE128
2031 depthWrite
2032 rgbGen lightingDiffuse
2033 }
2034 }
2035 models/players/infantryss/acc/i_camohelmut1
2036 {
2037 picmip2
2038 {
2039 map models/players/infantryss/acc/i_camohelmut1.tga
2040 rgbGen lightingDiffuse
2041 }
2042 }
2043 models/players/infantryss/acc/i_camohelmut1
2044 {
2045 picmip2
2046 {
2047 map models/players/infantryss/acc/i_camohelmut1.tga
2048 rgbGen lightingDiffuse
2049 }
2050 }
2051 models/players/infantryss/acc/i_helmut
2052 {
2053 picmip2
2054 {
2055 map models/players/infantryss/acc/i_helmut.tga
2056 rgbGen lightingDiffuse
2057 }
2058 }
2059 models/players/infantryss/acc/i_helmut1
2060 {
2061 picmip2
2062 {
2063 map models/players/infantryss/acc/i_helmut1.tga
2064 rgbGen lightingDiffuse
2065 }
2066 }
2067 models/players/infantryss/acc/i_helmut2
2068 {
2069 picmip2
2070 {
2071 map models/players/infantryss/acc/i_helmut2.tga
2072 rgbGen lightingDiffuse
2073 }
2074 }
2075 models/players/infantryss/acc/i_helmut3
2076 {
2077 picmip2
2078 {
2079 map models/players/infantryss/acc/i_helmut3.tga
2080 rgbGen lightingDiffuse
2081 }
2082 }
2083 models/players/infantryss/acc/i_helmutburn
2084 {
2085 picmip2
2086 {
2087 map models/players/infantryss/acc/i_helmutburn.tga
2088 rgbGen lightingDiffuse
2089 }
2090 }
2091 models/players/infantryss/acc/i_helmutsn1
2092 {
2093 picmip2
2094 {
2095 map models/players/infantryss/acc/i_helmutsn1.tga
2096 rgbGen lightingDiffuse
2097 }
2098 }
2099 models/players/infantryss/acc/mp40belt
2100 {
2101 picmip2
2102 {
2103 map models/players/infantryss/acc/mp40belt.tga
2104 rgbGen lightingDiffuse
2105 }
2106 }
2107 models/players/infantryss/acc/mp40beltd
2108 {
2109 picmip2
2110 {
2111 map models/players/infantryss/acc/mp40beltd.tga
2112 rgbGen lightingDiffuse
2113 }
2114 }
2115 models/players/infantryss/acc/mp40beltsn
2116 {
2117 picmip2
2118 {
2119 map models/players/infantryss/acc/mp40beltsn.tga
2120 rgbGen lightingDiffuse
2121 }
2122 }
2123 models/players/infantryss/acc/radio
2124 {
2125 picmip2
2126 {
2127 map models/players/infantryss/acc/radio.tga
2128 rgbGen lightingDiffuse
2129 }
2130 }
2131 models/players/infantryss/acc/rockcap
2132 {
2133 picmip2
2134 {
2135 map models/players/infantryss/acc/rockcap.tga
2136 rgbGen lightingDiffuse
2137 }
2138 }
2139 models/players/infantryss/acc/rockhelmut
2140 {
2141 picmip2
2142 {
2143 map models/players/infantryss/acc/rockhelmut.tga
2144 rgbGen lightingDiffuse
2145 }
2146 }
2147 models/players/infantryss/acc/sfmcap
2148 {
2149 picmip2
2150 {
2151 map models/players/infantryss/acc/sfmcap.tga
2152 rgbGen lightingDiffuse
2153 }
2154 }
2155 models/players/infantryss/acc/sfmhelmut
2156 {
2157 picmip2
2158 {
2159 map models/players/infantryss/acc/sfmhelmut.tga
2160 rgbGen lightingDiffuse
2161 }
2162 }
2163 models/players/infantryss/acc/villcap
2164 {
2165 picmip2
2166 {
2167 map models/players/infantryss/acc/villcap.tga
2168 rgbGen lightingDiffuse
2169 }
2170 }
2171 models/players/infantryss/acc/xlabcap
2172 {
2173 picmip2
2174 {
2175 map models/players/infantryss/acc/xlabcap.tga
2176 rgbGen lightingDiffuse
2177 }
2178 }
2179 models/players/infantryss/acc/xlabhelmut
2180 {
2181 picmip2
2182 {
2183 map models/players/infantryss/acc/xlabhelmut.tga
2184 rgbGen lightingDiffuse
2185 }
2186 }
2187
2188
2189 ///inge///
2190 models/players/inge/ing_body1
2191 {
2192 picmip2
2193 cull twosided
2194 {
2195 map models/players/inge/ing_body1.tga
2196 rgbGen lightingDiffuse
2197 }
2198 }
2199 models/players/inge/ing_body2
2200 {
2201 picmip2
2202 cull twosided
2203 {
2204 map models/players/inge/ing_body2.tga
2205 rgbGen lightingDiffuse
2206 }
2207 }
2208 models/players/inge/ing_body3
2209 {
2210 picmip2
2211 cull twosided
2212 {
2213 map models/players/inge/ing_body3.tga
2214 rgbGen lightingDiffuse
2215 }
2216 }
2217 models/players/inge/ing_head1
2218 {
2219 picmip2
2220 {
2221 map models/players/inge/ing_head1.tga
2222 rgbGen lightingDiffuse
2223 }
2224 }
2225
2226 models/players/inge/ing_head2
2227 {
2228 picmip2
2229 {
2230 map models/players/inge/ing_head2.tga
2231 rgbGen lightingDiffuse
2232 }
2233 }
2234
2235 models/players/inge/ing_head2_blink
2236 {
2237 picmip2
2238 {
2239 map models/players/inge/ing_head2_blink.tga
2240 blendfunc blend
2241 rgbGen lightingDiffuse
2242 }
2243 }
2244 models/players/inge/ing_head1_blink
2245 {
2246 picmip2
2247
2248 {
2249 map models/players/inge/ing_head1_blink.tga
2250 blendfunc blend
2251 rgbGen lightingDiffuse
2252 }
2253 }
2254
2255 models/players/inge/ing_legs1
2256 {
2257 picmip2
2258 {
2259 map models/players/inge/ing_legs1.tga
2260 rgbGen lightingDiffuse
2261 }
2262 }
2263
2264 models/players/inge/ing_legs2
2265 {
2266 picmip2
2267 {
2268 map models/players/inge/ing_legs2.tga
2269 rgbGen lightingDiffuse
2270 }
2271 }
2272
2273
2274
2275 ////jack///
2276
2277 models/players/jack/jack_body1
2278 {
2279 picmip2
2280 {
2281 map models/players/jack/jack_body1.tga
2282 rgbGen lightingDiffuse
2283 }
2284 }
2285
2286 models/players/jack/jack_glasses
2287 {
2288 picmip2
2289 cull twosided
2290 sort 5
2291 {
2292 map models/players/jack/jack_glasses.tga
2293 blendfunc blend
2294 rgbGen lightingDiffuse
2295 }
2296 }
2297
2298 models/players/jack/jack_head1
2299 {
2300 picmip2
2301 {
2302 map models/players/jack/jack_head1.tga
2303 rgbGen lightingDiffuse
2304 }
2305 }
2306 models/players/jack/jack_head_blink
2307 {
2308 picmip2
2309
2310 {
2311 map models/players/jack/jack_head_blink.tga
2312 alphaFunc GE128
2313 rgbGen lightingDiffuse
2314 }
2315 }
2316
2317
2318 models/players/jack/jack_legs1
2319 {
2320 picmip2
2321 {
2322 map models/players/jack/jack_legs1.tga
2323 rgbGen lightingDiffuse
2324 }
2325 }
2326 ///loper//
2327
2328
2329 models/players/loper/elec1
2330 {
2331 picmip2
2332 cull twosided
2333 {
2334
2335 blendFunc add
2336 animMap 13 models/players/loper/elec1.tga models/players/loper/elec2.tga models/players/loper/elec3.tga
2337 rgbGen identity
2338
2339 }
2340
2341 }
2342
2343 models/players/loper/elec2
2344 {
2345 picmip2
2346 {
2347 map models/players/loper/elec2.tga
2348 rgbGen lightingDiffuse
2349 }
2350 }
2351
2352 models/players/loper/elec3
2353 {
2354 picmip2
2355 {
2356 map models/players/loper/elec3.tga
2357 rgbGen lightingDiffuse
2358 }
2359 }
2360
2361 models/players/loper/lop_body1
2362 {
2363 picmip2
2364 {
2365 map models/players/loper/lop_body1.tga
2366 rgbGen lightingDiffuse
2367 }
2368 }
2369 models/players/loper/lop_body2
2370 {
2371 picmip2
2372 {
2373 map models/players/loper/lop_body2.tga
2374 rgbGen lightingDiffuse
2375 }
2376 }
2377
2378 models/players/loper/lop_head1
2379 {
2380 picmip2
2381 cull twosided
2382 {
2383 map models/players/loper/lop_head1.tga
2384 alphaFunc GE128
2385 rgbGen lightingdiffuse
2386
2387 }
2388
2389 }
2390 models/players/loper/lop_head2
2391 {
2392 picmip2
2393 cull twosided
2394 {
2395 map models/players/loper/lop_head2.tga
2396 alphaFunc GE128
2397 rgbGen lightingdiffuse
2398
2399 }
2400
2401 }
2402
2403 models/players/loper/lop_lower1
2404 {
2405 picmip2
2406 {
2407 map models/players/loper/spark.tga
2408 tcmod rotate 350
2409 tcmod scale -1 -1
2410 blendFunc GL_ONE GL_ZERO
2411 rgbGen identity
2412 }
2413 {
2414 map models/players/loper/lop_lower1.tga
2415 blendFunc blend
2416 rgbGen lightingdiffuse
2417 }
2418 }
2419
2420 models/players/loper/spark
2421 {
2422 picmip2
2423 {
2424 map models/players/loper/spark.tga
2425 rgbGen lightingDiffuse
2426 }
2427 }
2428
2429 ////mechanic//
2430 models/players/mechanic/mech_body1
2431 {
2432 picmip2
2433 {
2434 map models/players/mechanic/mech_body1.tga
2435 rgbGen lightingDiffuse
2436 }
2437 }
2438 models/players/mechanic/mech_bodyswf1
2439 {
2440 picmip2
2441 {
2442 map models/players/mechanic/mech_bodyswf1.tga
2443 rgbGen lightingDiffuse
2444 }
2445 }
2446
2447 models/players/mechanic/mech_head1
2448 {
2449 picmip2
2450 {
2451 map models/players/mechanic/mech_head1.tga
2452 rgbGen lightingDiffuse
2453 }
2454 }
2455
2456 models/players/mechanic/mech_head_blink
2457 {
2458 picmip2
2459 {
2460 map models/players/mechanic/mech_head_blink.tga
2461 blendfunc blend
2462 rgbGen lightingDiffuse
2463 }
2464 }
2465
2466 models/players/mechanic/mech_head2
2467 {
2468 picmip2
2469 {
2470 map models/players/mechanic/mech_head2.tga
2471 rgbGen lightingDiffuse
2472 }
2473 }
2474
2475 models/players/mechanic/mech_head2_blink
2476 {
2477 picmip2
2478 {
2479 map models/players/mechanic/mech_head2_blink.tga
2480 rgbGen lightingDiffuse
2481 }
2482 }
2483
2484 models/players/mechanic/mech_head3
2485 {
2486 picmip2
2487 {
2488 map models/players/mechanic/mech_head3.tga
2489 rgbGen lightingDiffuse
2490 }
2491 }
2492
2493 models/players/mechanic/mech_head3_blink
2494 {
2495 picmip2
2496 {
2497 map models/players/mechanic/mech_head3_blink.tga
2498 blendfunc blend
2499 rgbGen lightingDiffuse
2500 }
2501 }
2502
2503 models/players/mechanic/mech_radio1
2504 {
2505 picmip2
2506 {
2507 map models/players/mechanic/mech_radio1.tga
2508 rgbGen lightingDiffuse
2509 }
2510 }
2511
2512 models/players/mechanic/mech_rockbody1
2513 {
2514 picmip2
2515 {
2516 map models/players/mechanic/mech_rockbody1.tga
2517 rgbGen lightingDiffuse
2518 }
2519 }
2520 models/players/mechanic/acc/cap
2521 {
2522 picmip2
2523 {
2524 map models/players/mechanic/acc/cap.tga
2525 rgbGen lightingDiffuse
2526 }
2527 }
2528 models/players/mechanic/acc/mech_cap1
2529 {
2530 picmip2
2531 {
2532 map models/players/mechanic/acc/mech_cap1.tga
2533 rgbGen lightingDiffuse
2534 }
2535 }
2536 models/players/mechanic/acc/radio
2537 {
2538 picmip2
2539 {
2540 map models/players/mechanic/acc/radio.tga
2541 rgbGen lightingDiffuse
2542 }
2543 }
2544
2545 ////multiplayer////
2546
2547 models/players/multi/body_upper_german
2548 {
2549 picmip2
2550 {
2551 map models/players/multi/body_upper_german.tga
2552 rgbGen lightingDiffuse
2553 }
2554 }
2555
2556 models/players/multi/head_german
2557 {
2558 picmip2
2559 {
2560 map models/players/multi/head_german.tga
2561 rgbGen lightingDiffuse
2562 }
2563 }
2564
2565 models/players/multi/legs_german
2566 {
2567 picmip2
2568 {
2569 map models/players/multi/legs_german.tga
2570 rgbGen lightingDiffuse
2571 }
2572 }
2573
2574 ///murphy////
2575 models/players/murphy/murp_body1
2576 {
2577 cull twosided
2578 picmip2
2579 {
2580 map models/players/murphy/murp_body1.tga
2581 rgbGen lightingDiffuse
2582 }
2583 }
2584
2585 models/players/murphy/murp_head1
2586 {
2587 picmip2
2588 {
2589 map models/players/murphy/murp_head1.tga
2590 rgbGen lightingDiffuse
2591 }
2592 }
2593
2594 models/players/murphy/murp_head_blink
2595 {
2596 picmip2
2597 {
2598 map models/players/murphy/murp_head_blink.tga
2599 // blendfunc blend
2600 alphaFunc GE128
2601 depthWrite
2602 rgbGen lightingDiffuse
2603 }
2604 }
2605
2606 models/players/murphy/murp_legs1
2607 {
2608 picmip2
2609 {
2610 map models/players/murphy/murp_legs1.tga
2611 rgbGen lightingDiffuse
2612 }
2613 }
2614 ///officerss///
2615
2616 models/players/officerss/o_body1
2617 {
2618 cull twosided
2619 picmip2
2620 {
2621 map models/players/officerss/o_body1.tga
2622 rgbGen lightingDiffuse
2623 }
2624 }
2625
2626 models/players/officerss/o_body2
2627 {
2628 picmip2
2629 {
2630 map models/players/officerss/o_body2.tga
2631 rgbGen lightingDiffuse
2632 }
2633 }
2634
2635 models/players/officerss/o_body3
2636 {
2637 picmip2
2638 {
2639 map models/players/officerss/o_body3.tga
2640 rgbGen lightingDiffuse
2641 }
2642 }
2643 models/players/officerss/o_body4
2644 {
2645 picmip2
2646 {
2647 map models/players/officerss/o_body4.tga
2648 rgbGen lightingDiffuse
2649 }
2650 }
2651 models/players/officerss/o_body5
2652 {
2653 picmip2
2654 {
2655 map models/players/officerss/o_body5.tga
2656 rgbGen lightingDiffuse
2657 }
2658 }
2659 models/players/officerss/o_body6
2660 {
2661 picmip2
2662 {
2663 map models/players/officerss/o_body6.tga
2664 rgbGen lightingDiffuse
2665 }
2666 }
2667 models/players/officerss/o_chatbody1
2668 {
2669 picmip2
2670 {
2671 map models/players/officerss/o_chatbody1.tga
2672 rgbGen lightingDiffuse
2673 }
2674 }
2675 models/players/officerss/o_chatbody2
2676 {
2677 picmip2
2678 {
2679 map models/players/officerss/o_chatbody2.tga
2680 rgbGen lightingDiffuse
2681 }
2682 }
2683 models/players/officerss/o_forbody1
2684 {
2685 picmip2
2686 {
2687 map models/players/officerss/o_forbody1.tga
2688 rgbGen lightingDiffuse
2689 }
2690 }
2691 models/players/officerss/o_forlegs1
2692 {
2693 picmip2
2694 {
2695 map models/players/officerss/o_forlegs1.tga
2696 rgbGen lightingDiffuse
2697 }
2698 }
2699
2700 models/players/officerss/o_head1
2701 {
2702 picmip2
2703 {
2704 map models/players/officerss/o_head1.tga
2705 rgbGen lightingDiffuse
2706 }
2707 }
2708
2709 models/players/officerss/o_head_blink
2710 {
2711 picmip2
2712 {
2713 map models/players/officerss/o_head_blink.tga
2714 alphaFunc GE128
2715 depthWrite
2716 rgbGen lightingDiffuse
2717 }
2718 }
2719
2720 models/players/officerss/o_head2
2721 {
2722 picmip2
2723 {
2724 map models/players/officerss/o_head2.tga
2725 rgbGen lightingDiffuse
2726 }
2727 }
2728 models/players/officerss/o_head3
2729 {
2730 picmip2
2731 {
2732 map models/players/officerss/o_head3.tga
2733 rgbGen lightingDiffuse
2734 }
2735 }
2736 models/players/officerss/o_head4
2737 {
2738 picmip2
2739 {
2740 map models/players/officerss/o_head4.tga
2741 rgbGen lightingDiffuse
2742 }
2743 }
2744 models/players/officerss/o_head5
2745 {
2746 picmip2
2747 {
2748 map models/players/officerss/o_head5.tga
2749 rgbGen lightingDiffuse
2750 }
2751 }
2752 models/players/officerss/o_head6
2753 {
2754 picmip2
2755 {
2756 map models/players/officerss/o_head6.tga
2757 rgbGen lightingDiffuse
2758 }
2759 }
2760 models/players/officerss/o_head7
2761 {
2762 picmip2
2763 {
2764 map models/players/officerss/o_head7.tga
2765 rgbGen lightingDiffuse
2766 }
2767 }
2768
2769 models/players/officerss/o_legs1
2770 {
2771 picmip2
2772 {
2773 map models/players/officerss/o_legs1.tga
2774 rgbGen lightingDiffuse
2775 }
2776 }
2777
2778 models/players/officerss/o_legs2
2779 {
2780 picmip2
2781 {
2782 map models/players/officerss/o_legs2.tga
2783 rgbGen lightingDiffuse
2784 }
2785 }
2786
2787 models/players/officerss/o_legs3
2788 {
2789 picmip2
2790 {
2791 map models/players/officerss/o_legs3.tga
2792 rgbGen lightingDiffuse
2793 }
2794 }
2795 models/players/officerss/o_legs4
2796 {
2797 picmip2
2798 {
2799 map models/players/officerss/o_legs4.tga
2800 rgbGen lightingDiffuse
2801 }
2802 }
2803 models/players/officerss/o_legs5
2804 {
2805 picmip2
2806 {
2807 map models/players/officerss/o_legs5.tga
2808 rgbGen lightingDiffuse
2809 }
2810 }
2811
2812 models/players/officerss/o_chatlegs1
2813 {
2814 picmip2
2815 {
2816 map models/players/officerss/o_chatlegs1.tga
2817 rgbGen lightingDiffuse
2818 }
2819 }
2820 models/players/officerss/acc/binoc
2821 {
2822 picmip2
2823 {
2824 map models/players/officerss/acc/binoc.tga
2825 rgbGen lightingDiffuse
2826 }
2827 }
2828 models/players/officerss/acc/cig
2829 {
2830 picmip2
2831 {
2832 map models/players/officerss/acc/cig.tga
2833 rgbGen lightingDiffuse
2834 }
2835 }
2836 models/players/officerss/acc/o_belt1
2837 {
2838 picmip2
2839 {
2840 map models/players/officerss/acc/o_belt1.tga
2841 rgbGen lightingDiffuse
2842 }
2843 }
2844 models/players/officerss/acc/o_cap1
2845 {
2846 picmip2
2847 {
2848 map models/players/officerss/acc/o_cap1.tga
2849 rgbGen lightingDiffuse
2850 }
2851 }
2852 models/players/officerss/acc/o_cap2
2853 {
2854 picmip2
2855 {
2856 map models/players/officerss/acc/o_cap2.tga
2857 rgbGen lightingDiffuse
2858 }
2859 }
2860 models/players/officerss/acc/o_cap3
2861 {
2862 picmip2
2863 {
2864 map models/players/officerss/acc/o_cap3.tga
2865 rgbGen lightingDiffuse
2866 }
2867 }
2868 models/players/officerss/acc/o_cap4
2869 {
2870 picmip2
2871 {
2872 map models/players/officerss/acc/o_cap4.tga
2873 rgbGen lightingDiffuse
2874 }
2875 }
2876 models/players/officerss/acc/o_cap5
2877 {
2878 picmip2
2879 {
2880 map models/players/officerss/acc/o_cap5.tga
2881 rgbGen lightingDiffuse
2882 }
2883 }
2884 models/players/officerss/acc/o_glass1
2885 {
2886 picmip2
2887 cull twosided
2888 {
2889 map models/players/officerss/acc/o_glass1.tga
2890 blendfunc blend
2891 rgbGen lightingDiffuse
2892 }
2893 }
2894
2895 ////partisan////
2896 models/players/partisan/prt_body1
2897 {
2898 picmip2
2899 {
2900 map models/players/partisan/prt_body1.tga
2901 rgbGen lightingDiffuse
2902 }
2903 }
2904 models/players/partisan/prt_body2
2905 {
2906 picmip2
2907 {
2908 map models/players/partisan/prt_body2.tga
2909 rgbGen lightingDiffuse
2910 }
2911 }
2912 models/players/partisan/prt_sfmbody1
2913 {
2914 picmip2
2915 {
2916 map models/players/partisan/prt_sfmbody1.tga
2917 rgbGen lightingDiffuse
2918 }
2919 }
2920 models/players/partisan/prt_sfmlegs1
2921 {
2922 picmip2
2923 {
2924 map models/players/partisan/prt_sfmlegs1.tga
2925 rgbGen lightingDiffuse
2926 }
2927 }
2928 models/players/partisan/prt_head1_blink
2929 {
2930 picmip2
2931 {
2932 map models/players/partisan/prt_head1_blink.tga
2933 alphaFunc GE128
2934 depthWrite
2935 rgbGen lightingDiffuse
2936 }
2937 }
2938 models/players/partisan/prt_head2_blink
2939 {
2940 picmip2
2941 {
2942 map models/players/partisan/prt_head2_blink.tga
2943 alphaFunc GE128
2944 depthWrite
2945 rgbGen lightingDiffuse
2946 }
2947 }
2948 models/players/partisan/prt_head3_blink
2949 {
2950 picmip2
2951 {
2952 map models/players/partisan/prt_head3_blink.tga
2953 alphaFunc GE128
2954 depthWrite
2955 rgbGen lightingDiffuse
2956 }
2957 }
2958 models/players/partisan/prt_head4_blink
2959 {
2960 picmip2
2961 {
2962 map models/players/partisan/prt_head4_blink.tga
2963 alphaFunc GE128
2964 depthWrite
2965 rgbGen lightingDiffuse
2966 }
2967 }
2968 models/players/partisan/prt_head5_blink
2969 {
2970 picmip2
2971 {
2972 map models/players/partisan/prt_head5_blink.tga
2973 alphaFunc GE128
2974 depthWrite
2975 rgbGen lightingDiffuse
2976 }
2977 }
2978
2979 models/players/partisan/prt_head1
2980 {
2981 picmip2
2982 {
2983 map models/players/partisan/prt_head1.tga
2984 rgbGen lightingDiffuse
2985 }
2986 }
2987 models/players/partisan/prt_head2
2988 {
2989 picmip2
2990 {
2991 map models/players/partisan/prt_head2.tga
2992 rgbGen lightingDiffuse
2993 }
2994 }
2995 models/players/partisan/prt_head3
2996 {
2997 picmip2
2998 {
2999 map models/players/partisan/prt_head3.tga
3000 rgbGen lightingDiffuse
3001 }
3002 }
3003 models/players/partisan/prt_head4
3004 {
3005 picmip2
3006 {
3007 map models/players/partisan/prt_head4.tga
3008 rgbGen lightingDiffuse
3009 }
3010 }
3011 models/players/partisan/prt_legs1
3012 {
3013 picmip2
3014 {
3015 map models/players/partisan/prt_legs1.tga
3016 rgbGen lightingDiffuse
3017 }
3018 }
3019 models/players/partisan/prt_legs2
3020 {
3021 picmip2
3022 {
3023 map models/players/partisan/prt_legs2.tga
3024 rgbGen lightingDiffuse
3025 }
3026 }
3027 models/players/partisan/acc/o_belt1
3028 {
3029 picmip2
3030 {
3031 map models/players/partisan/acc/o_belt1.tga
3032 rgbGen lightingDiffuse
3033 }
3034 }
3035 models/players/partisan/acc/pisbelt1
3036 {
3037 picmip2
3038 {
3039 map models/players/partisan/acc/pisbelt1.tga
3040 rgbGen lightingDiffuse
3041 }
3042 }
3043 models/players/partisan/acc/prt_bar1
3044 {
3045 picmip2
3046 {
3047 map models/players/partisan/acc/prt_bar1.tga
3048 rgbGen lightingDiffuse
3049 }
3050 }
3051 models/players/partisan/acc/prt_glasses
3052 {
3053 picmip2
3054 {
3055 map models/players/partisan/acc/prt_glasses.tga
3056 blendfunc blend
3057 rgbGen lightingDiffuse
3058 }
3059 }
3060 //priestess///
3061 models/players/priestess/ptess_body1
3062 {
3063 picmip2
3064 //cull twosided
3065
3066 {
3067 map models/players/priestess/ptess_body1.tga
3068 rgbGen lightingDiffuse
3069 }
3070 }
3071 models/players/priestess/ptess_cape
3072 {
3073 picmip2
3074
3075
3076 {
3077 map models/players/priestess/ptess_cape.tga
3078 rgbGen lightingDiffuse
3079 }
3080 }
3081 models/players/priestess/ptess_head1
3082 {
3083 picmip2
3084
3085
3086 {
3087 map models/players/priestess/ptess_head1.tga
3088 rgbGen lightingDiffuse
3089 }
3090 }
3091 models/players/priestess/ptess_head_blink
3092 {
3093 picmip2
3094
3095 {
3096 map models/players/priestess/ptess_head_blink.tga
3097 blendfunc blend
3098 rgbGen lightingDiffuse
3099 }
3100 }
3101
3102 //protosoldier//
3103 models/players/protosoldier/proto_armor1
3104 {
3105 picmip2
3106 cull twosided
3107
3108 {
3109 map models/players/protosoldier/proto_armor1.tga
3110 rgbGen lightingDiffuse
3111 }
3112 }
3113
3114 models/players/protosoldier/proto_body1
3115 {
3116 picmip2
3117 {
3118 map models/players/protosoldier/proto_body1.tga
3119 rgbGen lightingDiffuse
3120 }
3121 }
3122
3123 models/players/protosoldier/proto_extra
3124 {
3125 picmip2
3126 {
3127 map models/players/protosoldier/proto_extra.tga
3128 rgbGen lightingDiffuse
3129 }
3130 }
3131
3132 models/players/protosoldier/proto_head1
3133 {
3134 picmip2
3135 {
3136 map models/players/protosoldier/proto_head1.tga
3137 rgbGen lightingDiffuse
3138 }
3139 }
3140
3141 models/players/protosoldier/proto_legs1
3142 {
3143 picmip2
3144 {
3145 map models/players/protosoldier/proto_legs1.tga
3146 rgbGen lightingDiffuse
3147 }
3148 }
3149
3150 models/players/protosoldier/proto_stim1
3151 {
3152 picmip2
3153 {
3154 map models/players/protosoldier/proto_stim1.tga
3155 rgbGen lightingDiffuse
3156 }
3157 }
3158 ///supersoldier////
3159 models/players/supersoldier/sup_armor1
3160 {
3161 picmip2
3162 cull twosided
3163
3164
3165 {
3166 map models/players/supersoldier/sup_armor1.tga
3167 rgbGen lightingDiffuse
3168 }
3169 }
3170
3171 models/players/supersoldier/sup_body1
3172 {
3173 picmip2
3174 {
3175 map textures/effects/regenmap3.tga
3176 rgbGen identity
3177 tcMod rotate 360
3178 tcMod scroll 1 0
3179 }
3180
3181 {
3182 map models/players/supersoldier/sup_body1.tga
3183 blendfunc blend
3184 rgbGen lightingDiffuse
3185 }
3186 }
3187
3188 models/players/supersoldier/sup_extra
3189 {
3190 picmip2
3191 {
3192 map models/players/supersoldier/sup_extra.tga
3193 rgbGen lightingDiffuse
3194 }
3195 }
3196
3197 models/players/supersoldier/sup_head1
3198 {
3199 picmip2
3200 {
3201 map models/players/supersoldier/sup_head1.tga
3202 rgbGen lightingDiffuse
3203 }
3204 }
3205
3206 models/players/supersoldier/sup_helmut1
3207 {
3208 picmip2
3209 cull twosided
3210 {
3211 map models/players/supersoldier/sup_helmut1.tga
3212 rgbGen lightingDiffuse
3213 }
3214 }
3215 models/players/supersoldier/goo1
3216 {
3217 picmip2
3218
3219 {
3220 map models/players/supersoldier/goo1.tga
3221 rgbGen lightingDiffuse
3222 }
3223 }
3224
3225 models/players/supersoldier/sup_legs1
3226 {
3227 picmip2
3228 {
3229 map textures/effects/regenmap3.tga
3230 rgbGen identity
3231 tcMod rotate 360
3232 tcMod scroll 1 0
3233 }
3234
3235
3236 {
3237 map models/players/supersoldier/sup_legs1.tga
3238 blendFunc blend
3239 rgbGen lightingDiffuse
3240 }
3241 }
3242
3243 models/players/supersoldier/sup_stim1
3244 {
3245 picmip2
3246 {
3247 map models/players/supersoldier/goo1.tga
3248 rgbGen identity
3249 //tcMod rotate 360
3250 tcMod scroll 1 0
3251 }
3252
3253
3254 {
3255 map models/players/supersoldier/sup_stim1.tga
3256 blendFunc blend
3257 rgbGen lightingDiffuse
3258 }
3259 }
3260 models/players/supersoldier/wzom_ghost1
3261 {
3262 picmip2
3263 {
3264 map models/players/supersoldier/wzom_ghost1.tga
3265 blendFunc blend
3266 rgbGen lightingDiffuse
3267 }
3268 }
3269 models/players/supersoldier/wzom_ghost2
3270 {
3271 picmip2
3272 {
3273 map models/players/supersoldier/wzom_ghost2.tga
3274 blendFunc blend
3275 rgbGen lightingDiffuse
3276 }
3277 }
3278 models/players/supersoldier/wzom_ghost3
3279 {
3280 picmip2
3281 {
3282 map models/players/supersoldier/wzom_ghost3.tga
3283 blendFunc blend
3284 rgbGen lightingDiffuse
3285 }
3286 }
3287
3288 ///trench///
3289
3290
3291 models/players/trench/t_body1
3292 {
3293 picmip2
3294 cull twosided
3295 {
3296 map models/players/trench/t_body1.tga
3297 rgbGen lightingDiffuse
3298 }
3299 }
3300 models/players/trench/t_body2
3301 {
3302 picmip2
3303 cull twosided
3304 {
3305 map models/players/trench/t_body2.tga
3306 rgbGen lightingDiffuse
3307 }
3308 }
3309 models/players/trench/t_body3
3310 {
3311 picmip2
3312 cull twosided
3313 {
3314 map models/players/trench/t_body3.tga
3315 rgbGen lightingDiffuse
3316 }
3317 }
3318
3319 models/players/trench/t_legs1
3320 {
3321 picmip2
3322 {
3323 map models/players/trench/t_legs1.tga
3324 rgbGen lightingDiffuse
3325 }
3326 }
3327 models/players/trench/t_legs2
3328 {
3329 picmip2
3330 {
3331 map models/players/trench/t_legs2.tga
3332 rgbGen lightingDiffuse
3333 }
3334 }
3335 models/players/trench/acc/ammo1
3336 {
3337 picmip2
3338 {
3339 map models/players/trench/acc/ammo1.tga
3340 rgbGen lightingDiffuse
3341 }
3342 }
3343 models/players/trench/acc/cap
3344 {
3345 picmip2
3346 {
3347 map models/players/trench/acc/cap.tga
3348 rgbGen lightingDiffuse
3349 }
3350 }
3351 models/players/trench/acc/fieldkit
3352 {
3353 picmip2
3354 {
3355 map models/players/trench/acc/fieldkit.tga
3356 rgbGen lightingDiffuse
3357 }
3358 }
3359 models/players/trench/acc/i_helmut1
3360 {
3361 picmip2
3362 {
3363 map models/players/trench/acc/i_helmut1.tga
3364 rgbGen lightingDiffuse
3365 }
3366 }
3367 models/players/trench/acc/i_helmut2
3368 {
3369 picmip2
3370 {
3371 map models/players/trench/acc/i_helmut2.tga
3372 rgbGen lightingDiffuse
3373 }
3374 }
3375 models/players/trench/acc/i_helmut3
3376 {
3377 picmip2
3378 {
3379 map models/players/trench/acc/i_helmut3.tga
3380 rgbGen lightingDiffuse
3381 }
3382 }
3383 models/players/trench/acc/mp40belt
3384 {
3385 picmip2
3386 {
3387 map models/players/trench/acc/mp40belt.tga
3388 rgbGen lightingDiffuse
3389 }
3390 }
3391 models/players/trench/acc/o_cap3
3392 {
3393 picmip2
3394 {
3395 map models/players/trench/acc/o_cap3.tga
3396 rgbGen lightingDiffuse
3397 }
3398 }
3399
3400 ///venom//
3401 models/players/venom/vi_head
3402 {
3403 picmip2
3404 {
3405 map models/players/venom/vi_head.tga
3406 rgbGen lightingDiffuse
3407 }
3408 }
3409
3410 models/players/venom/v_body1
3411 {
3412 picmip2
3413 cull twosided
3414 {
3415 map models/players/venom/v_body1.tga
3416 rgbGen lightingDiffuse
3417 }
3418 }
3419 models/players/venom/v_bodysn1
3420 {
3421 picmip2
3422 cull twosided
3423 {
3424 map models/players/venom/v_bodysn1.tga
3425 rgbGen lightingDiffuse
3426 }
3427 }
3428 models/players/venom/v_facbody1
3429 {
3430 picmip2
3431 cull twosided
3432 {
3433 map models/players/venom/v_facbody1.tga
3434 rgbGen lightingDiffuse
3435 }
3436 }
3437
3438 models/players/venom/v_glassn1
3439 {
3440 picmip2
3441 sort 5
3442 {
3443 map models/players/venom/v_glassn1.tga
3444 blendfunc blend
3445 rgbGen lightingDiffuse
3446 }
3447 }
3448
3449 models/players/venom/v_glass
3450 {
3451 picmip2
3452 sort 5
3453 {
3454 map models/players/venom/v_glass.tga
3455 blendfunc blend
3456 rgbGen lightingDiffuse
3457 }
3458 }
3459
3460 models/players/venom/v_head1
3461 {
3462 picmip2
3463 {
3464 map models/players/venom/v_head1.tga
3465 rgbGen lightingDiffuse
3466 }
3467 }
3468 models/players/venom/v_fachead1
3469 {
3470 picmip2
3471 {
3472 map models/players/venom/v_fachead1.tga
3473 rgbGen lightingDiffuse
3474 }
3475 }
3476
3477 models/players/venom/v_legs1
3478 {
3479 picmip2
3480 {
3481 map models/players/venom/v_legs1.tga
3482 rgbGen lightingDiffuse
3483 }
3484 }
3485 models/players/venom/v_legssn1
3486 {
3487 picmip2
3488 {
3489 map models/players/venom/v_legssn1.tga
3490 rgbGen lightingDiffuse
3491 }
3492 }
3493 models/players/venom/acc/v_bp
3494 {
3495 picmip2
3496 {
3497 map models/players/venom/acc/v_bp.tga
3498 rgbGen lightingDiffuse
3499 }
3500 }
3501 models/players/venom/acc/v_bpsn1
3502 {
3503 picmip2
3504 {
3505 map models/players/venom/acc/v_bpsn1.tga
3506 rgbGen lightingDiffuse
3507 }
3508 }
3509
3510 ///warrior//
3511 models/players/warrior/armor1
3512 {
3513 picmip2
3514 cull twosided
3515 {
3516 map models/players/warrior/armor1.tga
3517 rgbGen lightingDiffuse
3518 }
3519 }
3520 models/players/warrior/armor2
3521 {
3522 picmip2
3523 cull twosided
3524 {
3525 map models/players/warrior/armor2.tga
3526 rgbGen lightingDiffuse
3527 }
3528 }
3529 models/players/warrior/armor3
3530 {
3531 picmip2
3532 cull twosided
3533 {
3534 map models/players/warrior/armor3.tga
3535 rgbGen lightingDiffuse
3536 }
3537 }
3538
3539 models/players/warrior/acc/wzom_helm1
3540
3541 {
3542 picmip2
3543 cull twosided
3544
3545 {
3546 map models/players/warrior/acc/wzom_helm1.tga
3547 alphaFunc GE128
3548 depthWrite
3549 rgbGen lightingdiffuse
3550 }
3551 }
3552 models/players/warrior/acc/wzom_helm2
3553
3554 {
3555 picmip2
3556 cull twosided
3557
3558 {
3559 map models/players/warrior/acc/wzom_helm2.tga
3560 alphaFunc GE128
3561 depthWrite
3562 rgbGen lightingdiffuse
3563 }
3564 }
3565
3566
3567 models/players/warrior/glow
3568 {
3569 picmip2
3570 {
3571 map models/players/warrior/glow.tga
3572 rgbGen lightingDiffuse
3573 }
3574 }
3575
3576 models/players/warrior/wzom_body1
3577 {
3578 picmip2
3579 {
3580 map models/players/warrior/wzom_body1.tga
3581 alphaFunc GE128
3582 depthWrite
3583 rgbGen lightingDiffuse
3584 }
3585 }
3586 models/players/warrior/wzom_body2
3587 {
3588 picmip2
3589 {
3590 map models/players/warrior/wzom_body2.tga
3591 alphaFunc GE128
3592 depthWrite
3593 rgbGen lightingDiffuse
3594 }
3595 }
3596 models/players/warrior/wzom_body3
3597 {
3598 picmip2
3599 {
3600 map models/players/warrior/wzom_body3.tga
3601 alphaFunc GE128
3602 depthWrite
3603 rgbGen lightingDiffuse
3604 }
3605 }
3606
3607 models/players/warrior/wzom_head1
3608 {
3609 picmip2
3610 // sort 5
3611 {
3612 map models/players/warrior/glow.tga
3613 tcmod rotate 350
3614 tcmod scale -1 -1
3615 blendFunc GL_ONE GL_ZERO
3616 // rgbGen identity
3617 rgbGen wave sin 1 0.5 0 0.5
3618 }
3619
3620 {
3621 map models/players/warrior/wzom_head1.tga
3622 blendfunc blend
3623 rgbGen lightingdiffuse
3624 }
3625 }
3626 models/players/warrior/wzom_head2
3627 {
3628 picmip2
3629 // sort 5
3630 {
3631 map models/players/warrior/glow.tga
3632 tcmod rotate 350
3633 tcmod scale -1 -1
3634 blendFunc GL_ONE GL_ZERO
3635 // rgbGen identity
3636 rgbGen wave sin 1 0.5 0 0.5
3637 }
3638 {
3639 map models/players/warrior/wzom_head2.tga
3640 blendfunc blend
3641 rgbGen lightingdiffuse
3642 }
3643 }
3644 models/players/warrior/wzom_head3
3645 {
3646 picmip2
3647
3648 {
3649 map models/players/warrior/wzom_head3.tga
3650 // blendfunc blend
3651 rgbGen lightingdiffuse
3652 }
3653 }
3654
3655 ///zemph///
3656 models/players/zemph/drz_head4
3657 {
3658 picmip2
3659 {
3660 map models/players/zemph/drz_head4.tga
3661 rgbGen lightingDiffuse
3662 }
3663 }
3664
3665 models/players/zemph/drz_xbody1
3666 {
3667 picmip2
3668 {
3669 map models/players/zemph/drz_xbody1.tga
3670 rgbGen lightingDiffuse
3671 }
3672 }
3673 models/players/zemph/drz_xlegs1
3674 {
3675 picmip2
3676 {
3677 map models/players/zemph/drz_xlegs1.tga
3678 rgbGen lightingDiffuse
3679 }
3680 }
3681
3682
3683 ///zombie///
3684 models/players/zombie/zom_body1
3685 {
3686 picmip2
3687 {
3688 map models/players/zombie/zom_body1.tga
3689 rgbGen lightingDiffuse
3690 }
3691 }
3692 models/players/zombie/zom_body2
3693 {
3694 picmip2
3695 {
3696 map models/players/zombie/zom_body2.tga
3697 rgbGen lightingDiffuse
3698 }
3699 }
3700 models/players/zombie/zom_body3
3701 {
3702 picmip2
3703 {
3704 map models/players/zombie/zom_body3.tga
3705 rgbGen lightingDiffuse
3706 }
3707 }
3708 models/players/zombie/zom_body4
3709 {
3710 picmip2
3711 {
3712 map models/players/zombie/zom_body4.tga
3713 rgbGen lightingDiffuse
3714 }
3715 }
3716 models/players/zombie/zom_body5
3717 {
3718 picmip2
3719 {
3720 map models/players/zombie/zom_body5.tga
3721 rgbGen lightingDiffuse
3722 }
3723 }
3724
3725 models/players/zombie/zom_body6
3726 {
3727 picmip2
3728 cull twosided
3729 {
3730 map models/players/zombie/zom_body6.tga
3731 alphaFunc GE128
3732 depthWrite
3733 rgbGen lightingDiffuse
3734 }
3735 }
3736
3737 models/players/zombie/zom_head1
3738 {
3739 picmip2
3740 {
3741 map models/players/zombie/zom_head1.tga
3742 rgbGen lightingDiffuse
3743 }
3744 }
3745 models/players/zombie/zom_head2
3746 {
3747 picmip2
3748 {
3749 map models/players/zombie/zom_head2.tga
3750 rgbGen lightingDiffuse
3751 }
3752 }
3753 models/players/zombie/zom_head3
3754 {
3755 picmip2
3756 {
3757 map models/players/zombie/zom_head3.tga
3758 rgbGen lightingDiffuse
3759 }
3760 }
3761 models/players/zombie/zom_head4
3762 {
3763 picmip2
3764 {
3765 map models/players/zombie/zom_head4.tga
3766 rgbGen lightingDiffuse
3767 }
3768 }
3769 models/players/zombie/zom_head5
3770 {
3771 picmip2
3772 {
3773 map models/players/zombie/zom_head5.tga
3774 rgbGen lightingDiffuse
3775 }
3776 }
3777
3778 models/players/zombie/zom_head6
3779 {
3780 picmip2
3781 cull twosided
3782 //sort 5
3783
3784 {
3785 map models/players/zombie/fire.tga
3786 rgbGen identity
3787 tcMod scroll 0 1
3788 }
3789 {
3790 map models/players/zombie/zom_head6.tga
3791 blendfunc blend
3792 rgbGen lightingdiffuse
3793 }
3794 }
3795
3796 models/players/zombie/zom_hair
3797 {
3798 picmip2
3799 cull twosided
3800 //sort 5
3801 {
3802 map models/players/zombie/zom_hair.tga
3803 alphaFunc GE128
3804 depthWrite
3805 rgbGen lightingDiffuse
3806 }
3807 }
3808 //models/players/zombie/acc/zom_hair
3809 //{
3810 // picmip2
3811 // cull twosided
3812 // {
3813 // map models/players/zombie/acc/zom_hair.tga
3814 /// alphaFunc GE128
3815 // depthWrite
3816 /// rgbGen lightingDiffuse
3817 // }
3818 //}
3819
3820 ///beast///
3821
3822
3823 models/players/beast/mouth
3824 {
3825
3826 picmip2
3827 //deformVertexes wave 30 sin 0 .8 0 .3
3828 //cull twosided
3829 {
3830 map models/players/beast/fire.tga
3831 rgbGen identity
3832 tcMod scroll 0 1
3833 }
3834
3835 {
3836 map models/players/beast/mouth.tga
3837 blendfunc blend
3838 rgbGen lightingdiffuse
3839 }
3840 }
3841 models/players/beast/skulls2
3842 {
3843 picmip2
3844 deformVertexes wave 30 sin 0 .8 0 .3
3845
3846
3847 cull twosided
3848 {
3849 map models/players/beast/fire.tga
3850 rgbGen identity
3851 tcMod scroll 0 1
3852 }
3853
3854 {
3855 map models/players/beast/skulls2.tga
3856 blendfunc blend
3857 rgbGen lightingdiffuse
3858 }
3859 }
3860 models/players/beast/bes_body1
3861 {
3862 picmip2
3863 //deformVertexes wave 30 sin 0 .8 0 .3
3864 //deformVertexes wave 30 sin 0 1 0 .3
3865 //deformVertexes wave 194 sin 0 1 0 .4
3866
3867 cull twosided
3868 {
3869 map models/players/beast/bes_body1.tga
3870 alphaFunc GE128
3871 depthWrite
3872 rgbGen lightingdiffuse
3873 }
3874 }
3875
3876
3877
3878 /////////// have a nice day /////////////////
0 // this file contains shaders attached models
1 //
2 models/mapobjects/test/table
3 {
4 {
5 map models/mapobjects/deadosa/elec1.tga
6 // blendFunc GL_ONE GL_ZERO
7 // rgbGen lightingdiffuse
8 // tcGen environment
9 tcMod scale 2 2
10 tcMod scroll 2 2
11 }
12 {
13 map models/mapobjects/deadosa/table.tga
14 blendfunc blend
15 rgbGen vertex
16 }
17 }
18 textures/props/table
19 {
20 cull twosided
21 {
22 map models/mapobjects/deadosa/elec1.tga
23 // blendFunc GL_ONE GL_ZERO
24 // rgbGen lightingdiffuse
25 // tcGen environment
26 tcMod scale 2 2
27 tcMod scroll 2 2
28 }
29 {
30 map textures/props/table.tga
31 blendfunc blend
32 rgbGen vertex
33 }
34 }
35
36
37
38 models/mapobjects/ironmaiden/eyes1
39 {
40 // cull twosided
41 {
42 // blendFunc blend
43 // blendFunc add
44 AnimMap 1 models/mapobjects/ironmaiden/eyes1.tga models/mapobjects/ironmaiden/eyes2.tga models/mapobjects/ironmaiden/eyes3.tga models/mapobjects/ironmaiden/eyes4.tga
45 // rgbGen wave sin 1 .6 0 .5
46 rgbGen vertex
47 }
48 }
49 models/mapobjects/vacum/mouth
50 {
51 //deformVertexes wave 30 sin 0 .8 0 .3
52
53
54 //cull twosided
55 {
56 map models/mapobjects/vacum/fire.tga
57 rgbGen identity
58 tcMod scroll 0 1
59 }
60
61 {
62 map models/mapobjects/vacum/mouth.tga
63 blendfunc blend
64 rgbGen vertex
65 }
66 }
67 models/mapobjects/vacum/skulls2
68 {
69 deformVertexes wave 30 sin 0 .8 0 .3
70
71
72 cull twosided
73 {
74 map models/mapobjects/vacum/fire.tga
75 rgbGen identity
76 tcMod scroll 0 1
77 }
78
79 {
80 map models/mapobjects/vacum/skulls2.tga
81 blendfunc blend
82 rgbGen vertex
83 }
84 }
85
86 models/mapobjects/vacum/zom_body1
87 {
88 cull twosided
89 {
90 map models/mapobjects/vacum/zom_body1.tga
91 alphaFunc GE128
92 depthWrite
93 rgbGen lightingdiffuse
94 }
95 }
96 models/mapobjects/vacum/zom_helm1
97 {
98 cull twosided
99 {
100 map models/mapobjects/vacum/zom_helm1.tga
101 alphaFunc GE128
102 depthWrite
103 rgbGen lightingdiffuse
104 }
105 }
106 models/mapobjects/vacum/armor1
107 {
108 cull twosided
109 {
110 map models/mapobjects/vacum/armor1.tga
111 rgbGen lightingdiffuse
112 }
113 }
114
115 models\mapobjects\vacum\vac_goo
116 {
117 cull twosided
118 {
119 map models/mapobjects/vacum/vac_goo.tga
120 rgbGen lightingdiffuse
121 }
122 }
123
124
125 models\mapobjects\vacum\vac_body
126 {
127 cull twosided
128 {
129 map models/mapobjects/vacum/vac_body.tga
130 rgbGen lightingdiffuse
131 }
132 }
133 models/mapobjects/vacum/shad
134 {
135 // cull twosided
136 {
137 map models/mapobjects/vacum/shad.tga
138 blendfunc blend
139 rgbGen lightingdiffuse
140 }
141 }
142
143 models\mapobjects\vacum\vac_glass
144 {
145 cull twosided
146 {
147 map models/mapobjects/vacum/vac_glass.tga
148 blendfunc blend
149 rgbGen lightingdiffuse
150 }
151 }
152
153 models/mapobjects/apoth/glass
154 {
155 {
156 map models/mapobjects/apoth/glass.tga
157 blendfunc blend
158 rgbGen vertex
159 }
160 }
161
162 models\mapobjects\curtain\curtain
163 {
164
165 {
166 map models/mapobjects/curtain/curtain.tga
167 blendfunc blend
168 rgbGen lightingdiffuse
169 }
170 }
171
172 models\mapobjects\parachute\para
173 {
174 cull twosided
175 {
176 map models/mapobjects/parachute/para.tga
177 alphaFunc GE128
178 depthWrite
179 rgbGen lightingdiffuse
180 }
181 }
182 models/mapobjects/test/gown
183 {
184 cull twosided
185 nomipmaps
186 {
187 map models/mapobjects/test/gown.tga
188 alphaFunc GE128
189 depthWrite
190 rgbGen lightingdiffuse
191 }
192 }
193 models/mapobjects/test/ptess_head
194 {
195 cull twosided
196
197 {
198 map models/mapobjects/test/ptess_head.tga
199 rgbGen vertex
200 }
201 }
202
203 models\mapobjects\bush\bush
204 {
205 cull twosided
206 {
207 map models/mapobjects/bush/bush.tga
208 alphaFunc GE128
209 depthWrite
210 rgbGen vertex
211 }
212 }
213
214 models/players/murphy/murp_body1
215 {
216 cull twosided
217
218 {
219 map models/players/murphy/murp_body1.tga
220 rgbGen lightingdiffuse
221 }
222 }
223
224 models/players/higgs/higg_body1
225 {
226 cull twosided
227
228 {
229 map models/players/higgs/higg_body1.tga
230 rgbGen lightingdiffuse
231 }
232 }
233
234
235
236 models/players/inge/inge_body1
237 {
238 cull twosided
239
240 {
241 map models/players/inge/inge_body1.tga
242 rgbGen lightingdiffuse
243 }
244 }
245 models/players/inge/inge_body2
246 {
247 cull twosided
248
249 {
250 map models/players/inge/inge_body2.tga
251 rgbGen lightingdiffuse
252 }
253 }
254 models/players/inge/inge_body3
255 {
256 cull twosided
257
258 {
259 map models/players/inge/inge_body3.tga
260 rgbGen lightingdiffuse
261 }
262 }
263 models/players/officerss/acc/o_glass1
264 {
265 cull twosided
266
267 {
268 map models/players/officerss/acc/o_glass1.tga
269 blendfunc blend
270 rgbGen lightingdiffuse
271 }
272 }
273 models/players/director/dir_glasses
274 {
275 cull twosided
276
277 {
278 map models/players/director/dir_glasses.tga
279 blendfunc blend
280 rgbGen lightingdiffuse
281 }
282 }
283
284 models/players/director/dir_body1
285 {
286 cull twosided
287
288 {
289 map models/players/director/dir_body1.tga
290 rgbGen lightingdiffuse
291 }
292 }
293
294 models/players/hans/fi_head1
295 {
296 cull twosided
297
298 {
299 map models/players/hans/fi_head1.tga
300 alphaFunc GE128
301 depthWrite
302 rgbGen lightingdiffuse
303
304 }
305 }
306 models/players/hans/fi_head1_blink
307 {
308 cull twosided
309
310 {
311 map models/players/hans/fi_head1_blink.tga
312 alphaFunc GE128
313 depthWrite
314 rgbGen lightingdiffuse
315
316 }
317 }
318
319 models/players/hans/acc/mustac
320 {
321 cull twosided
322
323 {
324 map models/players/hans/acc/mustac.tga
325 blendfunc blend
326 rgbGen lightingdiffuse
327
328 }
329 }
330
331 models/players/partisan/acc/prt_glasses
332 {
333 cull twosided
334
335 {
336 map models/players/partisan/acc/prt_glasses.tga
337 blendfunc blend
338 rgbGen lightingdiffuse
339 }
340 }
341
342 models/players/partisan/acc/prt_bar1
343 {
344 cull twosided
345
346 {
347 map models/players/partisan/acc/prt_bar1.tga
348
349 rgbGen lightingdiffuse
350 }
351 }
352
353
354 models/players/jack/jack_glasses
355 {
356 cull twosided
357
358 {
359 map models/players/jack/jack_glasses.tga
360 blendfunc blend
361 rgbGen lightingdiffuse
362 }
363 }
364 models/players/jack/jack_body1
365 {
366 cull twosided
367
368 {
369 map models/players/jack/jack_body1.tga
370 rgbGen lightingdiffuse
371 }
372 }
373
374
375 models/players/eliteguard/betty_body1
376 {
377
378 {
379 map models/players/eliteguard/betty_body1.tga
380 alphaFunc GE128
381 depthWrite
382 rgbGen lightingdiffuse
383 }
384 }
385 models/players/eliteguard/betty_head1
386 {
387 cull twosided
388 {
389 map models/players/eliteguard/betty_head1.tga
390 alphaFunc GE128
391 depthWrite
392 rgbGen lightingdiffuse
393 }
394 }
395
396 models/players/protosoldier/proto_body1
397 {
398 cull twosided
399 {
400 map models/players/protosoldier/proto_body1.tga
401 alphaFunc GE128
402 depthWrite
403 rgbGen lightingdiffuse
404 }
405 }
406 models/players/protosoldier/proto_legs1
407 {
408 cull twosided
409 {
410 map models/players/protosoldier/proto_legs1.tga
411 alphaFunc GE128
412 depthWrite
413 rgbGen lightingdiffuse
414 }
415 }
416 ////infantryss///
417
418 models/players/infantryss/acc/helgrass
419 {
420 cull twosided
421 {
422 map models/players/infantryss/acc/helgrass.tga
423 alphaFunc GE128
424 depthWrite
425 // blendfunc blend
426 rgbGen lightingdiffuse
427 }
428 }
429
430 models/players/infantryss/i_body1
431 {
432 cull twosided
433 {
434 map models/players/infantryss/i_body1.tga
435 rgbGen lightingdiffuse
436 }
437 }
438 models/players/officerss/o_body1
439 {
440 cull twosided
441 {
442 map models/players/officerss/o_body1.tga
443 rgbGen lightingdiffuse
444 }
445 }
446
447 models\mapobjects\parachute\para2
448 {
449 cull twosided
450 {
451 map models/mapobjects/parachute/para2.tga
452 alphaFunc GE128
453 depthWrite
454 rgbGen lightingdiffuse
455 }
456 }
457
458 models/mapobjects/test/eg_body1
459 {
460 cull twosided
461 {
462 map models/mapobjects/test/eg_body1.tga
463 alphaFunc GE128
464 depthWrite
465 rgbGen vertex
466 }
467 }
468
469 models/mapobjects/test/x
470 {
471 cull twosided
472 {
473 map models/mapobjects/test/x.tga
474 alphaFunc GE128
475 depthWrite
476 rgbGen vertex
477 }
478 }
479
480
481 models/mapobjects/test/v_body1
482 {
483 cull twosided
484 {
485 map models/mapobjects/test/v_body1.tga
486 rgbGen vertex
487 }
488 }
489
490 models/players/venom/v_body1
491 {
492 cull twosided
493 {
494 map models/players/venom/v_body1.tga
495 rgbGen lightingdiffuse
496 }
497 }
498
499 models/mapobjects/test/v_glass
500 {
501 cull twosided
502 {
503 map models/mapobjects/test/v_glass.tga
504 blendfunc blend
505 // rgbGen lightingdiffuse
506 }
507 }
508 models/players/venom/v_glass
509 {
510 // cull twosided
511 sort 5
512 {
513 map models/players/venom/v_glass.tga
514 blendfunc blend
515 rgbGen lightingdiffuse
516 }
517 }
518
519 models/mapobjects/test/bg_glass
520 {
521 cull twosided
522 {
523 map models/mapobjects/test/bg_glass.tga
524 blendfunc blend
525 // rgbGen lightingdiffuse
526 }
527 }
528 models/players/blackguard/acc/bg_glass
529 {
530 // cull twosided
531 sort 5
532 {
533 map models/players/blackguard/acc/bg_glass.tga
534 blendfunc blend
535 rgbGen lightingdiffuse
536 }
537 }
538
539 models\mapobjects\curtain\2curtains
540 {
541 cull twosided
542 {
543 map models/mapobjects/curtain/2curtains.tga
544 blendfunc blend
545 rgbGen lightingdiffuse
546 }
547 }
548
549 models\mapobjects\curtain\2curtainsb
550 {
551 cull twosided
552 {
553 map models/mapobjects/curtain/2curtainsb.tga
554 blendfunc blend
555 rgbGen lightingdiffuse
556 }
557 }
558
559
560
561 models\mapobjects\curtain\curtain_200
562 {
563 cull twosided
564
565 {
566 map models/mapobjects/curtain/curtain_200.tga
567 rgbGen lightingdiffuse
568 }
569 }
570
571 models\mapobjects\flag\flag1
572 {
573 cull twosided
574 {
575 map models/mapobjects/flag/flag1.tga
576 rgbGen lightingdiffuse
577 }
578 }
579
580 models\mapobjects\flag\flag1a
581 {
582 cull twosided
583 {
584 map models/mapobjects/flag/flag1a.tga
585 rgbGen lightingdiffuse
586 }
587 }
588
589 models\mapobjects\flag\flag1b
590 {
591 cull twosided
592 {
593 map models/mapobjects/flag/flag1b.tga
594 blendfunc blend
595 rgbGen lightingdiffuse
596 }
597 }
598
599 models\mapobjects\flag\american
600 {
601 cull twosided
602 {
603 map models/mapobjects/flag/american.tga
604 rgbGen lightingdiffuse
605 }
606 }
607 models\mapobjects\flag\flag1_escape
608 {
609 cull twosided
610 {
611 map models/mapobjects/flag/flag1_escape.tga
612 rgbGen identity
613 }
614 }
615
616 models\mapobjects\flag\bannerflag
617 {
618 cull twosided
619 {
620 map models\mapobjects\flag\bannerflag.tga
621 rgbGen lightingdiffuse
622 }
623 }
624
625 models\mapobjects\flag\british
626 {
627 cull twosided
628 {
629 map models\mapobjects\flag\british.tga
630 blendfunc blend
631 rgbGen lightingdiffuse
632 }
633 }
634
635
636 models/mapobjects/torture/glass
637 {
638
639 //{
640 // map textures/effects/tinfx.tga
641 // blendfunc blend
642 // rgbGen lightingdiffuse
643 // tcGen environment
644 //}
645 {
646 map models/mapobjects/test3/c_water2.tga
647 blendFunc GL_dst_color GL_one
648 rgbgen identity
649 tcmod scale 1 1
650 tcmod scroll .05 .05
651 }
652
653
654 {
655 map models/mapobjects/torture/glass.tga
656 blendfunc blend
657 tcmod scale 1 1
658 rgbGen identity
659 }
660
661 }
662
663 models/mapobjects/torture/water
664 {
665
666 {
667 map models/mapobjects/torture/water.tga
668 // blendFunc GL_dst_color GL_one
669 // rgbgen identity
670 blendfunc blend
671 tcmod scale 3 3
672 rgbGen vertex
673 }
674
675 }
676
677 models/mapobjects/torture/brain
678 {
679
680 {
681 map models/mapobjects/torture/brain.tga
682 // blendFunc GL_dst_color GL_one
683 rgbgen identity
684 // blendfunc blend
685 // rgbGen vertex
686 }
687
688 }
689
690
691
692
693
694 models/mapobjects/bodyparts/i_body1
695 {
696 cull twosided
697
698 {
699 map models/mapobjects/bodyparts/i_body1.tga
700 rgbGen vertex
701 }
702 }
703
704
705 models/mapobjects/knight/knt3
706 {
707 {
708 map textures/effects/tinfx.tga
709 blendFunc GL_ONE GL_ZERO
710 rgbGen lightingdiffuse
711 tcGen environment
712 }
713 {
714 map models/mapobjects/knight/knt3.tga
715 blendfunc blend
716 rgbGen lightingdiffuse
717 }
718 }
719
720
721 models/mapobjects/firehead/kid
722 {
723 cull twosided
724 {
725 map models/mapobjects/test/kid.tga
726 // blendfunc blend
727 alphaFunc GE128
728 depthWrite
729 rgbGen vertex
730 }
731 }
732
733 models/mapobjects/knight/knt2
734 {
735 {
736 map textures/effects/tinfx.tga
737 blendFunc GL_ONE GL_ZERO
738 rgbGen lightingdiffuse
739 tcGen environment
740 }
741 {
742 map models/mapobjects/knight/knt3.tga
743 blendfunc blend
744 rgbGen lightingdiffuse
745 }
746 }
747
748
749 //
750 // Ridah, in-game skeleton requires a slightly different shader
751 //
752 skeletonSkin
753 {
754 cull disable
755 surfaceparm alphashadow
756
757 {
758 map models/mapobjects/skel/skel.tga
759 alphaFunc GE128
760 depthWrite
761 rgbGen lightingdiffuse
762 alphaGen entity
763 }
764 }
765
766 //// glass shard /////
767
768 models/shards/glass
769 {
770
771 surfaceparm trans
772 cull none
773 qer_editorimage models/shards/glass.tga
774 qer_trans 0.5
775
776 {
777 // map models/shards/glass.tga
778 // map textures/effects/tinfx.tga
779 map textures/effects/wdfx4.tga
780 tcgen environment
781 blendFunc GL_ONE GL_ONE
782 rgbGen identity
783 }
784 }
785 ////skel///
786 ///models\players\zombie\sk_bod1
787 //
788 //{
789 // cull disable
790 // surfaceparm alphashadow
791 //
792 // {
793 // map models/players/zombie/sk_bod1.tga
794 // alphaFunc GE128
795 // depthWrite
796 // rgbGen lightingdiffuse
797 // }
798 //}
799
800
801
802
803
804 //// test////
805
806 models/mapobjects/test/how_bod1
807
808 {
809 cull disable
810 surfaceparm alphashadow
811
812 {
813 map models/mapobjects/test/how_bod1.tga
814 alphaFunc GE128
815 depthWrite
816 rgbGen vertex
817 }
818 }
819
820
821 models/mapobjects/test/zom_helm
822
823 {
824 cull twosided
825 surfaceparm alphashadow
826
827 {
828 map models/mapobjects/test/zom_helm.tga
829 alphaFunc GE128
830 depthWrite
831 rgbGen vertex
832 }
833 }
834
835 models/mapobjects/test/armor
836
837 {
838 cull twosided
839 // surfaceparm alphashadow
840 //
841 {
842 map models/mapobjects/test/armor.tga
843 // alphaFunc GE128
844 // depthWrite
845 rgbGen vertex
846 }
847 }
848
849 ////babyg////
850
851 models/mapobjects/piano/babyg
852
853 {
854 cull twosided
855
856 {
857 map models/mapobjects/piano/babyg.tga
858 blendfunc gl_one gl_ZERO
859 rgbGen vertex
860 }
861 {
862 map textures/effects/tinfx.tga
863 // map textures/effects/shine.tga
864 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
865 rgbGen identity
866 tcMod scale 1 1
867 tcGen environment
868 }
869 {
870 map $lightmap
871 rgbGen identity
872 blendfunc filter
873
874
875 }
876 }
877
878
879
880 //// test////
881 models/mapobjects/test/bg_gog
882
883 {
884 //cull twosided
885
886 {
887 map models/mapobjects/test/bg_gog.tga
888 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
889 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
890 // blendFunc add
891 // alphaFunc GE128
892 // depthWrite
893 rgbGen vertex
894 }
895 }
896
897 models/mapobjects/test/deth_body1
898
899 {
900 cull twosided
901
902 {
903 map models/mapobjects/test/deth_body1.tga
904 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
905 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
906 // blendFunc add
907 // alphaFunc GE128
908 // depthWrite
909 rgbGen vertex
910 }
911 }
912 models/mapobjects/test/deth_mon
913 {
914 cull twosided
915
916 {
917 map models/mapobjects/test/deth_mon.tga
918 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
919 rgbGen vertex
920 }
921
922
923 }
924
925 models/players/frogman/frg_mglass
926 {
927 cull twosided
928
929 {
930 map models/players/frogman/frg_mglass.tga
931 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
932 rgbGen vertex
933 }
934
935
936 }
937
938 models/players/sealoper/sl_engine
939 {
940 cull twosided
941 {
942 map models/players/sealoper/sl_engine.tga
943 rgbgen lightingdiffuse
944 }
945 }
946
947
948
949
950 models/players/femzombie/wt_body1
951
952 {
953 cull twosided
954
955 {
956 map models/players/femzombie/wt_body1.tga
957 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
958 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
959 // blendFunc add
960 alphaFunc GE128
961 depthWrite
962 rgbGen lightingdiffuse
963 }
964 }
965
966
967
968
969
970 models/mapobjects/test/lg_glasses
971
972 {
973 //cull twosided
974
975 {
976 map models/mapobjects/test/lg_glasses.tga
977 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
978 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
979 // blendFunc add
980 // alphaFunc GE128
981 // depthWrite
982 rgbGen vertex
983 }
984
985
986 }
987
988
989 models/mapobjects/test/wt_body1
990
991 {
992 cull twosided
993
994 {
995 map models/mapobjects/test/wt_body1.tga
996 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
997 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
998 // blendFunc add
999 alphaFunc GE128
1000 depthWrite
1001 rgbGen diffuse
1002 }
1003
1004
1005 }
1006
1007 models/players/blackguard/bg_body1
1008
1009 {
1010 cull twosided
1011
1012 {
1013 map models/players/blackguard/bg_body1.tga
1014 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1015 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1016 // blendFunc add
1017 // alphaFunc GE128
1018 // depthWrite
1019 rgbGen lightingdiffuse
1020 }
1021
1022
1023 }
1024 models/mapobjects/test/lg_body1
1025
1026 {
1027 cull twosided
1028
1029 {
1030 map models/mapobjects/test/lg_body1.tga
1031 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1032 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1033 // blendFunc add
1034 // alphaFunc GE128
1035 // depthWrite
1036 rgbGen vertex
1037 }
1038
1039
1040 }
1041
1042
1043
1044 models/mapobjects/test/rj_slop1
1045
1046 {
1047 cull twosided
1048
1049 {
1050 map models/mapobjects/test/rj_slop1.tga
1051 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1052 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1053 // blendFunc add
1054 // alphaFunc GE128
1055 // depthWrite
1056 rgbGen vertex
1057 }
1058
1059
1060 }
1061
1062 models/mapobjects/test/rj_body2
1063
1064 {
1065 cull twosided
1066
1067 {
1068 map models/mapobjects/test/rj_body2.tga
1069 alphaFunc GE128
1070 depthWrite
1071 rgbGen vertex
1072 }
1073
1074
1075 }
1076
1077 models/players/rejectx/rj_glow
1078
1079 {
1080 cull twosided
1081
1082 {
1083 map models/players/rejectx/rj_glow.tga
1084 blendfunc blend
1085 // tcmod turb 0 1 0 1
1086 rgbGen identity
1087 }
1088
1089
1090 }
1091
1092
1093 ///remove///
1094 models/mapobjects/test/rj_glow
1095
1096 {
1097 cull twosided
1098
1099 {
1100 map models/mapobjects/test/rj_glow.tga
1101 blendfunc blend
1102 // tcmod turb 0 1 0 1
1103 rgbGen identity
1104 }
1105
1106
1107 }
1108
1109
1110
1111 models/players/rejectx/rj_stim
1112
1113 {
1114 //cull twosided
1115
1116 {
1117
1118 map models/players/rejectx/rj_stim.tga
1119 tcmod rotate 350
1120 tcGen environment
1121 tcmod scale -1 -1
1122 blendFunc GL_ONE GL_ZERO
1123 rgbGen identity
1124 }
1125
1126 }
1127
1128
1129
1130 models/mapobjects/test/rj_stim
1131
1132 {
1133 //cull twosided
1134
1135 {
1136
1137 map models/mapobjects/test/rj_stim.tga
1138 tcmod rotate 350
1139 tcGen environment
1140 tcmod scale -1 -1
1141 blendFunc GL_ONE GL_ZERO
1142 rgbGen identity
1143 }
1144
1145 }
1146
1147 models/players/drz/acc/drz_glass1
1148 {
1149 cull twosided
1150
1151 {
1152 map models/players/drz/acc/drz_glass1.tga
1153 blendfunc blend
1154 rgbGen lightingdiffuse
1155 }
1156
1157
1158 }
1159
1160 models/players/drz/drz_mon
1161 {
1162 cull twosided
1163
1164 {
1165 map models/players/drz/drz_mon.tga
1166 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1167 rgbGen lightingdiffuse
1168 }
1169
1170
1171 }
1172 models/players/drz/drz_body1
1173 {
1174 cull twosided
1175
1176 {
1177 map models/players/drz/drz_body1.tga
1178 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1179 rgbGen lightingdiffuse
1180 }
1181
1182
1183 }
1184 models/players/drz/vin_body1
1185 {
1186 cull twosided
1187
1188 {
1189 map models/players/drz/vin_body1.tga
1190 rgbGen lightingdiffuse
1191 }
1192
1193
1194 }
1195
1196 models/players/partisan/prt_body1
1197 {
1198 cull twosided
1199
1200 {
1201 map models/players/partisan/prt_body1.tga
1202 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1203 rgbGen lightingdiffuse
1204 }
1205
1206
1207 }
1208
1209 //// maxx eye ////
1210
1211 models\mapobjects\eye\eye
1212 {
1213 {
1214 map models\mapobjects\eye\eye.tga
1215 blendFunc GL_ONE GL_ZERO
1216 rgbGen identity
1217 }
1218 {
1219 map textures/effects/wdfx.tga
1220 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1221 tcGen environment
1222 }
1223 {
1224 map $lightmap
1225 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
1226 rgbGen identity
1227 }
1228 }
1229
1230
1231 models\furniture\barrel\barrel_m01
1232 {
1233
1234 cull twosided
1235 {
1236 map models/furniture/barrel/barrel_m01.tga
1237 blendFunc GL_ONE GL_ZERO
1238 rgbGen lightingdiffuse
1239 }
1240
1241 }
1242
1243 models\furniture\barrel\barrel_m01g
1244 {
1245
1246 cull twosided
1247 {
1248 map models/furniture/barrel/barrel_m01.tga
1249 blendFunc GL_ONE GL_ZERO
1250 rgbGen lightingdiffuse
1251 }
1252
1253 }
1254
1255
1256
1257 //// maxx tank shader ///
1258
1259 //----(SA)
1260 //
1261
1262 models\mapobjects\vehicles\sherman
1263 {
1264 {
1265 map models/mapobjects/vehicles/sherman.tga
1266 rgbGen lightingdiffuse
1267 }
1268
1269 }
1270
1271 models\mapobjects\vehicles\panzer
1272 {
1273 {
1274 map models/mapobjects/vehicles/panzer.tga
1275 rgbGen lightingdiffuse
1276 }
1277
1278 }
1279
1280 models/mapobjects/vehicles/tankside3
1281 {
1282 cull twosided
1283 {
1284 map models/mapobjects/vehicles/tankside3.tga
1285 rgbGen lightingdiffuse
1286 }
1287
1288 }
1289
1290 models/mapobjects/vehicles/JEEP3
1291 {
1292 {
1293 map models/mapobjects/vehicles/JEEP3.tga
1294 rgbGen lightingdiffuse
1295 }
1296
1297 }
1298
1299
1300 // models/mapobjects/vehicles/sherman_s
1301 models\mapobjects\furniture\sherman_s
1302 {
1303 {
1304 map models/mapobjects/furniture/sherman_s.tga
1305 // rgbGen lightingDiffuse
1306 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1307 blendfunc blend
1308 rgbGen identity
1309 }
1310
1311 }
1312
1313
1314 models\mapobjects\vehicles\sherman_s
1315 {
1316 {
1317 map models/mapobjects/vehicles/sherman_s.tga
1318 blendfunc blend
1319 rgbGen identity
1320 }
1321
1322 }
1323
1324
1325 models/mapobjects/vehicles/sherman_s
1326 {
1327 {
1328 map models/mapobjects/vehicles/sherman_s.tga
1329 blendfunc blend
1330 rgbGen identity
1331 }
1332
1333 }
1334
1335
1336 //models/mapobjects/vehicles/sherman
1337 models\mapobjects\vehicles\sherman_bak
1338 {
1339
1340 {
1341 map models/mapobjects/vehicles/sherman.tga
1342 rgbGen vertex
1343 // rgbGen identity
1344
1345 }
1346
1347 }
1348
1349 models\mapobjects\vehicles\sherman_w
1350 {
1351
1352 {
1353 map models/mapobjects/vehicles/sherman_w.tga
1354 // rgbGen vertex
1355 rgbGen identity
1356
1357 }
1358
1359 }
1360
1361 ////// skull maxx /////////
1362
1363 models/mapobjects/skull/skull2a
1364
1365 //{
1366 // cull disable
1367 // surfaceparm alphashadow
1368 // {
1369 // map models/mapobjects/skull/skull2.tga
1370 // alphaFunc GE128
1371 // depthWrite
1372 // rgbGen vertex
1373 // }
1374 //}
1375
1376
1377
1378 {
1379 {
1380 map models/mapobjects/skull/skull2a.tga
1381 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1382 // blendfunc GL_ONE GL_ONE
1383 // alphaFunc GE128
1384 // tcGen environment
1385 // blendFunc GL_ONE GL_ONE
1386 // rgbGen vertex
1387 rgbGen lightingDiffuse // (SA) any objects external to the map (players/weapons/keys/etc) should use
1388 // rgbGen lightingDiffuse. No other rgbGen should be expected to work in
1389 // all situations.
1390 }
1391
1392
1393
1394
1395 //{
1396 // map textures/effects/tinfxb.tga
1397 // tcGen environment
1398 // blendFunc GL_ONE GL_ONE
1399 //}
1400 }
1401
1402 textures/sfx/kenelectric
1403 {
1404 {
1405 map textures/sfx/kenelectric.tga
1406 tcmod scale 1 1
1407 tcmod rotate 2
1408 tcmod scroll .5 .5
1409 blendfunc GL_ONE GL_ONE
1410
1411 }
1412
1413 }
1414
1415 textures/effects/tinfx2
1416 {
1417 {
1418 map textures/effects/tinfx2.tga
1419 tcGen environment
1420 tcmod scale 1 1
1421 blendfunc GL_ONE GL_ONE
1422 rgbGen identity
1423 }
1424 }
1425 models/mapobjects/lamplight_y
1426 {
1427 q3map_surfacelight 10000
1428 light 1
1429 cull disable
1430 {
1431 map textures/effects/envmapmach.tga
1432 //map models/mapobjects/lamplight_y.tga
1433 blendfunc GL_ONE GL_ONE
1434 tcGen environment
1435 rgbGen identity
1436 }
1437 }
1438
1439
1440
1441 //////////// goblet maxx env. ////
1442
1443 models/mapobjects/goblet/gob1
1444 {
1445 cull none
1446
1447 {
1448 map models/mapobjects/goblet/gob1.tga
1449 blendFunc GL_ONE GL_ZERO
1450 // rgbGen vertex
1451 rgbGen lightingDiffuse // (SA) any objects external to the map (players/weapons/keys/etc) should use
1452 // rgbGen lightingDiffuse. No other rgbGen should be expected to work in
1453 // all situations.
1454 }
1455 {
1456 map textures/effects/wdfx.tga
1457 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1458 tcGen environment
1459 }
1460 // {
1461 // map $lightmap
1462 // blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
1463 // rgbGen identity
1464 // }
1465 }
1466 ////////// mp40 maxx ///////////
1467
1468
1469 //models/weapons2/mp40/gun11
1470 //{
1471 // cull none
1472 //
1473 // {
1474 // map models/weapons2/mp40/gun11.tga
1475 // blendFunc GL_ONE GL_ZERO
1476 // rgbGen vertex
1477 // rgbGen lightingDiffuse // (SA) any objects external to the map (//players/weapons/keys/etc) should use
1478 /// // rgbGen lightingDiffuse. No //other rgbGen should be expected to work in
1479 // all situations.
1480 // }
1481 // {
1482 // map textures/effects/chrome1.tga
1483 // blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1484 // tcGen environment
1485 // tcmod scale 4 4
1486 // rgbGen vertex
1487 // }
1488 //}
1489
1490 //models/weapons2/mp40/gun11
1491 //{
1492 // {
1493 // map models/weapons2/mp40/gun11.tga
1494 // blendFunc GL_ONE GL_ZERO
1495 // rgbGen lightingdiffuse
1496 // }
1497 // {
1498 // map textures/effects/tinfx4.tga
1499 // blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1500 // tcMod Scale 3 3
1501 // tcGen environment
1502 /// }
1503 //
1504 //}
1505
1506 /// venom maxx ///
1507
1508 models/weapons2/venom/venum1
1509 {
1510
1511 // {
1512 // map models/weapons2/venom/venum1.tga
1513 // alphaFunc GE128
1514 // rgbGen lightingdiffuse
1515 // }
1516 {
1517 map models/weapons2/venom/venum1aa.tga
1518 blendFunc GL_ONE GL_ZERO
1519 rgbGen lightingdiffuse
1520 }
1521
1522 {
1523 map textures/effects/tinfx.tga
1524 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1525 tcMod Scale 3 3
1526 tcGen environment
1527 }
1528
1529
1530 }
1531
1532 /// grenade maxx ///
1533
1534 //models/ammo/grenade
1535 //{
1536 // {
1537 // map models/ammo/grenade.tga
1538 // rgbGen lightingdiffuse
1539 // }
1540 // {
1541 // map textures/effects/tinfx4.tga
1542 // blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1543 // tcMod Scale 3 3
1544 // tcGen environment
1545 // }
1546
1547 //}
1548
1549
1550 //////// debri maxx ///
1551
1552 textures/town_wall/town_c38a1
1553 {
1554 cull none
1555
1556 {
1557 map textures/town_wall/town_c38a1.tga
1558 // rgbGen vertex
1559 rgbGen lightingDiffuse // (SA) any objects external to the map (players/weapons/keys/etc) should use
1560 // rgbGen lightingDiffuse. No other rgbGen should be expected to work in
1561 // all situations.
1562 }
1563
1564 }
1565
1566 ////////// chandelier maxx ////////////
1567
1568 models/mapobjects/chandelier/metal_m01
1569 {
1570 cull none
1571
1572 {
1573 map models/mapobjects/chandelier/metal_m01.tga
1574 rgbGen vertex
1575 }
1576
1577 }
1578
1579 models/mapobjects/chandelier/candle_m01
1580 {
1581 cull none
1582
1583 {
1584 map models/mapobjects/chandelier/candle_m01.tga
1585 rgbGen vertex
1586 }
1587
1588 }
1589
1590 /// gun test maxx /////
1591
1592 models/weapons2/handtest/gun11
1593 {
1594 cull none
1595
1596 {
1597 map models/weapons2/handtest/gun11.tga
1598 blendFunc GL_ONE GL_ZERO
1599 rgbGen identity
1600 }
1601 {
1602 map textures/effects/tinfx.tga
1603 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
1604 tcGen environment
1605 }
1606 {
1607 // map $lightmap
1608 // blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
1609 // rgbGen identity
1610 }
1611 }
1612
1613
1614
1615 /// maxx quake3 skel ///
1616
1617 bbmodels\mapobjects\skel\skel
1618 {
1619 cull disable
1620 surfaceparm alphashadow
1621 {
1622 map models/mapobjects/skel/skel.tga
1623 alphaFunc GE128
1624 depthWrite
1625 rgbGen vertex
1626 }
1627 }
1628
1629
1630 models/mapobjects/skel/skel
1631 {
1632 cull disable
1633 surfaceparm alphashadow
1634
1635 {
1636 map models/mapobjects/skel/skel.tga
1637 alphaFunc GE128
1638 depthWrite
1639 rgbGen vertex
1640 // rgbgen lightingdiffuse
1641 }
1642 }
1643
1644 models/mapobjects/skel/skel2
1645 {
1646 cull disable
1647 surfaceparm alphashadow
1648
1649 {
1650 map models/mapobjects/skel/skel.tga
1651 alphaFunc GE128
1652 depthWrite
1653 }
1654 }
1655
1656
1657 models/mapobjects/miltary_trim/bags1_s
1658
1659 {
1660 {
1661 map models/mapobjects/miltary_trim/bags1_s.tga
1662 rgbGen vertex
1663 }
1664
1665 }
1666
1667
1668
1669
1670 models/mapobjects/vehicles/wagon/metal_m05
1671
1672 {
1673 {
1674 map models/mapobjects/vehicles/wagon/metal_m05.tga
1675 rgbGen vertex
1676 }
1677
1678 }
1679
1680 models/mapobjects/vehicles/halftrack3
1681
1682 {
1683 {
1684 map models/mapobjects/vehicles/halftrack3.tga
1685 rgbGen vertex
1686 }
1687
1688 }
1689
1690 models/mapobjects/vehicles/wagon/wag_side
1691
1692
1693 {
1694 {
1695 map models/mapobjects/vehicles/wagon/wag_side.tga
1696 rgbGen vertex
1697 }
1698
1699 }
1700
1701 models/mapobjects/vehicles/wagon/wag_whl
1702 {
1703 cull twosided
1704 {
1705 map models/mapobjects/vehicles/wagon/wag_whl.tga
1706 alphaFunc GE128
1707 depthWrite
1708 rgbGen vertex
1709
1710 }
1711 }
1712
1713 models/mapobjects/vehicles/heinkel
1714 {
1715 // cull twosided
1716 {
1717 map models/mapobjects/vehicles/heinkel.tga
1718 blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1719 // alphaFunc GE128
1720 depthWrite
1721 rgbGen vertex
1722
1723 }
1724 }
1725
1726 models/mapobjects/vehicles/heinkel_b
1727 {
1728 cull twosided
1729 {
1730 map models/mapobjects/vehicles/heinkel_b.tga
1731 // blendfunc GL_ONE_MINUS_SRC_ALPHA gl_src_alpha
1732 alphaFunc GE128
1733 depthWrite
1734 rgbGen vertex
1735
1736 }
1737 }
1738
1739 models/mapobjects/light/bel_lamp2
1740 {
1741 cull twosided
1742 {
1743 map models/mapobjects/light/bel_lamp2.tga
1744 alphaFunc GE128
1745 depthWrite
1746 rgbGen vertex
1747
1748 }
1749 }
1750 models/mapobjects/light/bel_lampb
1751 {
1752
1753 surfaceparm nomarks
1754 q3map_lightimage textures/lightimage/amber.tga
1755 q3map_surfaceLight 10000
1756 light 1
1757
1758 {
1759 map models/mapobjects/light/bel_lamp.tga
1760 blendFunc GL_ONE GL_ZERO
1761 rgbGen vertex
1762 }
1763 {
1764 map models/mapobjects/light/bel_lamp.blend.tga
1765 blendfunc GL_ONE GL_ONE
1766 }
1767
1768
1769
1770 }
1771 models/mapobjects/light/bel_lampm
1772 {
1773
1774 surfaceparm nomarks
1775 q3map_lightimage textures/lightimage/amber.tga
1776 q3map_surfaceLight 7000
1777 light 1
1778
1779 {
1780 map models/mapobjects/light/bel_lamp.tga
1781 blendFunc GL_ONE GL_ZERO
1782 rgbGen vertex
1783
1784 }
1785 {
1786 map models/mapobjects/light/bel_lamp.blend.tga
1787 blendfunc GL_ONE GL_ONE
1788 }
1789
1790
1791
1792 }
1793 models/mapobjects/light/bel_lamp
1794 {
1795
1796 surfaceparm nomarks
1797 q3map_lightimage textures/lightimage/amber.tga
1798 q3map_surfaceLight 5000
1799 light 1
1800
1801 {
1802 map models/mapobjects/light/bel_lamp.tga
1803 blendFunc GL_ONE GL_ZERO
1804 rgbGen vertex
1805 }
1806 {
1807 map models/mapobjects/light/bel_lamp.blend.tga
1808 blendfunc GL_ONE GL_ONE
1809 }
1810
1811
1812
1813 }
1814
1815 models/mapobjects/lamps/bel_lamp2k
1816 {
1817
1818 surfaceparm nomarks
1819 q3map_lightimage textures/lightimage/amber.tga
1820 q3map_surfaceLight 1000
1821 light 1
1822
1823 {
1824 map models/mapobjects/light/bel_lamp.tga
1825 blendFunc GL_ONE GL_ZERO
1826 rgbGen vertex
1827 }
1828 {
1829 map models/mapobjects/light/bel_lamp.blend.tga
1830 blendfunc GL_ONE GL_ONE
1831 }
1832
1833
1834
1835 }
1836
1837 models/mapobjects/light/camplt_out
1838 {
1839 {
1840 map models/mapobjects/light/camplt_out.tga
1841 rgbGen vertex
1842 }
1843
1844 }
1845
1846 models/mapobjects/light/camplt_in
1847 {
1848
1849 surfaceparm nomarks
1850 q3map_lightimage textures/lightimage/camplt_in.tga
1851 q3map_surfacelight 7000
1852 q3map_lightrgb 0.80 0.72 0.60
1853 light 1
1854 {
1855 map models/mapobjects/light/camplt_in.tga
1856 blendFunc GL_ONE GL_ZERO
1857 }
1858 {
1859 map models/mapobjects/light/camplt_in.blend.tga
1860 blendfunc GL_ONE GL_ONE
1861 }
1862
1863
1864
1865 }
1866
1867
1868
1869 models/mapobjects/light/cage_lightna
1870 {
1871 cull twosided
1872 {
1873 map models/mapobjects/light/cage_lightna.tga
1874 alphaFunc GE128
1875 depthWrite
1876 rgbGen vertex
1877
1878 }
1879 }
1880
1881 models/mapobjects/light/cage_lightn
1882 {
1883 surfaceparm nomarks
1884 q3map_lightimage textures/lightimage/cage_lightn.tga
1885 q3map_surfacelight 7000
1886 q3map_lightrgb 0.80 0.72 0.60
1887 light 1
1888
1889 // cagelight white
1890
1891 {
1892 map models/mapobjects/light/cage_lightn.tga
1893 blendFunc GL_ONE GL_ZERO
1894 rgbGen vertex
1895 }
1896 {
1897 map models/mapobjects/light/cage_light.blendn.tga
1898 blendfunc GL_ONE GL_ONE
1899 }
1900 }
1901
1902 models/mapobjects/light/cage_light12k
1903 {
1904 surfaceparm nomarks
1905 q3map_lightimage textures/lightimage/cagelight_a.tga
1906 q3map_surfacelight 12000
1907 q3map_lightrgb 0.80 0.72 0.60
1908 light 1
1909
1910 // cagelight white
1911
1912 {
1913 map models/mapobjects/light/cagelight_a.tga
1914 blendFunc GL_ONE GL_ZERO
1915 rgbGen vertex
1916 }
1917 {
1918 map models/mapobjects/light/cagelight.blenda.tga
1919 blendfunc GL_ONE GL_ONE
1920 }
1921 }
1922
1923 models/mapobjects/light/cage_light9k
1924 {
1925 surfaceparm nomarks
1926 q3map_lightimage textures/lightimage/cagelight_a.tga
1927 q3map_surfacelight 9000
1928 q3map_lightrgb 0.80 0.72 0.60
1929 light 1
1930
1931 // cagelight white
1932
1933 {
1934 map models/mapobjects/light/cagelight_a.tga
1935 blendFunc GL_ONE GL_ZERO
1936 rgbGen vertex
1937 }
1938 {
1939 map models/mapobjects/light/cagelight.blenda.tga
1940 blendfunc GL_ONE GL_ONE
1941 }
1942 }
1943
1944 models/mapobjects/light/cage_light7k
1945 {
1946 surfaceparm nomarks
1947 q3map_lightimage textures/lightimage/cagelight_a.tga
1948 q3map_surfacelight 7000
1949 q3map_lightrgb 0.80 0.72 0.60
1950 light 1
1951
1952 // cagelight white
1953
1954 {
1955 map models/mapobjects/light/cagelight_a.tga
1956 blendFunc GL_ONE GL_ZERO
1957 rgbGen vertex
1958 }
1959 {
1960 map models/mapobjects/light/cagelight.blenda.tga
1961 blendfunc GL_ONE GL_ONE
1962 }
1963 }
1964
1965 models/mapobjects/light/cage_light5k
1966 {
1967 surfaceparm nomarks
1968 q3map_lightimage textures/lightimage/cagelight_a.tga
1969 q3map_surfacelight 5000
1970 q3map_lightrgb 0.80 0.72 0.60
1971 light 1
1972
1973 // cagelight white
1974
1975 {
1976 map models/mapobjects/light/cagelight_a.tga
1977 blendFunc GL_ONE GL_ZERO
1978 rgbGen vertex
1979 }
1980 {
1981 map models/mapobjects/light/cagelight.blenda.tga
1982 blendfunc GL_ONE GL_ONE
1983 }
1984 }
1985
1986 models/mapobjects/light/cage_light4k
1987 {
1988 surfaceparm nomarks
1989 q3map_lightimage textures/lightimage/cagelight_a.tga
1990 q3map_surfacelight 4000
1991 q3map_lightrgb 0.80 0.72 0.60
1992 light 1
1993
1994 // cagelight white
1995
1996 {
1997 map models/mapobjects/light/cagelight_a.tga
1998 blendFunc GL_ONE GL_ZERO
1999 rgbGen vertex
2000 }
2001 {
2002 map models/mapobjects/light/cagelight.blenda.tga
2003 blendfunc GL_ONE GL_ONE
2004 }
2005 }
2006
2007 models/mapobjects/light/cage_light3k
2008 {
2009 surfaceparm nomarks
2010 q3map_lightimage textures/lightimage/cagelight_a.tga
2011 q3map_surfacelight 3000
2012 q3map_lightrgb 0.80 0.72 0.60
2013 light 1
2014
2015 // cagelight white
2016
2017 {
2018 map models/mapobjects/light/cagelight_a.tga
2019 blendFunc GL_ONE GL_ZERO
2020 rgbGen vertex
2021 }
2022 {
2023 map models/mapobjects/light/cagelight.blenda.tga
2024 blendfunc GL_ONE GL_ONE
2025 }
2026 }
2027
2028 models/mapobjects/light/cage_light2k
2029 {
2030 surfaceparm nomarks
2031 q3map_lightimage textures/lightimage/cagelight_a.tga
2032 q3map_surfacelight 2000
2033 q3map_lightrgb 0.80 0.72 0.60
2034 light 1
2035
2036 // cagelight white
2037
2038 {
2039 map models/mapobjects/light/cagelight_a.tga
2040 blendFunc GL_ONE GL_ZERO
2041 rgbGen vertex
2042 }
2043 {
2044 map models/mapobjects/light/cagelight.blenda.tga
2045 blendfunc GL_ONE GL_ONE
2046 }
2047 }
2048
2049 models/mapobjects/light/cage_light1k
2050 {
2051 surfaceparm nomarks
2052 q3map_lightimage textures/lightimage/cagelight_a.tga
2053 q3map_surfacelight 1000
2054 q3map_lightrgb 0.80 0.72 0.60
2055 light 1
2056
2057 // cagelight white
2058
2059 {
2060 map models/mapobjects/light/cagelight_a.tga
2061 blendFunc GL_ONE GL_ZERO
2062 rgbGen vertex
2063 }
2064 {
2065 map models/mapobjects/light/cagelight.blenda.tga
2066 blendfunc GL_ONE GL_ONE
2067 }
2068 }
2069
2070
2071
2072 models/mapobjects/light/cagelight_a
2073 {
2074 surfaceparm nomarks
2075 q3map_lightimage textures/lightimage/cagelight_a.tga
2076 q3map_surfacelight 7000
2077 q3map_lightrgb 0.80 0.72 0.60
2078 light 1
2079
2080 // cagelight white
2081
2082 {
2083 map models/mapobjects/light/cagelight_a.tga
2084 blendFunc GL_ONE GL_ZERO
2085 rgbGen vertex
2086 }
2087 {
2088 map models/mapobjects/light/cagelight.blenda.tga
2089 blendfunc GL_ONE GL_ONE
2090 }
2091 }
2092
2093 models/mapobjects/light/cagelight_r
2094 {
2095 surfaceparm nomarks
2096 q3map_lightimage textures/lightimage/cagelight_r.tga
2097 q3map_surfacelight 7000
2098 q3map_lightrgb 1.0 0.1 0.1
2099 light 1
2100
2101 // cagelight white
2102
2103 {
2104 map models/mapobjects/light/cagelight_r.tga
2105 blendFunc GL_ONE GL_ZERO
2106 rgbGen vertex
2107 }
2108 {
2109 map models/mapobjects/light/cagelight.blendr.tga
2110 blendfunc GL_ONE GL_ONE
2111 }
2112 }
2113
2114 models/mapobjects/light/cagelight
2115 {
2116 surfaceparm nomarks
2117 q3map_lightimage textures/lightimage/cagelight_r.tga
2118 q3map_surfacelight 7000
2119 light 1
2120
2121 // cagelight white
2122
2123 {
2124 map models/mapobjects/light/cagelight.tga
2125 blendFunc GL_ONE GL_ZERO
2126 rgbGen vertex
2127 }
2128 {
2129 map models/mapobjects/light/cagelight.blend.tga
2130 blendfunc GL_ONE GL_ONE
2131 }
2132 }
2133
2134 models/mapobjects/light/light_m4
2135 {
2136 surfaceparm nomarks
2137 q3map_lightimage textures/lightimage/light_m4.tga
2138 q3map_surfacelight 5000
2139 light 1
2140
2141 {
2142 map models/mapobjects/light/light_m4.tga
2143 blendFunc GL_ONE GL_ZERO
2144 rgbGen vertex
2145 }
2146 {
2147 map textures/lights/light_m4.blend.tga
2148 blendfunc GL_ONE GL_ONE
2149 }
2150
2151 }
2152 models/mapobjects/light/pendant1k
2153 {
2154 surfaceparm nomarks
2155 q3map_lightimage textures/lightimage/pendant.tga
2156 q3map_surfacelight 5000
2157 light 1
2158
2159 nofog
2160 {
2161 fog off
2162 map models/mapobjects/light/pendant.tga
2163 blendFunc GL_ONE GL_ZERO
2164 rgbGen vertex
2165 }
2166 {
2167 fog on
2168 map models/mapobjects/light/pendant.blend.tga
2169 blendfunc GL_ONE GL_ONE
2170 }
2171
2172 }
2173
2174 models/mapobjects/light/pendant
2175 {
2176 surfaceparm nomarks
2177 q3map_lightimage textures/lightimage/pendant.tga
2178 q3map_surfacelight 5000
2179 light 1
2180
2181 {
2182 map models/mapobjects/light/pendant.tga
2183 blendFunc GL_ONE GL_ZERO
2184 rgbGen vertex
2185 }
2186 {
2187 map models/mapobjects/light/pendant.blend.tga
2188 blendfunc GL_ONE GL_ONE
2189 }
2190
2191 }
2192
2193
2194 models/players/ranger/wrack
2195 {
2196
2197 {
2198 map $whiteimage
2199 rgbGen lightingDiffuse
2200 }
2201 {
2202 map models/players/ranger/wrack.tga
2203 blendFunc GL_DST_COLOR GL_SRC_ALPHA
2204 rgbGen identity
2205 alphaGen lightingSpecular
2206 }
2207
2208 }
2209 models/players/visor/gorre
2210 {
2211 {
2212 map textures/sfx/firewallb.tga
2213 //map models/players/visor/gorre_fx.tga
2214 // tcGen environment
2215 blendFunc GL_ONE GL_ZERO
2216 tcmod scale 3 3
2217 tcMod turb 0 .5 0 .7
2218 tcMod scroll .05 -.05
2219 //tcmod rotate 360
2220 rgbGen identity
2221 }
2222 {
2223 map textures/sfx/firewallb.tga
2224 blendFunc GL_ONE GL_ONE
2225 tcmod scale 3 3
2226 tcMod turb 0 .2 0 .1
2227 tcMod scroll 1 -1
2228 //tcmod rotate 360
2229 rgbGen identity
2230 }
2231 {
2232 map models/players/visor/gorre.tga
2233 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2234 rgbGen lightingDiffuse
2235 }
2236 }
2237 models/powerups/armor/newred
2238 {
2239
2240 {
2241 map $whiteimage
2242 rgbGen lightingDiffuse
2243 }
2244 {
2245 map models/powerups/armor/newred.tga
2246 blendFunc GL_DST_COLOR GL_SRC_ALPHA
2247 rgbGen identity
2248 alphaGen lightingSpecular
2249 }
2250
2251 }
2252 models/powerups/armor/newyellow
2253 {
2254
2255 {
2256 map $whiteimage
2257 rgbGen lightingDiffuse
2258 }
2259 {
2260 map models/powerups/armor/newyellow.tga
2261 blendFunc GL_DST_COLOR GL_SRC_ALPHA
2262 rgbGen identity
2263 alphaGen lightingSpecular
2264 }
2265
2266 }
2267 models/players/doom/f_phobos
2268 {
2269
2270 {
2271 map textures/effects/tinfx.tga
2272 tcGen environment
2273 blendFunc GL_ONE GL_ZERO
2274 rgbGen lightingDiffuse
2275 }
2276 {
2277 map models/players/doom/phobos_fx.tga
2278 blendFunc GL_ONE GL_ONE
2279 tcmod scale 1 1
2280 tcMod scroll 2 -2
2281 tcmod rotate 179
2282 rgbGen identity
2283 }
2284 {
2285 map models/players/doom/f_phobos.tga
2286 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2287 rgbGen lightingDiffuse
2288 }
2289 }
2290 models/players/doom/phobos
2291 {
2292 {
2293 map models/players/doom/phobos_fx.tga
2294 blendFunc GL_ONE GL_ZERO
2295 tcmod scale 7 7
2296 tcMod scroll 5 -5
2297 tcmod rotate 360
2298 rgbGen identity
2299 }
2300 {
2301 map textures/effects/tinfx2.tga
2302 tcGen environment
2303 blendFunc GL_ONE GL_ONE
2304 rgbGen lightingDiffuse
2305 }
2306 {
2307 map models/players/doom/phobos.tga
2308 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2309 rgbGen lightingDiffuse
2310 }
2311 }
2312 textures/effects/bat
2313 {
2314 qer_editorimage textures/effects/bat.tga
2315 deformVertexes wave 10 sin 0 3 0 3
2316 deformVertexes move 500 0 0 sawtooth 0 5 0 .1
2317 deformVertexes move 0 0 7 sin 0 5 0 .5
2318 cull disable
2319
2320 {
2321 map textures/effects/bat.tga
2322 alphaFunc GE128
2323 depthWrite
2324 rgbGen identity
2325 }
2326
2327
2328 }
2329 models/mapobjects/bat/bat
2330 {
2331 qer_editorimage models/mapobjects/bat/bat.tga
2332 deformVertexes wave 10 sin 0 3 0 3
2333 deformVertexes move 500 0 0 sawtooth 0 5 0 .1
2334 deformVertexes move 0 0 7 sin 0 5 0 .5
2335 cull disable
2336
2337 {
2338 map models/mapobjects/bat/bat.tga
2339 alphaFunc GE128
2340 depthWrite
2341 rgbGen identity
2342 }
2343
2344
2345 }
2346 models/mapobjects/meteor
2347 {
2348 deformVertexes move 0 0 10 sin 0 5 0 0.1
2349 deformVertexes move 2 2 0 sin 0 9 0 0.05
2350
2351
2352 {
2353 map models/mapobjects/meteor.tga
2354 rgbGen vertex
2355 tcMod scale 4.90 2.234
2356 }
2357
2358
2359 }
2360 models/mapobjects/corpse/torso
2361 {
2362 deformVertexes wave 100 sin 0 .2 0 .2
2363 {
2364 map textures/liquids/proto_grueldark.tga
2365 //tcGen environment
2366 blendFunc GL_ONE GL_ZERO
2367 tcmod scale 4 4
2368 tcMod scroll 0 -.09
2369 tcMod turb 0 0.05 0 .05
2370 //rgbGen identity
2371 }
2372 //{
2373 // map textures/liquids/proto_grueldark.tga
2374 // //tcGen environment
2375 // blendFunc GL_ONE GL_ONE
2376 // tcmod scale 2 2
2377 // tcMod scroll 0 -.09
2378 // tcMod turb 0 0.07 0 .08
2379 // //rgbGen identity
2380 //}
2381 {
2382 map models/mapobjects/corpse/torso.tga
2383 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2384 rgbGen vertex
2385 }
2386 }
2387 models/mapobjects/corpse/chain
2388 {
2389 cull disable
2390
2391 {
2392 map models/mapobjects/corpse/chain.tga
2393 alphaFunc GE128
2394 depthWrite
2395 rgbGen vertex
2396 }
2397
2398
2399 }
2400 models/mapobjects/corpse/spine
2401 {
2402 cull disable
2403
2404 {
2405 map models/mapobjects/corpse/spine.tga
2406 alphaFunc GE128
2407 depthWrite
2408 rgbGen vertex
2409 }
2410
2411
2412 }
2413 models/mapobjects/corpse/intestine
2414 {
2415
2416 cull disable
2417
2418 {
2419 map models/mapobjects/corpse/intestine.tga
2420 alphaFunc GE128
2421 depthWrite
2422 rgbGen vertex
2423 }
2424
2425
2426 }
2427 models/mapobjects/corpse/intestine2
2428 {
2429 cull disable
2430 deformVertexes wave 100 sin 0 .6 0 .2
2431 // surfaceparm trans
2432 {
2433 map models/mapobjects/corpse/intestine2.tga
2434 alphaFunc GE128
2435 depthWrite
2436 rgbGen vertex
2437 }
2438
2439
2440 }
2441 models/players/lucy/h_femnoid
2442 {
2443 cull none
2444
2445 {
2446 map models/players/lucy/h_femnoid.tga
2447 depthWrite
2448 rgbGen lightingDiffuse
2449
2450 }
2451 {
2452
2453 //map textures/effects/envmapcirc3.tga
2454
2455 map models/mapobjects/bitch/hologirl2.tga
2456 tcgen environment
2457 tcMod scroll -6 -.2
2458 tcMod scale 1 1
2459 blendFunc GL_ONE GL_ONE
2460 rgbGen identity
2461 // rgbGen vertex
2462 rgbGen lightingDiffuse
2463 }
2464
2465 }
2466 models/players/lucy/femnoid
2467 {
2468 cull none
2469
2470 {
2471 map models/players/lucy/femnoid.tga
2472 alphaFunc GE128
2473 depthWrite
2474 //rgbGen identity
2475 rgbGen lightingDiffuse
2476
2477 }
2478 {
2479
2480 //map textures/effects/envmapcirc3.tga
2481
2482 map models/mapobjects/bitch/hologirl2.tga
2483 tcgen environment
2484 tcMod scroll -6 -.2
2485 tcMod scale 1 1
2486 blendFunc GL_ONE GL_ONE
2487 //rgbGen identity
2488 //rgbGen vertex
2489 rgbGen lightingDiffuse
2490 }
2491
2492 }
2493
2494 models/mapobjects/lamps/bot_wing2
2495 {
2496 //deformVertexes wave 100 sin 0 .5 0 .5
2497 //deformVertexes move 0 0 1 triangle 0 20 0 1
2498 deformVertexes move 0 0 2 sin 0 5 0 0.3
2499 deformVertexes move .6 .8 0 sin 0 9 0 0.1
2500 deformVertexes wave 100 sin 0 .5 0 .5
2501 cull disable
2502
2503 {
2504 map models/mapobjects/lamps/bot_wing2.tga
2505 alphaFunc GE128
2506 depthWrite
2507 rgbGen vertex
2508 }
2509
2510
2511 }
2512 models/mapobjects/lamps/bot_lamp2b
2513 {
2514 cull disable
2515 deformVertexes move 0 0 2 sin 0 5 0 0.3
2516 deformVertexes move .6 .8 0 sin 0 9 0 0.1
2517 {
2518 map models/mapobjects/lamps/bot_lamp2b.tga
2519 alphaFunc GE128
2520 depthWrite
2521 rgbGen vertex
2522 }
2523
2524
2525 }
2526 models/mapobjects/lamps/bot_light
2527 {
2528 cull disable
2529 q3map_surfacelight 200
2530 deformVertexes move 0 0 2 sin 0 5 0 0.3
2531 deformVertexes move .6 .8 0 sin 0 9 0 0.1
2532 {
2533 map models/mapobjects/lamps/bot_light.tga
2534 rgbGen identity
2535 }
2536
2537
2538 }
2539
2540
2541 //*********************************
2542
2543 // corks model test ////
2544 //********************************
2545 //
2546 //
2547 models/mapobjects/characters/test2/body
2548 {
2549 {
2550 map models/mapobjects/characters/test2/body.tga
2551 rgbGen vertex
2552 }
2553
2554 }
2555
2556
2557 models/mapobjects/characters/test2/head
2558 {
2559 {
2560 map models/mapobjects/characters/test2/head.tga
2561 rgbGen vertex
2562 }
2563
2564 }
2565
2566 models/mapobjects/characters/test/head
2567 {
2568 {
2569 map models/mapobjects/characters/test/head.tga
2570 rgbGen vertex
2571 }
2572
2573 }
2574
2575
2576 models/mapobjects/characters/test/legs
2577 {
2578 {
2579 map models/mapobjects/characters/test/legs.tga
2580 rgbGen vertex
2581 }
2582
2583 }
2584
2585 models/mapobjects/lop/head
2586 {
2587 {
2588 map models/mapobjects/lop/head.tga
2589 rgbGen vertex
2590 }
2591
2592 }
2593
2594
2595
2596
2597 //**************//
2598 ///bodyparts///
2599 //**************//
2600
2601
2602
2603 models/mapobjects/bodyparts/bpblood
2604 {
2605 surfaceparm alphashadow
2606 cull twosided
2607 {
2608 map models/mapobjects/bodyparts/bpblood.tga
2609 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2610 rgbGen vertex
2611 }
2612
2613 }
2614 models/mapobjects/bodyparts/bpblood2
2615 {
2616 surfaceparm alphashadow
2617 cull twosided
2618 {
2619 map models/mapobjects/bodyparts/bpblood2.tga
2620 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2621 rgbGen vertex
2622 }
2623
2624 }
2625
2626 models/mapobjects/bodyparts/bp2
2627 {
2628 //deformVertexes wave 10 sin 0 2 0 .2
2629 cull twosided
2630
2631 {
2632 map models/mapobjects/bodyparts/bp2.tga
2633 alphaFunc LT128
2634 depthWrite
2635 rgbGen vertex
2636 }
2637 }
2638 models/mapobjects/bodyparts/skin1
2639 {
2640 //deformVertexes wave 10 sin 0 2 0 .2
2641 cull twosided
2642
2643 {
2644 map models/mapobjects/bodyparts/skin1.tga
2645 alphaFunc LT128
2646 depthWrite
2647 rgbGen vertex
2648 }
2649 }
2650
2651 models/mapobjects/bodyparts/naziarm
2652 {
2653 //deformVertexes wave 10 sin 0 2 0 .2
2654 cull twosided
2655
2656 {
2657 map models/mapobjects/bodyparts/naziarm.tga
2658 alphaFunc LT128
2659 depthWrite
2660 rgbGen vertex
2661 }
2662 }
2663 models/mapobjects/bodyparts/hel_body1
2664 {
2665
2666 cull twosided
2667
2668 {
2669 map models/mapobjects/bodyparts/hel_body1.tga
2670 rgbGen lightingDiffuse
2671 }
2672 }
2673 models/mapobjects/zemph/drz_glass1
2674 {
2675
2676 {
2677 map models/mapobjects/zemph/drz_glass1.tga
2678 blendfunc blend
2679 rgbGen lightingdiffuse
2680 }
2681 }
2682
2683
2684
2685 models/mapobjects/zemph/drz_head4_blink
2686 {
2687
2688 {
2689 map models/mapobjects/zemph/drz_head4_blink.tga
2690 rgbGen lightingdiffuse
2691 }
2692 }
2693 models/mapobjects/zemph/drz_xbody1
2694 {
2695
2696 cull twosided
2697
2698 {
2699 map models/mapobjects/zemph/drz_xbody1.tga
2700 rgbGen lightingdiffuse
2701 }
2702 }
2703
2704 models/mapobjects/zemph/drz_xlegs1
2705 {
2706
2707
2708 {
2709 map models/mapobjects/zemph/drz_xlegs1.tga
2710 rgbGen lightingdiffuse
2711 }
2712 }
2713
2714 //************************//
2715 //test//
2716 //************************//
2717
2718
2719 models/mapobjects/test4/naziarm
2720 {
2721 //deformVertexes wave 10 sin 0 2 0 .2
2722 cull twosided
2723
2724 {
2725 map models/mapobjects/test4/naziarm.tga
2726 alphaFunc LT128
2727 depthWrite
2728 rgbGen vertex
2729 }
2730 }
2731
2732
2733
2734
2735 models/mapobjects/test4/bp2
2736 {
2737 //deformVertexes wave 10 sin 0 2 0 .2
2738 cull twosided
2739
2740 {
2741 map models/mapobjects/test4/bp2.tga
2742 alphaFunc LT128
2743 depthWrite
2744 rgbGen vertex
2745 }
2746 }
2747 models/mapobjects/test4/skin1
2748 {
2749 //deformVertexes wave 10 sin 0 2 0 .2
2750 cull twosided
2751
2752 {
2753 map models/mapobjects/test4/skin1.tga
2754 alphaFunc LT128
2755 depthWrite
2756 rgbGen vertex
2757 }
2758 }
2759 models/mapobjects/test4/bpblood
2760 {
2761 //qer_trans 0.50
2762 //deformVertexes wave 10 sin 0 2 0 .2
2763 surfaceparm alphashadow
2764 cull twosided
2765 {
2766 map models/mapobjects/test4/bpblood.tga
2767 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2768 rgbGen vertex
2769 }
2770
2771 }
2772 //{
2773 // //deformVertexes wave 10 sin 0 2 0 .2
2774 // cull twosided
2775 //
2776 // {
2777 // map models/mapobjects/test4/bpblood.tga
2778 // alphaFunc LT128
2779 // depthWrite
2780 // rgbGen vertex
2781 // }
2782 //}
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796 ///zom///
2797
2798 //models/players/zombie/zom_head1
2799 //{
2800 // {
2801 // map models/players/zombie/zomeye.tga
2802 // tcmod rotate 350
2803 // // tcmod stretch scale 1 .4 0 .1
2804 //
2805 // tcmod scroll 1 .1
2806 // // tcmod scale 2 2
2807 // tcmod turb 1 .5 0 .5
2808 // blendFunc GL_ONE GL_ZERO
2809 // // blendFunc blend
2810 // rgbGen wave sin .5 .5 0 .5
2811 // rgbGen identity
2812 /// }
2813 // {
2814 // map models/players/zombie/zom_head1.tga
2815 // blendFunc blend
2816 // rgbGen lightingdiffuse
2817 // }
2818 //}
2819
2820
2821 //models/players/zombie/zom_body1
2822 //{
2823 // cull twosided
2824 // surfaceparm trans
2825 // {
2826 // map models/players/zombie/zom_body1.tga
2827 // // blendFunc add
2828 // alphaFunc GE128
2829 // depthWrite
2830 // rgbGen lightingDiffuse
2831 // alphaGen vertex
2832 // }
2833 //
2834 //
2835 //}
2836 models/players/zombie/slag_body1
2837 {
2838 cull twosided
2839 surfaceparm trans
2840 {
2841 map models/players/zombie/slag_body1.tga
2842 // blendFunc add
2843 alphaFunc GE128
2844 depthWrite
2845 rgbGen lightingDiffuse
2846 alphaGen vertex
2847 }
2848
2849
2850 }
2851
2852
2853 models/players/zombie/zom_legs1
2854 {
2855 cull twosided
2856 surfaceparm trans
2857 {
2858 map models/players/zombie/zom_legs1.tga
2859 // blendFunc add
2860 alphaFunc GE128
2861 depthWrite
2862 rgbGen lightingDiffuse
2863 alphaGen vertex
2864 }
2865
2866
2867 }
2868
2869 models/players/zombie/slag_legs1
2870 {
2871 cull twosided
2872 surfaceparm trans
2873 {
2874 map models/players/zombie/slag_legs1.tga
2875 // blendFunc add
2876 alphaFunc GE128
2877 depthWrite
2878 rgbGen lightingDiffuse
2879 alphaGen vertex
2880 }
2881
2882
2883 }
2884
2885 models/players/zombie/zom_head1
2886 {
2887 cull twosided
2888 surfaceparm trans
2889 {
2890 map models/players/zombie/zom_head1.tga
2891 // blendFunc add
2892 alphaFunc GE128
2893 depthWrite
2894 rgbGen lightingDiffuse
2895 alphaGen vertex
2896 }
2897
2898
2899 }
2900
2901 models/players/zombie/slag_head1
2902 {
2903 cull twosided
2904 surfaceparm trans
2905 {
2906 map models/players/zombie/slag_head1.tga
2907 // blendFunc add
2908 alphaFunc GE128
2909 depthWrite
2910 rgbGen lightingDiffuse
2911 alphaGen vertex
2912 }
2913
2914
2915 }
2916
2917 ///zom///
2918 models/mapobjects/test3/zom_body1
2919 {
2920 cull twosided
2921 {
2922 map models/mapobjects/test3/zom_body1.tga
2923 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2924 alphaFunc LT128
2925 depthWrite
2926 rgbGen vertex
2927
2928 }
2929 }
2930 models/mapobjects/test3/zom_body
2931 {
2932 cull twosided
2933 {
2934 map models/mapobjects/test3/zom_body.tga
2935 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2936 alphaFunc LT128
2937 depthWrite
2938 rgbGen vertex
2939
2940 }
2941 }
2942
2943 models/mapobjects/test3/zom_engine
2944 {
2945 {
2946 map textures/effects/regenmap3.tga
2947 tcmod rotate 350
2948 tcmod stretch scale 1 .4 0 .1
2949
2950 // tcmod scroll 3 1
2951 // tcmod scale 2 2
2952 // tcmod stretch 1 .5 0 2
2953 blendFunc GL_ONE GL_ZERO
2954 rgbGen wave sin 1 .6 0 .5
2955 }
2956 {
2957 map models/mapobjects/test3/zom_engine.tga
2958 blendFunc blend
2959 rgbGen vertex
2960 }
2961 }
2962
2963
2964
2965 ///undead2///
2966 models/mapobjects/undead/und_body1
2967 {
2968 cull twosided
2969 {
2970 map models/mapobjects/undead/und_body1.tga
2971 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2972 alphaFunc LT128
2973 depthWrite
2974 rgbGen vertex
2975
2976 }
2977 }
2978
2979 models/mapobjects/undead/und_leg1
2980 {
2981 cull twosided
2982 {
2983 map models/mapobjects/undead/und_leg1.tga
2984 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2985 alphaFunc LT128
2986 depthWrite
2987 rgbGen vertex
2988
2989 }
2990 }
2991
2992 models/mapobjects/test3/u_head1
2993 {
2994 cull none
2995
2996 {
2997 map models/mapobjects/test3/u_head1.tga
2998 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2999 alphaFunc LT128
3000 depthWrite
3001 rgbGen vertex
3002
3003 }
3004 }
3005
3006
3007 ///undead///
3008 ///models/mapobjects/test3/u_body1
3009 //{
3010 /// cull none
3011 //
3012 // {
3013 // map models/mapobjects/test3/u_body1.tga
3014 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3015 // alphaFunc LT128
3016 // depthWrite
3017 // rgbGen vertex
3018 //
3019 // }
3020 //}
3021
3022 models/mapobjects/test3/u_legs1
3023 {
3024 cull none
3025
3026 {
3027 map models/mapobjects/test3/u_legs1.tga
3028 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3029 alphaFunc LT128
3030 depthWrite
3031 rgbGen vertex
3032
3033 }
3034 }
3035
3036 //models/mapobjects/test3/u_head1
3037 //{
3038 // cull none
3039 //
3040 // {
3041 // map models/mapobjects/test3/u_head1.tga
3042 /// blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3043 // alphaFunc LT128
3044 // depthWrite
3045 // rgbGen vertex
3046 //
3047 // }
3048 //}
3049
3050
3051 ////amer////
3052
3053
3054
3055 models/mapobjects/test/r_body1
3056 {
3057 {
3058 map models/mapobjects/test/r_body1.tga
3059 rgbGen vertex
3060 }
3061
3062 }
3063
3064 models/mapobjects/test/r_head1
3065 {
3066 {
3067 map models/mapobjects/test/r_head1.tga
3068 rgbGen vertex
3069 }
3070
3071 }
3072
3073 models/mapobjects/test/r_legs1
3074 {
3075 {
3076 map models/mapobjects/test/r_legs1.tga
3077 rgbGen vertex
3078 }
3079
3080 }
3081
3082 models/mapobjects/test/bp
3083 {
3084 {
3085 map models/mapobjects/test/bp.tga
3086 rgbGen vertex
3087 }
3088
3089 }
3090
3091 models/mapobjects/test/r_belt1
3092 {
3093 {
3094 map models/mapobjects/test/r_belt1.tga
3095 rgbGen vertex
3096 }
3097
3098 }
3099
3100
3101 ////elite gard////
3102
3103
3104
3105 models/mapobjects/test/eg_body
3106 {
3107 {
3108 map models/mapobjects/test/eg_body.tga
3109 rgbGen vertex
3110 }
3111
3112 }
3113
3114
3115 models/mapobjects/test/eg_head
3116 {
3117 {
3118 map models/mapobjects/test/eg_head.tga
3119 rgbGen vertex
3120 }
3121
3122 }
3123
3124 models/mapobjects/test/eg_legs
3125 {
3126 {
3127 map models/mapobjects/test/eg_legs.tga
3128 rgbGen vertex
3129 }
3130
3131 }
3132
3133 /////////brokclone////////
3134
3135 models/mapobjects/test3/c_glass2
3136 {
3137 cull twosided
3138 {
3139 map models/mapobjects/test3/c_glass2.tga
3140 blendFunc GL_ONE GL_SRC_ALPHA
3141 rgbGen identity
3142 }
3143 //{
3144 // map textures/effects/envmapdim.tga
3145 // tcGen environment
3146 // blendfunc GL_ONE GL_ONE
3147 // rgbGen vertex
3148 {
3149 map $lightmap
3150 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
3151 rgbGen identity
3152 }
3153
3154 //{
3155 // map models/mapobjects/test3/c_ice1.tga
3156 // blendFunc GL_ONE GL_SRC_ALPHA
3157 // blendFunc blend
3158 // rgbgen diffuse
3159 // tcmod scale -1 -1
3160 // tcmod scroll .0 -0.5
3161 //}
3162
3163 }
3164
3165
3166
3167 ////////clonetub//////
3168
3169 models/mapobjects/test3/c_glass1
3170 {
3171
3172 q3map_surfacelight 600
3173 light 1
3174
3175
3176 {
3177 map models/mapobjects/test3/c_glass1.tga
3178 blendFunc GL_ONE GL_SRC_ALPHA
3179 rgbGen identity
3180 }
3181 //{
3182 // map textures/effects/envmapdim.tga
3183 // tcGen environment
3184 // blendfunc GL_ONE GL_ONE
3185 // rgbGen vertex
3186 {
3187 map $lightmap
3188 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
3189 rgbGen identity
3190 }
3191
3192 //{
3193 // map models/mapobjects/test3/c_ice1.tga
3194 // blendFunc GL_ONE GL_SRC_ALPHA
3195 // blendFunc blend
3196 // rgbgen diffuse
3197 // tcmod scale -1 -1
3198 // tcmod scroll .0 -0.5
3199 //}
3200
3201 }
3202
3203
3204 models/mapobjects/test3/c_water1
3205 {
3206 deformVertexes wave 64 sin .25 .25 0 .5
3207 // deformVertexes wave 100 sin 0 .2 0 .2
3208
3209
3210
3211
3212 {
3213 map models/mapobjects/test3/c_bibbles.tga
3214 blendFunc GL_dst_color GL_one
3215 rgbgen identity
3216 tcmod scale -1 -1
3217 tcmod scroll .0 -0.5
3218 }
3219 {
3220 map models/mapobjects/test3/c_water2.tga
3221 blendFunc GL_dst_color GL_one
3222 // nolightmap
3223 rgbgen identity
3224 tcmod scale 1 1
3225 tcmod scroll .025 .025
3226 }
3227
3228
3229 {
3230 map $lightmap
3231 blendFunc GL_dst_color GL_zero
3232 rgbgen identity
3233 }
3234
3235
3236
3237 // END
3238 //}
3239
3240 }
3241
3242 models/mapobjects/test3/c_bod1
3243
3244
3245 {
3246 cull none
3247 //sort additive // alphaFunc with a later blend pass doesn't
3248 // make its own sort properly
3249 deformVertexes move 0 0 .7 sin 0 5 0 0.1
3250 deformVertexes wave 100 sin 0 .2 0 .2
3251
3252
3253 // //{
3254 // map models/mapobjects/test3/c_bod1.tga
3255 // blendFunc GL_ONE GL_SRC_ALPHA
3256 // rgbGen identity
3257 //}
3258 {
3259 map models/mapobjects/test3/c_bod1.tga
3260 // blendfunc gl_src_alpha gl_one_minus_src_alpha
3261 alphaFunc GE128
3262 depthWrite
3263 rgbGen identity
3264
3265 }
3266
3267 {
3268 map models/mapobjects/test3/hologirl2.tga
3269 //tcgen environment
3270 tcgen base
3271 tcMod scroll -6 -.2
3272 tcMod scale 1 1
3273 blendFunc GL_ONE GL_ONE
3274 rgbGen identity
3275 //rgbGen vertex
3276 //rgbGen lightingDiffuse
3277 }
3278
3279 }
3280
3281 models/mapobjects/test3/c_tube
3282
3283 {
3284 {
3285 map textures/effects/regenmap4.tga
3286 tcmod rotate 350
3287 // tcmod stretch scale 1 .4 0 .1
3288
3289 // tcmod scroll 3 1
3290 // tcmod scale 2 2
3291 // tcmod stretch 1 .5 0 2
3292 blendFunc GL_ONE GL_ZERO
3293 rgbGen wave sin 1 .8 0 2
3294 }
3295 {
3296 map models/mapobjects/test3/c_tube.tga
3297 blendfunc blend
3298 rgbGen vertex
3299
3300 }
3301
3302
3303
3304 }
3305
3306
3307 //knight//
3308 models/mapobjects/knight/knt
3309
3310 //{
3311 // {
3312 // map textures/effects/tinfx.tga
3313 // blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
3314 // rgbGen identity
3315 // tcMod scale 1.5 1.5
3316 // tcGen environment
3317 // }
3318 //
3319 // {
3320 // map models/mapobjects/knight/knt.tga
3321 // blendfunc gl_one gl_ZERO
3322 // rgbGen vertex
3323 // }
3324 // {
3325 // map $lightmap
3326 // rgbGen identity
3327 // blendfunc filter
3328 //
3329 // }
3330 //}
3331
3332 {
3333 {
3334 map textures/effects/tinfx.tga
3335 blendfunc blend
3336 rgbGen identity
3337 tcGen environment
3338 }
3339 {
3340 map models/mapobjects/knight/knt.tga
3341 blendfunc blend
3342 rgbGen identity
3343 }
3344 {
3345 map $lightmap
3346 rgbGen identity
3347 blendfunc filter
3348 }
3349 }
3350
3351
3352
3353
3354
3355
3356
3357
3358 ////
3359 /////venom sol/////
3360
3361
3362
3363 models/characters/venom/v_head1
3364 //models/mapobjects/test3/v_head1
3365 {
3366 {
3367 map models/characters/venom/v_head1.tga
3368 // map models/mapobjects/test3/v_head1.tga
3369 blendFunc GL_ONE GL_ZERO
3370 rgbGen lightingdiffuse
3371 // rgbGen vertex
3372
3373 }
3374 {
3375 map textures/effects/tinfx.tga
3376 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
3377 tcmod scale 2 2
3378 tcGen environment
3379 rgbgen lightingdiffuse
3380 }
3381 //{
3382 // map $lightmap
3383 // blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
3384 // rgbGen identity
3385 //}
3386 }
3387
3388 models/mapobjects/test3/v_body1
3389 {
3390 {
3391 map models/mapobjects/test3/v_body1.tga
3392 blendFunc GL_ONE GL_ZERO
3393 rgbGen identity
3394 }
3395 {
3396 map textures/effects/tinfx.tga
3397 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
3398 tcmod scale 2 2
3399 tcGen environment
3400 }
3401 {
3402 map $lightmap
3403 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
3404 rgbGen vertex
3405 }
3406 }
3407
3408 models/mapobjects/test3/v_legs1
3409 {
3410 {
3411 map models/mapobjects/test3/v_legs1.tga
3412 blendFunc GL_ONE GL_ZERO
3413 rgbGen identity
3414 }
3415 {
3416 map textures/effects/tinfx.tga
3417 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
3418 tcmod scale 2 2
3419 tcGen environment
3420 }
3421 {
3422 map $lightmap
3423 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
3424 rgbGen vertex
3425 }
3426 }
3427
3428
3429 models/mapobjects/test/v_body1
3430 {
3431 {
3432 map models/mapobjects/test/v_body1.tga
3433 rgbGen vertex
3434 }
3435
3436 }
3437
3438
3439 models/mapobjects/test/v_legs1
3440 {
3441 {
3442 map models/mapobjects/test/v_legs1.tga
3443 rgbGen vertex
3444 }
3445
3446 }
3447
3448
3449
3450 ///models/players/venom/v_head1
3451 //{
3452 // {
3453 // map textures/effects/tinfx.tga
3454 // blendfunc GL_ONE GL_ZERO
3455 // tcMod turb 0 0.015 0 0.025
3456 // rgbGen diffuse
3457 // tcGen environment
3458 // }
3459 //
3460 // {
3461 // map models/players/venom/v_head1.tga
3462 // blendFunc GL_ONE_MINUS_SRC_ALPHA GL_SRC_ALPHA
3463 // rgbGen diffuse
3464 // alphaGen lightingSpecular
3465 // }
3466 //
3467 //}
3468
3469 //models/mapobjects/test/v_head1
3470 //{
3471 // {
3472 // map textures/effects/tinfx.tga
3473 // blendfunc GL_ONE GL_ZERO
3474 // tcMod turb 0 0.015 0 0.025
3475 // rgbGen vertex
3476 // tcGen environment
3477 // }
3478 //
3479 // {
3480 // map models/mapobjects/test/v_head1.tga
3481 // blendFunc GL_ONE_MINUS_SRC_ALPHA GL_SRC_ALPHA
3482 // rgbGen vertex
3483 // alphaGen lightingSpecular
3484 // }
3485 //
3486 //}
3487 //{
3488 // {
3489 // map models/mapobjects/test/v_head1.tga
3490 // rgbGen vertex
3491 // }
3492 //}
3493
3494 models/mapobjects/test/v_bp1
3495 {
3496 {
3497 map $whiteimage
3498 // rgbGen lightingDiffuse
3499 rgbGen vertex
3500 }
3501 {
3502 map models/mapobjects/test/v_bp1.tga
3503 blendFunc GL_DST_COLOR GL_SRC_ALPHA
3504 rgbGen identity
3505 alphaGen lightingSpecular
3506 }
3507 }
3508
3509
3510 models/mapobjects/test3/v_bp1
3511
3512 {
3513 {
3514 map textures/effects/org.tga
3515 tcmod rotate 350
3516 // tcmod stretch scale 1 .4 0 .1
3517
3518 // tcmod scroll 3 1
3519 // tcmod scale 2 2
3520 // tcmod stretch 1 .5 0 2
3521 blendFunc GL_ONE GL_ZERO
3522 rgbGen wave sin 1 .6 0 .5
3523 }
3524 {
3525 map models/mapobjects/test3/v_bp1.tga
3526 blendFunc blend
3527 rgbGen vertex
3528 }
3529 }
3530
3531
3532
3533 models/mapobjects/test/v_belt1
3534 {
3535 {
3536 map models/mapobjects/test/v_belt1.tga
3537 rgbGen vertex
3538 }
3539
3540 }
3541
3542
3543 models/mapobjects/test/vgun
3544 {
3545 {
3546 map models/mapobjects/test/vgun.tga
3547 rgbGen vertex
3548 }
3549
3550 }
3551
3552
3553
3554 models/mapobjects/test/eye1
3555 {
3556 {
3557 map models/mapobjects/test/eye1.tga
3558 rgbGen vertex
3559 }
3560 {
3561 map models/mapobjects/test/venom_gogs_fx.tga
3562 blendfunc GL_ONE GL_ONE
3563 tcMod scroll 1.2 9.3
3564
3565 }
3566 }
3567
3568 models/players/venom/eye1
3569 {
3570 {
3571 map models/players/venom/eye1.tga
3572 rgbGen vertex
3573 }
3574 {
3575 map models/players/venom/venom_gogs_fx.tga
3576 blendfunc GL_ONE GL_ONE
3577 tcMod scroll 1.2 9.3
3578
3579 }
3580 }
3581
3582
3583 ////trenchcoat///////
3584 models/players/infantry/t_legs1
3585
3586 {
3587 cull twosided
3588 {
3589 map models/players/infantry/t_legs1.tga
3590 blendFunc GL_ONE GL_ZERO
3591 rgbGen lightingdiffuse
3592 // rgbGen identity
3593 }
3594
3595 }
3596
3597
3598
3599
3600 ////loper///
3601 models/players/loper/elec1_bak
3602 {
3603 cull twosided
3604 {
3605 map models/players/loper/elec1.tga
3606 blendFunc GL_ONE GL_ONE
3607 rgbGen identity
3608 }
3609
3610 }
3611
3612 models/players/loper/elec1
3613 {
3614 cull twosided
3615 {
3616 // blendFunc blend
3617 blendFunc add
3618 animMap 13 models/players/loper/elec1.tga models/players/loper/elec2.tga models/players/loper/elec3.tga
3619 // rgbGen wave sin 1 .6 0 .5
3620 rgbGen identity
3621
3622 }
3623
3624
3625 }
3626
3627
3628
3629 ////lowertest//////
3630
3631 models/mapobjects/test/elec1
3632 {
3633 cull twosided
3634 {
3635 // blendFunc blend
3636 blendFunc add
3637 animMap 15 models/mapobjects/test/elec1.tga models/mapobjects/test/elec2.tga models/mapobjects/test/elec3.tga
3638 //rgbGen wave sin 1 .6 0 .5
3639 }
3640 }
3641
3642
3643
3644
3645
3646
3647 models/players/loper/lop_lower1
3648 {
3649 {
3650 map models/players/loper/spark.tga
3651 tcmod rotate 350
3652 tcmod scale -1 -1
3653 blendFunc GL_ONE GL_ZERO
3654 rgbGen identity
3655 }
3656 {
3657 map models/players/loper/lop_lower1.tga
3658 blendFunc blend
3659 rgbGen lightingdiffuse
3660 }
3661 }
3662 models/players/loper/lop_head1
3663 {
3664 cull twosided
3665 {
3666 map models/players/loper/lop_head1.tga
3667 alphaFunc GE128
3668 rgbGen lightingdiffuse
3669
3670 }
3671
3672 }
3673
3674 models/mapobjects/test/lophead
3675 {
3676 {
3677 map models/mapobjects/test/lophead.tga
3678 rgbGen vertex
3679 }
3680
3681 }
3682
3683 models/mapobjects/test/lopbody
3684 {
3685 {
3686 map models/mapobjects/test/lopbody.tga
3687 rgbGen vertex
3688 }
3689
3690 }
3691
3692 models/mapobjects/test/loplower
3693 {
3694 {
3695 map models/mapobjects/test/loplower.tga
3696 rgbGen vertex
3697 }
3698
3699 }
3700
3701 //models/mapobjects/lop/elec1
3702 //{
3703 // deformVertexes wave 10 sin 0 2 0 .2
3704 // cull twosided
3705 //
3706 // {
3707 // map models/mapobjects/tree/elec1.tga
3708 // blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3709 // alphaFunc GT0
3710 // depthWrite
3711 // rgbGen vertex
3712 // }
3713 //}
3714
3715 /////cintest///
3716 models/mapobjects/shadtest/cin
3717 {
3718
3719 {
3720 map models/mapobjects/shadtest/chrome1.tga
3721 tcGen environment
3722 blendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
3723 rgbGen lightingDiffuse
3724
3725 }
3726 { map models/players/venom/eye1.tga
3727 // blendFunc GL_ONE GL_ONE
3728 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3729 tcmod scale 1 1
3730 tcMod scroll 2 -2
3731 tcmod rotate 179
3732 rgbGen lightingDiffuse
3733 }
3734 {
3735 map models/mapobjects/shadtest/cin.tga
3736 // blendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
3737 // rgbGen exactVertex
3738 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3739 alphaFunc GE128
3740 depthWrite
3741 rgbGen vertex
3742
3743 }
3744 }
3745
3746
3747
3748
3749 // maxx tree test ////
3750 //GL_ONE_MINUS_SRC_ALPHA
3751
3752 //
3753 //
3754
3755 models/mapobjects/tree/branch3a
3756 {
3757 surfaceparm alphashadow
3758
3759
3760 deformVertexes wave 194 sin 0 2 0 .1
3761 deformVertexes wave 30 sin 0 1 0 .3
3762 deformVertexes wave 194 sin 0 1 0 .4
3763
3764 cull twosided
3765
3766 {
3767 map models/mapobjects/tree/branch3.tga
3768
3769
3770 alphaFunc GE128
3771 depthWrite
3772 rgbGen vertex
3773
3774 }
3775 }
3776
3777
3778 models/mapobjects/tree/branch4
3779 {
3780 surfaceparm alphashadow
3781
3782
3783 deformVertexes wave 194 sin 0 2 0 .1
3784 deformVertexes wave 30 sin 0 1 0 .3
3785 deformVertexes wave 194 sin 0 1 0 .4
3786
3787 cull twosided
3788
3789 {
3790 map models/mapobjects/tree/branch4.tga
3791
3792
3793 alphaFunc GE128
3794 depthWrite
3795 rgbGen vertex
3796
3797 }
3798 }
3799
3800
3801 ////c test////
3802 models/mapobjects/test/tree
3803 {
3804 surfaceparm alphashadow
3805
3806
3807 deformVertexes wave 194 sin 0 2 0 .1
3808 deformVertexes wave 30 sin 0 1 0 .3
3809 deformVertexes wave 194 sin 0 1 0 .4
3810
3811 cull twosided
3812
3813 {
3814 map models/mapobjects/test/tree.tga
3815
3816
3817 alphaFunc GE128
3818 depthWrite
3819 rgbGen vertex
3820
3821 }
3822 }
3823
3824 models/mapobjects/tree/branch5
3825 {
3826 surfaceparm alphashadow
3827
3828
3829 deformVertexes wave 194 sin 0 2 0 .1
3830 deformVertexes wave 30 sin 0 1 0 .3
3831 deformVertexes wave 194 sin 0 1 0 .4
3832
3833 cull twosided
3834
3835 {
3836 map models/mapobjects/tree/branch5.tga
3837
3838
3839 alphaFunc GE128
3840 depthWrite
3841 rgbGen vertex
3842
3843 }
3844 }
3845
3846
3847 models/mapobjects/tree/branch6
3848 {
3849 surfaceparm alphashadow
3850
3851
3852 deformVertexes wave 194 sin 0 2 0 .1
3853 deformVertexes wave 30 sin 0 1 0 .3
3854 deformVertexes wave 194 sin 0 1 0 .4
3855
3856 cull twosided
3857
3858 {
3859 map models/mapobjects/tree/branch6.tga
3860
3861
3862 alphaFunc GE128
3863 depthWrite
3864 rgbGen vertex
3865
3866 }
3867 }
3868
3869 models/mapobjects/tree/pine3
3870 {
3871 surfaceparm alphashadow
3872
3873
3874 deformVertexes wave 194 sin 0 2 0 .1
3875 deformVertexes wave 30 sin 0 1 0 .3
3876 deformVertexes wave 194 sin 0 1 0 .4
3877
3878 cull twosided
3879
3880 {
3881 map models/mapobjects/tree/pine3.tga
3882
3883
3884 alphaFunc GE128
3885 depthWrite
3886 rgbGen identity
3887
3888 }
3889 }
3890
3891 models/mapobjects/tree/branch8
3892 {
3893 surfaceparm alphashadow
3894
3895
3896 deformVertexes wave 194 sin 0 2 0 .1
3897 deformVertexes wave 30 sin 0 1 0 .3
3898 deformVertexes wave 194 sin 0 1 0 .4
3899
3900 cull twosided
3901
3902 {
3903 map models/mapobjects/tree/branch8.tga
3904
3905
3906 alphaFunc GE128
3907 depthWrite
3908 rgbGen vertex
3909
3910 }
3911 }
3912
3913
3914 models/mapobjects/tree/trunck3
3915 {
3916 {
3917 map models/mapobjects/tree/trunck3.tga
3918 rgbGen identity
3919 }
3920
3921 }
3922
3923
3924
3925 //
3926 // this is the current trunk on the tree (SA)
3927 //
3928 models/mapobjects/tree/trunck2
3929 {
3930 {
3931 map models/mapobjects/tree/trunck2.tga
3932 rgbGen vertex
3933 }
3934
3935 }
3936 //
3937 // ////maxx truck test/////
3938 //
3939
3940 models/mapobjects/vehicles/truckside4
3941
3942
3943 {
3944
3945 cull twosided
3946
3947 {
3948 map models/mapobjects/vehicles/truckside4.tga
3949 alphaFunc GE128
3950 depthWrite
3951 // rgbGen vertex
3952 // rgbGen lightingdiffuse
3953 rgbGen identity
3954 }
3955 }
3956
3957 /// jason mauser texture temp ///
3958
3959 models/mapobjects/nazi/mauser
3960 {
3961 {
3962 map models/mapobjects/weapons/mauser.tga
3963 rgbGen vertex
3964 }
3965
3966 }
3967
3968
3969 //
3970 // ////maxx scale nazi test soldier/////
3971 //
3972 models/mapobjects/nazi/temphead
3973 {
3974 {
3975 map models/mapobjects/nazi/temphead.tga
3976 rgbGen vertex
3977 }
3978
3979 }
3980
3981 models/mapobjects/nazi/tempupper
3982 {
3983 {
3984 map models/mapobjects/nazi/tempupper.tga
3985 rgbGen vertex
3986 }
3987
3988 }
3989
3990 models/mapobjects/nazi/templower
3991 {
3992 {
3993 map models/mapobjects/nazi/templower.tga
3994 rgbGen vertex
3995 }
3996
3997 }
3998
3999 models/mapobjects/nazi/sten
4000 {
4001 {
4002 map models/mapobjects/nazi/sten.tga
4003 rgbGen vertex
4004 }
4005
4006 }
4007
4008
4009 ///
4010 ///
4011 ///
4012 models/mapobjects/lamps/beam
4013 {
4014 surfaceparm trans
4015 surfaceparm nomarks
4016 surfaceparm nonsolid
4017 surfaceparm nolightmap
4018 deformVertexes move 0 0 2 sin 0 5 0 0.3
4019 deformVertexes move .6 .8 0 sin 0 9 0 0.1
4020 cull none
4021 //nopicmip
4022 {
4023 map models/mapobjects/lamps/beam.tga
4024 tcMod Scroll .3 0
4025 blendFunc GL_ONE GL_ONE
4026 }
4027 {
4028 map models/mapobjects/lamps/beam.tga
4029 tcMod Scroll -.3 0
4030 blendFunc GL_ONE GL_ONE
4031 }
4032
4033 }
4034
4035 ///////////////////////////////////
4036 /// Start of Floating Skull Bot //
4037 ///////////////////////////////////
4038
4039 models/mapobjects/lamps/bot_flare
4040 {
4041 deformVertexes autoSprite
4042 deformVertexes move 0 0 3 sin 0 5 0 0.1
4043 deformVertexes move 2 2 0 sin 0 9 0 0.05
4044 surfaceparm trans
4045 surfaceparm nomarks
4046 surfaceparm nolightmap
4047 cull none
4048
4049 {
4050 clampmap models/mapobjects/lamps/bot_flare.tga
4051 blendFunc GL_ONE GL_ONE
4052 tcMod rotate 20
4053
4054
4055 }
4056
4057
4058 }
4059
4060 models/mapobjects/lamps/bot_flare2
4061 {
4062 deformVertexes move 0 0 3 sin 0 5 0 0.1
4063 deformVertexes move 2 2 0 sin 0 9 0 0.05
4064 deformVertexes wave 100 sin 0 1 0 9
4065 surfaceparm trans
4066 surfaceparm nomarks
4067 surfaceparm nolightmap
4068 cull none
4069
4070 {
4071 map models/mapobjects/lamps/bot_flare2.tga
4072 blendFunc GL_ONE GL_ONE
4073
4074 }
4075
4076
4077 }
4078
4079 models/mapobjects/lamps/bot_lamp
4080 {
4081 deformVertexes move 0 0 3 sin 0 5 0 0.1
4082 deformVertexes move 2 2 0 sin 0 9 0 0.05
4083
4084 {
4085 map models/mapobjects/lamps/bot_lamp.tga
4086 rgbGen vertex
4087
4088 }
4089
4090
4091 }
4092 models/mapobjects/lamps/bot_lamp2
4093 {
4094 deformVertexes move 0 0 3 sin 0 5 0 0.1
4095 deformVertexes move 2 2 0 sin 0 9 0 0.05
4096
4097 {
4098 map models/mapobjects/lamps/bot_lamp2.tga
4099 rgbGen vertex
4100
4101 }
4102
4103
4104 }
4105 models/mapobjects/lamps/bot_wing
4106 {
4107 deformVertexes move 0 0 3 sin 0 5 0 0.1
4108 deformVertexes move 2 2 0 sin 0 9 0 0.05
4109 deformVertexes wave 100 sin 0 .5 0 .5
4110 cull disable
4111
4112 {
4113 map models/mapobjects/lamps/bot_wing.tga
4114 alphaFunc GE128
4115 depthWrite
4116 rgbGen vertex
4117 }
4118
4119
4120 }
4121 models/mapobjects/gratelamp/gratetorch
4122 {
4123 cull disable
4124
4125 {
4126 map models/mapobjects/gratelamp/gratetorch.tga
4127 alphaFunc GE128
4128 depthWrite
4129 rgbGen vertex
4130 }
4131
4132
4133 }
4134 models/mapobjects/gratelamp/gratetorch2b
4135 {
4136 cull disable
4137
4138 {
4139 map models/mapobjects/gratelamp/gratetorch2b.tga
4140 alphaFunc GE128
4141 depthWrite
4142 rgbGen vertex
4143 }
4144
4145
4146 }
4147 models/mapobjects/chain/chain3
4148 {
4149 {
4150 map $whiteimage
4151 rgbGen identity
4152 }
4153 {
4154 map models/mapobjects/chain/chain3.tga
4155 blendFunc GL_DST_COLOR GL_SRC_ALPHA
4156 rgbGen identity
4157 alphaGen lightingSpecular
4158 }
4159 {
4160 map models/mapobjects/chain/chain3.tga
4161 //blendFunc GL_ONE GL_ONE
4162 blendFunc GL_DST_COLOR GL_ZERO
4163 rgbGen identity
4164 }
4165
4166
4167 }
4168
4169 models/flags/flagbits
4170 {
4171 cull none
4172 // deformVertexes wave 100 sin 0 5 0 .7
4173 {
4174 map models/flags/flagbits.tga
4175 //blendfunc gl_src_alpha gl_one_minus_src_alpha
4176 alphaFunc GE128
4177 rgbGen lightingDiffuse
4178 depthWrite
4179 }
4180
4181
4182 }
4183 models/flags/r_flag2
4184 {
4185
4186 //deformVertexes wave 100 sin 4 3 0 0.3
4187 deformVertexes wave 30 sin 0 3 0 .8
4188 deformVertexes wave 194 sin 0 3 0 .4
4189 deformVertexes wave 300 sin 0 4 0 .1
4190 cull none
4191
4192 {
4193 map models/flags/r_flag2.tga
4194 rgbGen lightingDiffuse
4195 }
4196 {
4197 map textures/effects/blueflagmap.tga
4198 tcGen environment
4199 tcmod scale 9 3
4200 tcmod scroll .1 .7
4201
4202 blendFunc GL_ONE GL_ONE
4203 rgbGen lightingDiffuse
4204 }
4205 {
4206 map models/flags/r_flag2.tga
4207 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4208 rgbGen lightingDiffuse
4209 }
4210 }
4211 models/flags/b_flag2
4212 {
4213
4214 //deformVertexes wave 100 sin 4 3 0 0.3
4215 deformVertexes wave 194 sin 0 3 0 .4
4216 cull none
4217
4218 {
4219 map models/flags/b_flag2.tga
4220 rgbGen lightingDiffuse
4221 }
4222 {
4223 map textures/effects/redflagmap.tga
4224 tcGen environment
4225 tcmod scale 9 3
4226 tcmod scroll .1 .7
4227
4228 blendFunc GL_ONE GL_ONE
4229 rgbGen lightingDiffuse
4230 }
4231 {
4232 map models/flags/b_flag2.tga
4233 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4234 rgbGen lightingDiffuse
4235 }
4236 }
4237 models/flags/flag_red
4238 {
4239 cull none
4240 deformVertexes wave 90 sin 1 5.6 1 .4
4241 deformVertexes wave 100 sin 1 2 1 .9
4242 deformVertexes wave 50 sin 1 .5 1 1
4243 {
4244 map models/flags/flag_red.tga
4245 //blendfunc gl_src_alpha gl_one_minus_src_alpha
4246 //alphaFunc GE128
4247 blendFunc GL_ONE GL_ONE
4248 rgbGen lightingDiffuse
4249 depthWrite
4250 }
4251
4252
4253 }
4254 models/mapobjects/bitch/hologirl
4255 {
4256 cull none
4257 //sort additive // alphaFunc with a later blend pass doesn't
4258 // make its own sort properly
4259 deformVertexes move 0 0 .7 sin 0 5 0 0.2
4260
4261
4262 {
4263 map models/mapobjects/bitch/hologirl.tga
4264 // blendfunc gl_src_alpha gl_one_minus_src_alpha
4265 alphaFunc GE128
4266 depthWrite
4267 rgbGen vertex
4268
4269 }
4270 {
4271
4272 //map textures/effects/envmapcirc3.tga
4273
4274 map models/mapobjects/bitch/hologirl2.tga
4275 tcgen environment
4276 tcMod scroll -6 -.2
4277 tcMod scale 1 1
4278 blendFunc GL_ONE GL_ONE
4279 rgbGen identity
4280 //rgbGen vertex
4281 }
4282
4283
4284 }
4285 models/mapobjects/bitch/bitch02
4286 {
4287 cull none
4288
4289 {
4290 Map models/mapobjects/bitch/bitch02.tga
4291 blendFunc GL_ONE GL_ONE
4292 tcGen environment
4293 tcMod scroll 0 0.3
4294 }
4295
4296
4297
4298 }
4299 models/mapobjects/barrel/barrel2
4300 {
4301
4302 {
4303 Map models/mapobjects/barrel/barrel2.tga
4304 rgbgen vertex
4305
4306 }
4307 {
4308 clampmap models/mapobjects/barrel/barrel2fx.tga
4309 blendFunc GL_ONE GL_ONE
4310 // rgbgen wave triangle 1 1.4 0 9.5
4311 tcMod rotate 403
4312 }
4313 {
4314 clampmap models/mapobjects/barrel/barrel2fx.tga
4315 blendFunc GL_ONE GL_ONE
4316 // rgbgen wave triangle 1 1 0 8.7
4317 tcMod rotate -100
4318 }
4319
4320 }
4321 models/weaphits/electric
4322 {
4323 cull none
4324
4325 {
4326 clampmap models/weaphits/electric.tga
4327 blendFunc GL_ONE GL_ONE
4328 rgbgen wave triangle .8 2 0 9
4329 tcMod rotate 360
4330 }
4331 {
4332 clampmap models/weaphits/electric.tga
4333 blendFunc GL_ONE GL_ONE
4334 rgbgen wave triangle 1 1.4 0 9.5
4335 tcMod rotate -202
4336 }
4337
4338 }
4339 models/mapobjects/flares/electric
4340 {
4341
4342
4343 q3map_surfacelight 200
4344
4345 surfaceparm trans
4346 surfaceparm nomarks
4347 surfaceparm nolightmap
4348 cull none
4349
4350 {
4351 clampmap models/mapobjects/flares/electric.tga
4352 blendFunc GL_ONE GL_ONE
4353 rgbgen wave triangle .8 2 0 9
4354 tcMod rotate 360
4355 }
4356 {
4357 clampmap models/mapobjects/flares/electric.tga
4358 blendFunc GL_ONE GL_ONE
4359 rgbgen wave triangle 1 1.4 0 9.5
4360 tcMod rotate -202
4361 }
4362
4363 }
4364 models/players/anarki/anarki_board
4365
4366 {
4367 {
4368 map models/players/anarki/anarki_board.tga
4369 rgbGen vertex
4370 }
4371 {
4372
4373 map models/players/anarki/anarki_board2.tga
4374 tcGen environment
4375 tcmod scroll 1 0
4376 rgbGen lightingDiffuse
4377 blendfunc gl_ONE gl_ONE
4378 }
4379 }
4380
4381 //models/players/anarki/anarki_g
4382 //
4383 //{
4384 // {
4385 // map models/players/anarki/anarki_g.tga
4386 // rgbGen vertex
4387 // }
4388 // {
4389 //
4390 // map models/players/anarki/anarki_g2.tga
4391 // rgbGen lightingDiffuse
4392 // rgbGen wave triangle 0 1 0 .5
4393 // blendfunc gl_ONE gl_ONE
4394 // }
4395 //}
4396 //
4397 models/mapobjects/wallhead/femhead
4398
4399 {
4400 deformVertexes wave 100 sin 0 .7 0 .2
4401 //deformVertexes wave 100 sin 0 1 1 .1
4402 cull disable
4403
4404 {
4405 map models/mapobjects/wallhead/femhead3.tga
4406 rgbGen vertex
4407 }
4408 {
4409 //animMap 0.5 models/mapobjects/wallhead/femhead4.tga //models/mapobjects/wallhead/femhead2.tga
4410 map models/mapobjects/wallhead/femhead4.tga
4411 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4412 alphaGen wave sin 0 1 1 .1
4413 // alphaGen wave triangle 0 .7 0 .2
4414 rgbGen vertex
4415 }
4416
4417 }
4418 models/mapobjects/wallhead/wallhead_eye
4419
4420 {
4421
4422
4423 {
4424 animMap 0.2 models/mapobjects/wallhead/wallhead_eye.tga models/mapobjects/wallhead/wallhead_eye2.tga
4425 rgbGen vertex
4426 }
4427
4428
4429 }
4430 models/mapobjects/wallhead/wallhead
4431
4432 {
4433
4434
4435 {
4436 map models/mapobjects/wallhead/wallhead.tga
4437 rgbGen vertex
4438 }
4439
4440 }
4441 //models/mapobjects/wallhead/femhead
4442 //{
4443 // deformVertexes wave 100 sin 0 .7 0 .2
4444 // cull disable
4445 //
4446 //
4447 // {
4448 // map models/mapobjects/wallhead/femhead2.tga
4449 // rgbGen vertex
4450 // }
4451 // {
4452 // map models/mapobjects/wallhead/femhead.tga
4453 // Blendfunc GL_ONE GL_ONE
4454 // rgbGen vertex
4455 // rgbGen wave triangle 0 1 0 .05
4456 // }
4457 //
4458 //}
4459
4460 //models/mapobjects/wallhead/tongue
4461 //{
4462 // {
4463 // //rgbGen lightingDiffuse
4464 // map $whiteimage
4465 // rgbGen vertex
4466 // }
4467 // {
4468 // map models/mapobjects/wallhead/tongue.tga
4469 // blendFunc GL_DST_COLOR GL_SRC_ALPHA
4470 // rgbGen identity
4471 // alphaGen lightingSpecular
4472 // }
4473 //}
4474
4475 models/players/mynx/sonja_shiny
4476 {
4477 {
4478 map models/players/mynx/sonja_shiny.tga
4479 rgbGen lightingDiffuse
4480 }
4481 {
4482 map textures/effects/tinfx2.tga
4483 tcGen environment
4484 //blendFunc GL_DST_COLOR GL_ZERO
4485 blendFunc GL_ONE GL_ONE
4486 rgbGen lightingDiffuse
4487 }
4488
4489
4490 }
4491 models/players/razor/malaki
4492 {
4493
4494 {
4495 map $whiteimage
4496 rgbGen lightingDiffuse
4497 }
4498 //{
4499 // map textures/effects/tinfx.tga
4500 // tcGen environment
4501 // blendFunc GL_ONE GL_ONE
4502 // rgbGen lightingDiffuse
4503 //}
4504 {
4505 map models/players/razor/malaki.tga
4506 blendFunc GL_DST_COLOR GL_SRC_ALPHA
4507 rgbGen identity
4508 alphaGen lightingSpecular
4509 }
4510
4511 }
4512 models/mapobjects/scoreboard/s_name
4513 {
4514 sort additive
4515 cull disable
4516 deformVertexes text0
4517 {
4518 map gfx/2d/bigchars.tga
4519 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4520 rgbGen identity
4521 }
4522 }
4523
4524
4525 models/mapobjects/scoreboard/s_score
4526 {
4527 sort additive
4528 cull disable
4529 deformVertexes text1
4530 {
4531 map gfx/2d/bigchars.tga
4532 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4533 rgbGen identity
4534 }
4535 }
4536
4537
4538 //models/weapons2/lightning/crackle1
4539 //{
4540 // sort additive
4541 // cull disable
4542 //
4543 // {
4544 // animMap 15 models/weapons2/lightning/crackle1.tga models/weapons2/lightning/crackle2.tga models/weapons2/lightning/crackle3.tga models/weapons2/lightning/crackle4.tga models/weapons2/lightning/crackle5.tga models/weapons2/lightning/crackle6.tga models/weapons2/lightning/crackle7.tga models/weapons2/lightning/crackle8.tga
4545 // blendFunc GL_ONE GL_ONE
4546 // }
4547 //
4548 //}
4549
4550 models/weapons2/lightning/button
4551 {
4552 {
4553 map models/weapons2/lightning/button.tga
4554 blendFunc GL_ONE GL_ONE
4555 rgbGen wave sin 1 1 0 1
4556 }
4557
4558 }
4559
4560 models/weapons2/lightning/glass
4561 {
4562 {
4563 map models/weapons2/lightning/glass.tga
4564 }
4565 {
4566 map textures/effects/envmapdim.tga
4567 tcGen environment
4568 blendfunc GL_ONE GL_ONE
4569 rgbGen lightingDiffuse
4570 }
4571 }
4572 models/weapons2/lightning/trail
4573 {
4574 {
4575 map models/weapons2/lightning/trail.tga
4576 tcMod scroll 3.1 1
4577 rgbgen wave triangle 1 2 0 7
4578 blendfunc GL_ONE GL_ONE
4579 }
4580 {
4581 map models/weapons2/lightning/trail.tga
4582 tcMod scroll -1.7 1
4583 rgbgen wave triangle 1 1.1 0 5.1
4584 blendfunc GL_ONE GL_ONE
4585 }
4586 }
4587 models/weapons2/lightning/trail2
4588 {
4589 {
4590 map models/weapons2/lightning/trail2.tga
4591 tcMod scroll 3.1 1
4592 rgbgen wave triangle 1 2 0 7
4593 blendfunc GL_ONE GL_ONE
4594 }
4595 {
4596 map models/weapons2/lightning/trail2.tga
4597 tcMod scroll -1.7 1
4598 rgbgen wave triangle 1 1.1 0 5.1
4599 blendfunc GL_ONE GL_ONE
4600 }
4601 }
4602
4603 models/weapons2/lightning/trail1
4604 {
4605 sort additive
4606 cull disable
4607
4608 {
4609 animMap 15 models/weapons2/lightning/trail1.tga models/weapons2/lightning/trail2.tga models/weapons2/lightning/trail3.tga models/weapons2/lightning/trail4.tga
4610 blendFunc GL_ONE GL_ONE
4611 rgbGen vertex
4612 }
4613
4614 }
4615
4616 models/weapons2/lightning/ball1
4617 {
4618 sort additive
4619 cull disable
4620
4621 {
4622 animMap 15 models/weapons2/lightning/ball1.tga models/weapons2/lightning/ball2.tga
4623 blendFunc GL_ONE GL_ONE
4624 rgbGen vertex
4625 }
4626
4627 }
4628
4629 models/mapobjects/slamp/slamp3
4630 {
4631 deformVertexes autoSprite2
4632 surfaceparm trans
4633 surfaceparm nomarks
4634 surfaceparm nolightmap
4635 cull none
4636 q3map_surfacelight 100
4637
4638 {
4639 map models/mapobjects/slamp/slamp3.tga
4640 blendFunc GL_ONE GL_ONE
4641
4642 }
4643
4644
4645 }
4646 models/mapobjects/slamp/slamp2
4647 {
4648 cull disable
4649 surfaceparm trans
4650 surfaceparm nomarks
4651 surfaceparm nolightmap
4652
4653 {
4654 map models/mapobjects/slamp/slamp2.tga
4655 blendFunc GL_ONE GL_ONE
4656 }
4657 {
4658 map textures/effects/envmapdimb.tga
4659 tcGen environment
4660 blendfunc GL_ONE GL_ONE
4661 //rgbGen lightingDiffuse
4662 }
4663
4664
4665 }
4666
4667 models/mapobjects/lightning/white/white1
4668 {
4669 deformVertexes wave 100 sin 0 1 0 5
4670 q3map_surfacelight 3000
4671
4672 surfaceparm trans
4673 surfaceparm nomarks
4674 surfaceparm nolightmap
4675 cull none
4676
4677 {
4678 animMap 15 models/mapobjects/lightning/white/white1.tga models/mapobjects/lightning/white/white2.tga models/mapobjects/lightning/white/white3.tga models/mapobjects/lightning/white/white4.tga models/mapobjects/lightning/white/white5.tga models/mapobjects/lightning/white/white6.tga models/mapobjects/lightning/white/white7.tga models/mapobjects/lightning/white/white8.tga
4679 blendFunc GL_ONE GL_ONE
4680 rgbGen vertex
4681 }
4682
4683 }
4684
4685 models/mapobjects/lightning/red/red01
4686 {
4687 deformVertexes wave 100 sin 0 1 0 5
4688 q3map_surfacelight 3000
4689
4690 surfaceparm trans
4691 surfaceparm nomarks
4692 surfaceparm nolightmap
4693 cull none
4694
4695 {
4696 animMap 15 models/mapobjects/lightning/red/red01.tga models/mapobjects/lightning/red/red02.tga models/mapobjects/lightning/red/red03.tga models/mapobjects/lightning/red/red04.tga models/mapobjects/lightning/red/red05.tga models/mapobjects/lightning/red/red06.tga models/mapobjects/lightning/red/red07.tga models/mapobjects/lightning/red/red08.tga
4697 blendFunc GL_ONE GL_ONE
4698 rgbGen vertex
4699 }
4700
4701 }
4702
4703 models/mapobjects/lightning/yel/yel01
4704 {
4705 deformVertexes wave 100 sin 0 1 0 5
4706 q3map_surfacelight 3000
4707
4708 surfaceparm trans
4709 surfaceparm nomarks
4710 surfaceparm nolightmap
4711 cull none
4712
4713 {
4714 animMap 15 models/mapobjects/lightning/yel/yel01.tga models/mapobjects/lightning/yel/yel02.tga models/mapobjects/lightning/yel/yel03.tga models/mapobjects/lightning/yel/yel04.tga models/mapobjects/lightning/yel/yel05.tga models/mapobjects/lightning/yel/yel06.tga models/mapobjects/lightning/yel/yel07.tga models/mapobjects/lightning/yel/yel08.tga
4715 blendFunc GL_ONE GL_ONE
4716 rgbGen vertex
4717 }
4718
4719 }
4720
4721 models/mapobjects/lightning/blu/blu01
4722 {
4723 deformVertexes wave 100 sin 0 1 0 5
4724 q3map_surfacelight 3000
4725
4726 surfaceparm trans
4727 surfaceparm nomarks
4728 surfaceparm nolightmap
4729 cull none
4730
4731 {
4732 animMap 15 models/mapobjects/lightning/blu/blu01.tga models/mapobjects/lightning/blu/blu02.tga models/mapobjects/lightning/blu/blu03.tga models/mapobjects/lightning/blu/blu04.tga models/mapobjects/lightning/blu/blu05.tga models/mapobjects/lightning/blu/blu06.tga models/mapobjects/lightning/blu/blu07.tga models/mapobjects/lightning/blu/blu08.tga
4733 blendFunc GL_ONE GL_ONE
4734 rgbGen vertex
4735 }
4736
4737 }
4738
4739 models/mapobjects/pitted_rust_ps
4740 {
4741 cull disable
4742
4743 {
4744 map models/mapobjects/pitted_rust_ps.tga
4745 rgbGen vertex
4746 }
4747
4748
4749 }
4750
4751 models/mapobjects/signs/bioh
4752 {
4753 cull disable
4754
4755 {
4756 map models/mapobjects/signs/bioh.tga
4757 rgbGen vertex
4758 }
4759
4760
4761 }
4762 models/mapobjects/gratelamp/gratelamp
4763 {
4764 cull disable
4765
4766 {
4767 map models/mapobjects/gratelamp/gratelamp.tga
4768 alphaFunc GE128
4769 depthWrite
4770 rgbGen vertex
4771 }
4772
4773
4774 }
4775 models/mapobjects/gratelamp/gratelamp_flare
4776 {
4777 cull none
4778 {
4779 map models/mapobjects/gratelamp/gratelamp_flare.tga
4780 blendFunc GL_ONE GL_ONE
4781 rgbGen vertex
4782 }
4783
4784 // deformVertexes autoSprite
4785 //
4786 // q3map_surfacelight 300
4787 //
4788 // surfaceparm trans
4789 // surfaceparm nomarks
4790 // surfaceparm nolightmap
4791 // cull none
4792 //
4793 // {
4794 // map models/mapobjects/gratelamp/gratelamp_flare.tga
4795 // blendFunc GL_ONE GL_ONE
4796 // }
4797
4798 }
4799
4800 models/weapons2/grenadel/ring
4801 {
4802
4803 {
4804 map models/weapons2/grenadel/ring.tga
4805 }
4806
4807 {
4808 map textures/effects/envmapdim.tga
4809 tcGen environment
4810 blendFunc GL_ONE GL_ONE
4811 //rgbGen identity
4812 }
4813 }
4814 models/mapobjects/chain/chain
4815 {
4816 cull disable
4817 {
4818 map models/mapobjects/chain/chain.tga
4819 alphaFunc GE128
4820 depthWrite
4821 //rgbGen vertex
4822 }
4823
4824
4825 }
4826 models/mapobjects/chain/chain2
4827 {
4828 cull disable
4829 deformVertexes autoSprite2
4830 {
4831 map models/mapobjects/chain/chain2.tga
4832 alphaFunc GE128
4833 depthWrite
4834 rgbGen vertex
4835 }
4836
4837
4838 }
4839 models/mapobjects/chain/chain2_end
4840 {
4841 cull disable
4842 deformVertexes autoSprite2
4843 {
4844 map models/mapobjects/chain/chain2_end.tga
4845 alphaFunc GE128
4846 depthWrite
4847 rgbGen vertex
4848 }
4849
4850
4851 }
4852 models/mapobjects/tree/branch
4853 {
4854 cull disable
4855 deformVertexes wave 100 sin 0 .1 0 .2
4856 surfaceparm trans
4857 {
4858 map models/mapobjects/tree/branch.tga
4859 alphaFunc GE128
4860 depthWrite
4861 //rgbGen identity
4862 //rgbGen lightingDiffuse
4863 rgbGen vertex
4864 }
4865
4866
4867 }
4868 models/players/orbb/orbb_tail
4869 {
4870
4871 {
4872 map models/players/orbb/orbb_tail.tga
4873 blendFunc GL_ONE GL_ONE
4874 tcmod scroll 0 .5
4875 rgbGen wave sin .5 .25 0 .5
4876 }
4877 }
4878 models/players/orbb/orbb_tail_blue
4879 {
4880
4881 {
4882 map models/players/orbb/orbb_tail_blue.tga
4883 blendFunc GL_ONE GL_ONE
4884 tcmod scroll 0 .5
4885 rgbGen wave sin .5 .25 0 .5
4886 }
4887 }
4888 models/players/orbb/orbb_light
4889 {
4890 {
4891 map models/players/orbb/orbb_light.tga
4892 rgbGen wave sin 1 1 0 1
4893
4894 }
4895 }
4896 models/players/orbb/orbb_light_blue
4897 {
4898 {
4899 map models/players/orbb/orbb_light_blue.tga
4900 rgbGen wave sin 1 1 0 1
4901
4902 }
4903 }
4904 models/players/orbb/orbb_h2
4905 {
4906
4907 {
4908 map models/players/orbb/orbb_h2.tga
4909 rgbGen lightingDiffuse
4910 }
4911
4912 {
4913 map textures/effects/tinfx2.tga
4914 tcGen environment
4915 blendFunc GL_ONE GL_ONE
4916 rgbGen lightingDiffuse
4917 }
4918
4919 }
4920
4921 models/players/orbb/red_h
4922 {
4923
4924 {
4925 map models/players/orbb/red_h.tga
4926 rgbGen lightingDiffuse
4927 }
4928
4929 {
4930 clampmap models/players/orbb/red_hfx.tga
4931 tcMod rotate 256
4932 blendFunc GL_ONE GL_ONE
4933 }
4934
4935 }
4936 models/players/orbb/blue_h
4937 {
4938
4939 {
4940 map models/players/orbb/blue_h.tga
4941 rgbGen lightingDiffuse
4942 }
4943
4944 {
4945 clampmap models/players/orbb/blue_hfx.tga
4946 tcMod rotate 256
4947 blendFunc GL_ONE GL_ONE
4948 }
4949
4950 }
4951 models/mapobjects/teleporter/transparency2
4952 {
4953 cull disable
4954
4955 {
4956 map models/mapobjects/teleporter/transparency2.tga
4957 blendfunc GL_ONE GL_ONE
4958 tcMod scroll .1 .2
4959 }
4960
4961 }
4962
4963 models/flags/b_flag
4964 {
4965 cull disable
4966 deformVertexes wave 100 sin 0 3 0 .7
4967
4968 {
4969 map models/flags/b_flag.tga
4970
4971 }
4972
4973
4974 }
4975
4976 models/flags/r_flag
4977 {
4978 cull disable
4979 deformVertexes wave 100 sin 0 3 0 .7
4980
4981 {
4982 map models/flags/r_flag.tga
4983
4984 }
4985
4986
4987 }
4988 models/flags/pole
4989 {
4990
4991 {
4992 map models/flags/skull.tga
4993 tcGen environment
4994 rgbGen lightingDiffuse
4995
4996 }
4997
4998
4999 }
5000 models/flags/skull
5001 {
5002
5003 {
5004 map models/flags/skull.tga
5005 //tcGen environment
5006 rgbGen lightingDiffuse
5007
5008 }
5009
5010
5011 }
5012 models/players/hunter/hunter_f
5013 {
5014 deformVertexes wave 100 sin 0 .3 0 .2
5015 cull disable
5016 {
5017 map models/players/hunter/hunter_f.tga
5018 //blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
5019 //alphaFunc GT0
5020 alphaFunc GE128
5021 depthWrite
5022 rgbGen identity
5023 }
5024
5025
5026 }
5027
5028 models/players/uriel/uriel_wing
5029 {
5030 deformVertexes wave 100 sin 0 1 0 .2
5031
5032 {
5033 map models/players/uriel/uriel_wing.tga
5034 //blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
5035 //alphaFunc GT0
5036 alphaFunc GE128
5037 depthWrite
5038 rgbGen identity
5039 }
5040
5041
5042 }
5043 models/players/uriel/uriel_h
5044 {
5045 {
5046 map models/players/uriel/uriel_h.tga
5047 }
5048 {
5049 map models/players/uriel/uriel_h_glo.tga
5050 blendfunc GL_ONE GL_ONE
5051 rgbGen wave triangle .5 1 0 .1
5052
5053 }
5054 }
5055
5056 models/players/sleeg/torso
5057 {
5058 {
5059 map models/players/sleeg/torso.tga
5060 rgbGen vertex
5061
5062 }
5063
5064 {
5065 map models/players/sleeg/torso_glo.tga
5066 blendfunc GL_ONE GL_ONE
5067 rgbGen wave triangle .5 1 0 .4
5068
5069 }
5070 }
5071
5072 models/players/bitterman/g_bitterman
5073 {
5074 {
5075 map models/players/bitterman/g_bitterman.tga
5076 tcGen environment
5077
5078 }
5079
5080
5081 }
5082
5083 menu/ken/panel
5084 {
5085 cull disable
5086
5087 {
5088 map menu/ken/panel.tga
5089 blendfunc GL_ONE GL_ONE
5090
5091 }
5092 {
5093 map menu/ken/panel_fx.tga
5094 blendfunc GL_ONE GL_ONE
5095 tcMod scroll 2.2 5.3
5096 rgbGen wave triangle .5 .5 0 .2
5097 }
5098 {
5099 map menu/ken/panel_fx.tga
5100 blendfunc GL_ONE GL_ONE
5101 tcMod scroll -3.5 -1.8
5102 rgbGen wave triangle .7 .5 0 .5
5103 }
5104 {
5105 map menu/ken/borders.tga
5106 blendfunc GL_ONE GL_ONE
5107
5108 }
5109 {
5110 map menu/ken/text.tga
5111 blendfunc GL_ONE GL_ONE
5112
5113 }
5114
5115 }
5116
5117 models/mapobjects/bitch/orb
5118 {
5119 deformVertexes autoSprite
5120
5121 q3map_surfacelight 70
5122
5123 surfaceparm trans
5124 surfaceparm nomarks
5125 surfaceparm nolightmap
5126 cull none
5127
5128 {
5129 clampmap models/mapobjects/bitch/orb.tga
5130 blendFunc GL_ONE GL_ONE
5131 tcMod rotate 30
5132 }
5133
5134 }
5135
5136 models/mapobjects/bitch/forearm
5137 {
5138 {
5139 map models/mapobjects/bitch/forearm.tga
5140 rgbGen vertex
5141 }
5142 {
5143 map models/mapobjects/bitch/forearm01.tga
5144 blendfunc GL_ONE GL_ONE
5145 tcMod scroll 2.2 0
5146
5147 }
5148 {
5149 map models/mapobjects/bitch/forearm02.tga
5150 blendfunc GL_ONE GL_ONE
5151 tcMod scroll -1.1 0
5152
5153 }
5154 }
5155
5156 models/players/parkr/parkr_head
5157 {
5158 {
5159 map textures/effects/envmap2.tga
5160 tcGen environment
5161 }
5162 }
5163
5164 models/players/parkr/parkr_chest
5165 {
5166 {
5167 map models/players/parkr/parkr_chest.tga
5168 }
5169 {
5170 AnimMap 4 models/players/parkr/parkr_chest_red.tga models/players/parkr/parkr_chest_blu.tga
5171 blendfunc GL_ONE GL_ONE
5172 }
5173 }
5174 models/mapobjects/teleporter/energy
5175 {
5176 cull disable
5177
5178
5179 {
5180 map models/mapobjects/teleporter/energy.tga
5181 blendfunc GL_ONE GL_ONE
5182 tcMod scroll 2.2 1.3
5183 rgbGen wave inversesawtooth -.3 1.3 0 1.3
5184
5185 }
5186 {
5187 map models/mapobjects/teleporter/energy2.tga
5188 blendfunc GL_ONE GL_ONE
5189 tcMod scroll -1 .5
5190 rgbGen wave inversesawtooth -.2 1.2 0 .5
5191
5192 }
5193 {
5194 map models/mapobjects/teleporter/energy3.tga
5195 blendfunc GL_ONE GL_ONE
5196 tcMod scroll 3 0
5197 rgbGen wave triangle 1 1 0 5.3
5198
5199 }
5200
5201 }
5202
5203 models/mapobjects/teleporter/widget
5204 {
5205 cull disable
5206
5207 {
5208 map models/mapobjects/teleporter/widget.tga
5209 blendfunc GL_ONE GL_ONE
5210
5211 }
5212 {
5213 map models/mapobjects/teleporter/transparency2.tga
5214 blendfunc GL_ONE GL_ONE
5215 tcMod scroll -.1 -.2
5216 }
5217
5218 }
5219
5220 models/mapobjects/teleporter/transparency
5221 {
5222 cull disable
5223
5224 {
5225 map models/mapobjects/teleporter/transparency.tga
5226 blendfunc GL_ONE GL_ONE
5227
5228 }
5229 {
5230 map models/mapobjects/teleporter/transparency2.tga
5231 blendfunc GL_ONE GL_ONE
5232 tcMod scroll .1 .2
5233 }
5234
5235 }
5236
5237 models/mapobjects/teleporter/teleporter_edge
5238 {
5239
5240
5241 {
5242 map models/mapobjects/teleporter/teleporter_edge.tga
5243 rgbGen vertex
5244 }
5245 {
5246 map models/mapobjects/teleporter/teleporter_edge2.tga
5247 blendfunc GL_ONE GL_ONE
5248 rgbgen wave inversesawtooth 0 1 .2 1.5
5249 }
5250
5251 }
5252
5253 models/mapobjects/jesus/jesuswall
5254 {
5255 deformVertexes wave 100 sin 0 .2 0 .2
5256
5257 {
5258 map models/mapobjects/jesus/jesuswall.tga
5259 rgbGen vertex
5260 }
5261
5262
5263 }
5264
5265 models/mapobjects/hand
5266 {
5267 deformVertexes wave 100 sin 0 .3 0 .2
5268
5269 {
5270 map models/mapobjects/hand.tga
5271 rgbGen vertex
5272 }
5273
5274
5275 }
5276
5277 models/mapobjects/corpse/corpse
5278 {
5279 deformVertexes wave 100 sin 0 .2 0 .2
5280
5281 {
5282 map models/mapobjects/corpse/corpse.tga
5283 rgbGen vertex
5284 }
5285
5286
5287 }
5288 models/mapobjects/skull/ribcage
5289 {
5290 sort underwater
5291 cull disable
5292 {
5293 map models/mapobjects/skull/ribcage.tga
5294 // blendfunc gl_src_alpha gl_one_minus_src_alpha
5295 alphaFunc GE128
5296 rgbGen vertex
5297 }
5298
5299
5300 }
5301
5302 models/mapobjects/baph/baphomet
5303 {
5304
5305 deformVertexes wave 100 sin 0 .3 0 .2
5306 {
5307 map models/mapobjects/baph/baphomet.tga
5308 rgbGen vertex
5309 }
5310
5311 {
5312 map models/mapobjects/baph/baphomet_glo.tga
5313 blendfunc GL_ONE GL_ONE
5314 rgbGen wave triangle .1 1 0 .2
5315
5316 }
5317 }
5318 //models/mapobjects/flag/banner_eg1
5319 //{
5320 // cull disable
5321 // surfaceparm nolightmap
5322 // deformVertexes wave 100 sin 0 8 0 8
5323 // sort banner
5324 // {
5325 // map models/mapobjects/flag/banner_eg1.tga
5326 // // blendfunc gl_src_alpha gl_one_minus_src_alpha
5327 // alphaFunc GE128
5328 // rgbGen vertex
5329 // }
5330 //
5331 //
5332 //}
5333 models/mapobjects/flag/banner_strgg
5334 {
5335 cull disable
5336 surfaceparm nolightmap
5337 surfaceparm alphashadow
5338
5339 deformVertexes wave 100 sin 0 3 0 .7
5340 sort banner
5341 {
5342 map models/mapobjects/flag/banner_strgg.tga
5343 blendfunc gl_src_alpha gl_one_minus_src_alpha
5344 alphaFunc GE128
5345 rgbGen vertex
5346 }
5347
5348
5349 }
5350 models/mapobjects/flag/banner02
5351 {
5352 cull disable
5353 surfaceparm nolightmap
5354 deformVertexes wave 100 sin 0 2 0 .7
5355
5356 {
5357 map models/mapobjects/flag/banner02.tga
5358
5359 }
5360
5361
5362 }
5363
5364 models/mapobjects/weeds/weed02
5365 {
5366 sort underwater
5367 cull disable
5368 surfaceparm nolightmap
5369 deformVertexes wave 100 sin 0 2 0 .7
5370 {
5371 map models/mapobjects/weeds/weed02.tga
5372 blendfunc gl_src_alpha gl_one_minus_src_alpha
5373 }
5374
5375
5376 }
5377 models/mapobjects/weeds/weed01
5378 {
5379 sort additive
5380 cull disable
5381 surfaceparm nolightmap
5382 deformVertexes wave 100 sin 0 2 0 .7
5383 {
5384 map models/mapobjects/weeds/weed01.tga
5385 blendfunc gl_src_alpha gl_one_minus_src_alpha
5386 }
5387
5388
5389 }
5390
5391 models/mapobjects/portal_2/portal_3_edge
5392 {
5393 {
5394 map models/mapobjects/portal_2/portal_3_edge.tga
5395 rgbGen vertex
5396 }
5397
5398 {
5399 map models/mapobjects/portal_2/portal_3_edge_glo.tga
5400 blendFunc GL_ONE GL_ONE
5401 tcMod scroll 9.7 .5
5402 }
5403
5404 }
5405
5406 models/players/razor/razor_gogs
5407 {
5408 {
5409 map models/players/razor/razor_gogs.tga
5410 tcGen environment
5411
5412 }
5413
5414
5415 {
5416 map models/players/razor/razor_gogs_fx.tga
5417 blendfunc GL_ONE GL_ONE
5418 tcMod scroll 1.2 9.3
5419
5420 }
5421 }
5422
5423 models/players/slash/slashskate
5424 {
5425 sort additive
5426 cull disable
5427 {
5428 map models/players/slash/slashskate.tga
5429 blendFunc GL_ONE GL_ONE
5430
5431 }
5432 }
5433
5434
5435 models/mapobjects/colua0/colua0_lght
5436 {
5437 surfaceparm trans
5438 {
5439 map textures/effects/envmap2.tga
5440 tcGen environment
5441 blendFunc GL_ONE GL_ONE
5442 }
5443 }
5444 models/mapobjects/colua0/colua0_flare
5445 {
5446 deformVertexes autoSprite
5447
5448 q3map_surfacelight 1000
5449
5450 surfaceparm trans
5451 surfaceparm nomarks
5452 surfaceparm nolightmap
5453 cull none
5454
5455 {
5456 Map models/mapobjects/colua0/colua0_flare.tga
5457 blendFunc GL_ONE GL_ONE
5458 }
5459
5460 }
5461 models/mapobjects/kmlamp_white
5462 {
5463
5464 surfaceparm trans
5465 {
5466 map textures/effects/envmap2.tga
5467 tcGen environment
5468 blendFunc GL_ONE GL_ONE
5469 }
5470 }
5471
5472 models/mapobjects/lamps/flare03
5473 {
5474 deformVertexes autoSprite
5475
5476 q3map_surfacelight 200
5477
5478 surfaceparm trans
5479 surfaceparm nomarks
5480 surfaceparm nolightmap
5481 cull none
5482
5483 {
5484 Map models/mapobjects/lamps/flare03.tga
5485 blendFunc GL_ONE GL_ONE
5486 }
5487
5488 }
5489
5490 //models/weapons2/chainsaw/f_chainsaw
5491 //{
5492 // sort nearest
5493 // cull back
5494 // {
5495 // map models/weapons2/chainsaw/f_chainsaw.tga
5496 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
5497 //
5498 // }
5499 //}
5500
5501 models/players/sarge/cigar
5502 {
5503 {
5504 map models/players/sarge/cigar.tga
5505
5506
5507 }
5508
5509 {
5510 map models/players/sarge/cigar.glow.tga
5511 blendfunc GL_ONE GL_ONE
5512 rgbGen wave triangle .5 1 0 .2
5513
5514 }
5515 }
5516 //
5517 // powerups
5518 //
5519 //
5520 // ammo
5521 //
5522 models/powerups/ammo/ammo_rail1
5523 {
5524 {
5525 map models/powerups/ammo/ammo_rail1.tga
5526 rgbGen lightingDiffuse
5527 }
5528 {
5529 map models/powerups/ammo/ammo_rail1.glow.tga
5530 blendfunc GL_ONE GL_ONE
5531 rgbGen wave sin 0.75 0.25 0 1
5532 }
5533 }
5534 models/powerups/ammo/ammo_rail2
5535 {
5536 {
5537 map models/powerups/ammo/ammo_rail2.tga
5538 rgbGen lightingDiffuse
5539 }
5540 {
5541 map models/powerups/ammo/ammo_rail2.glow.tga
5542 blendfunc GL_ONE GL_ONE
5543 }
5544 }
5545 models/powerups/ammo/bfgammo1
5546 {
5547 {
5548 map models/powerups/ammo/bfgammo1.tga
5549 rgbGen lightingDiffuse
5550 }
5551 {
5552 map models/powerups/ammo/bfgammo1.glow.tga
5553 blendfunc GL_ONE GL_ONE
5554 }
5555 }
5556 models/powerups/ammo/bfgammo2
5557 {
5558 {
5559 map models/powerups/ammo/bfgammo2.tga
5560 rgbGen lightingDiffuse
5561 }
5562 {
5563 map models/powerups/ammo/bfgammo2.glow.tga
5564 blendfunc GL_ONE GL_ONE
5565 }
5566 }
5567 models/powerups/ammo/bounammo1
5568 {
5569 {
5570 map models/powerups/ammo/bounammo1.tga
5571 rgbGen lightingDiffuse
5572 }
5573 }
5574 models/powerups/ammo/bounammo2
5575 {
5576 {
5577 map models/powerups/ammo/bounammo2.tga
5578 rgbGen lightingDiffuse
5579 }
5580 {
5581 map models/powerups/ammo/bounammo2.glow.tga
5582 blendfunc GL_ONE GL_ONE
5583 rgbGen lightingDiffuse
5584 }
5585 }
5586 models/powerups/ammo/flamammo1
5587 {
5588 {
5589 map models/powerups/ammo/flamammo1.tga
5590 rgbGen lightingDiffuse
5591 }
5592 }
5593 models/powerups/ammo/flamammo2
5594 {
5595 {
5596 map models/powerups/ammo/flamammo2.tga
5597 rgbGen lightingDiffuse
5598 }
5599 {
5600 map models/powerups/ammo/flamammo2.glow.tga
5601 blendfunc GL_ONE GL_ONE
5602 }
5603 }
5604 models/powerups/ammo/grenammo1
5605 {
5606 {
5607 map models/powerups/ammo/grenammo1.tga
5608 rgbGen lightingDiffuse
5609 }
5610 {
5611 map models/powerups/ammo/grenammo1.glow.tga
5612 blendfunc GL_ONE GL_ONE
5613 }
5614 }
5615 models/ammo/grenade_bak
5616 {
5617 {
5618 map models/ammo/grenade.tga
5619 }
5620 {
5621 AnimMap 7 models/ammo/grenade_r.tga models/ammo/grenade_g.tga
5622 blendfunc GL_ONE GL_ONE
5623 }
5624 }
5625 models/powerups/ammo/grenammo2
5626 {
5627 {
5628 map models/powerups/ammo/grenammo2.tga
5629 rgbGen lightingDiffuse
5630 }
5631 {
5632 map models/powerups/ammo/grenammo2.glow.tga
5633 blendfunc GL_ONE GL_ONE
5634 }
5635 }
5636 models/powerups/ammo/lighammo1
5637 {
5638 {
5639 map models/powerups/ammo/lighammo1.tga
5640 rgbGen lightingDiffuse
5641 }
5642 {
5643 map models/powerups/ammo/lighammo1.glow.tga
5644 blendfunc GL_ONE GL_ONE
5645 }
5646 }
5647 models/powerups/ammo/lighammo2
5648 {
5649 {
5650 map models/powerups/ammo/lighammo2.tga
5651 rgbGen lightingDiffuse
5652 }
5653 {
5654 map models/powerups/ammo/lighammo2.glow.tga
5655 blendfunc GL_ONE GL_ONE
5656 }
5657 }
5658 models/powerups/ammo/machammo1
5659 {
5660 {
5661 map models/powerups/ammo/machammo1.tga
5662 rgbGen lightingDiffuse
5663 }
5664 {
5665 map models/powerups/ammo/machammo1.glow.tga
5666 blendfunc GL_ONE GL_ONE
5667 rgbGen identity
5668 }
5669 }
5670 models/powerups/ammo/machammo2
5671 {
5672 {
5673 map models/powerups/ammo/machammo2.tga
5674 rgbGen lightingDiffuse
5675 }
5676 {
5677 map models/powerups/ammo/machammo2.glow.tga
5678 blendfunc GL_ONE GL_ONE
5679 rgbGen identity
5680 }
5681 }
5682 models/powerups/ammo/plasammo1
5683 {
5684 {
5685 map models/powerups/ammo/plasammo1.tga
5686 rgbGen lightingDiffuse
5687 }
5688 {
5689 map models/powerups/ammo/plasammo1.glow.tga
5690 blendfunc GL_ONE GL_ONE
5691 }
5692 }
5693 models/powerups/ammo/plasammo2
5694 {
5695 {
5696 map models/powerups/ammo/plasammo2.tga
5697 rgbGen lightingDiffuse
5698 }
5699 {
5700 map models/powerups/ammo/plasammo2.glow.tga
5701 blendfunc GL_ONE GL_ONE
5702 }
5703 }
5704 models/powerups/ammo/railammo1
5705 {
5706 {
5707 map models/powerups/ammo/railammo1.tga
5708 rgbGen lightingDiffuse
5709 }
5710 {
5711 map models/powerups/ammo/railammo1.glow.tga
5712 blendfunc GL_ONE GL_ONE
5713 rgbGen wave sin 0.75 0.25 0 1
5714 }
5715 }
5716 models/powerups/ammo/railammo2
5717 {
5718 {
5719 map models/powerups/ammo/railammo2.tga
5720 rgbGen lightingDiffuse
5721 }
5722 {
5723 map models/powerups/ammo/railammo2.glow.tga
5724 blendfunc GL_ONE GL_ONE
5725 }
5726 }
5727 models/powerups/ammo/rockammo1
5728 {
5729 {
5730 map models/powerups/ammo/rockammo1.tga
5731 rgbGen lightingDiffuse
5732 }
5733 {
5734 map models/powerups/ammo/rockammo1.glow.tga
5735 blendfunc GL_ONE GL_ONE
5736 rgbGen identity
5737 }
5738 }
5739 models/powerups/ammo/rockammo2
5740 {
5741 {
5742 map models/powerups/ammo/rockammo2.tga
5743 rgbGen lightingDiffuse
5744 }
5745 {
5746 map models/powerups/ammo/rockammo2.glow.tga
5747 blendfunc GL_ONE GL_ONE
5748 rgbGen identity
5749 }
5750 }
5751 models/powerups/ammo/shotammo1
5752 {
5753 {
5754 map models/powerups/ammo/shotammo1.tga
5755 rgbGen lightingDiffuse
5756 }
5757 {
5758 map models/powerups/ammo/shotammo1.glow.tga
5759 blendfunc GL_ONE GL_ONE
5760 }
5761 }
5762 models/powerups/ammo/shotammo2
5763 {
5764 {
5765 map models/powerups/ammo/shotammo2.tga
5766 rgbGen lightingDiffuse
5767 }
5768 {
5769 map models/powerups/ammo/shotammo2.glow.tga
5770 blendfunc GL_ONE GL_ONE
5771 }
5772 }
5773
5774 //
5775 // health
5776 //
5777 models/powerups/health/yellow
5778 {
5779
5780 {
5781 map models/powerups/health/yellow.tga
5782 rgbGen wave sin .5 .25 0 .5
5783 blendfunc GL_ONE GL_ONE
5784
5785 }
5786 }
5787 models/powerups/health/yellow_sphere
5788 {
5789 {
5790 map textures/effects/envmap2.tga
5791 tcGen environment
5792 blendfunc GL_ONE GL_ONE
5793 }
5794 }
5795 models/powerups/health/red
5796 {
5797
5798 {
5799 map models/powerups/health/red.tga
5800 rgbGen wave sin .5 .25 0 .5
5801 blendfunc GL_ONE GL_ONE
5802
5803 }
5804 }
5805 models/powerups/health/red_sphere
5806 {
5807 {
5808 map textures/effects/envmap2.tga
5809 tcGen environment
5810 blendfunc GL_ONE GL_ONE
5811 }
5812 }
5813 models/powerups/health/green
5814 {
5815
5816 {
5817 map models/powerups/health/green.tga
5818 rgbGen wave sin .5 .25 0 .5
5819 blendfunc GL_ONE GL_ONE
5820
5821 }
5822 }
5823 models/powerups/health/green_sphere
5824 {
5825 {
5826 map textures/effects/envmap2.tga
5827 tcGen environment
5828 blendfunc GL_ONE GL_ONE
5829 }
5830 }
5831 models/powerups/health/blue
5832 {
5833 {
5834 map models/powerups/health/blue.tga
5835 rgbGen wave sin .5 .25 0 .5
5836
5837 }
5838 }
5839 models/powerups/health/blue_sphere
5840 {
5841 {
5842 map textures/effects/envmap2.tga
5843 tcGen environment
5844 blendfunc GL_ONE GL_ONE
5845 }
5846 }
5847
5848
5849 //
5850 // mapobjects
5851 //
5852 models/powerups/armor/energy_red1
5853 {
5854
5855 {
5856 map models/powerups/armor/energy_red1.tga
5857 blendFunc GL_ONE GL_ONE
5858 tcMod scroll 1 1.3
5859 }
5860
5861 }
5862
5863 models/powerups/armor/energy_yel1
5864 {
5865
5866 {
5867 animmap 5 models/powerups/armor/energy_yel1.tga models/powerups/armor/energy_yel2.tga
5868 blendFunc GL_ONE GL_ONE
5869 tcMod scroll 1 1.2
5870 }
5871
5872 }
5873
5874 models/powerups/armor/energy_grn1
5875 {
5876
5877 {
5878 animmap 5 models/powerups/armor/energy_grn1.tga models/powerups/armor/energy_grn1.tga
5879 blendFunc GL_ONE GL_ONE
5880 tcMod scroll 1 1.1
5881 }
5882
5883 }
5884
5885 models/mapobjects/lamplight_ys
5886 {
5887 {
5888 map models/mapobjects/lamplight_ys.tga
5889 blendfunc GL_ONE GL_ONE
5890
5891 }
5892 }
5893
5894
5895 models/mapobjects/lamplight_y
5896 {
5897 q3map_surfacelight 10000
5898 light 1
5899 {
5900 map models/mapobjects/lamplight_y.tga
5901 blendfunc GL_ONE GL_ONE
5902
5903 }
5904 }
5905
5906 models/mapobjects/arenalogo
5907 {
5908 deformVertexes wave 100 sin 0.25 0 0 0
5909 {
5910 map textures/effects/quadmap.tga
5911 blendfunc GL_ONE GL_ONE
5912 tcGen environment
5913 tcMod turb 0 1 0 0.2
5914 }
5915 }
5916
5917 //
5918 // weapon hits
5919 //
5920 ring1
5921 {
5922 sort additive
5923 {
5924 map models/weaphits/ring02_1.tga
5925 rgbGen oneMinusEntity
5926 blendfunc GL_ONE GL_ONE
5927 }
5928 {
5929 map models/weaphits/ring02_2.tga
5930 rgbGen entity
5931 blendfunc GL_ONE GL_ONE
5932 }
5933 cull disable
5934 }
5935 ring2
5936 {
5937 sort additive
5938 {
5939 map models/weaphits/ring02_2.tga
5940 rgbGen oneMinusEntity
5941 blendfunc GL_ONE GL_ONE
5942 }
5943 {
5944 map models/weaphits/ring02_3.tga
5945 rgbGen entity
5946 blendfunc GL_ONE GL_ONE
5947 }
5948 cull disable
5949 }
5950 ring3
5951 {
5952 sort additive
5953 {
5954 map models/weaphits/ring02_3.tga
5955 rgbGen oneMinusEntity
5956 blendfunc GL_ONE GL_ONE
5957 }
5958 {
5959 map models/weaphits/ring02_4.tga
5960 rgbGen entity
5961 blendfunc GL_ONE GL_ONE
5962 }
5963 cull disable
5964
5965 }
5966 ring4
5967 {
5968 sort additive
5969 {
5970 map models/weaphits/ring02_4.tga
5971 rgbGen oneMinusEntity
5972 blendfunc GL_ONE GL_ONE
5973 }
5974 cull disable
5975 }
5976
5977 // bullet flashes
5978
5979 bullet1
5980 {
5981 sort additive
5982 cull disable
5983 {
5984 map models/weaphits/bullet1.tga
5985 rgbGen oneMinusEntity
5986 blendfunc GL_ONE GL_ONE
5987 }
5988 {
5989 map models/weaphits/bullet2.tga
5990 rgbGen entity
5991 blendfunc GL_ONE GL_ONE
5992 }
5993 }
5994 bullet2
5995 {
5996 sort additive
5997 cull disable
5998 {
5999 map models/weaphits/bullet2.tga
6000 rgbGen oneMinusEntity
6001 blendfunc GL_ONE GL_ONE
6002 }
6003 {
6004 map models/weaphits/bullet3.tga
6005 rgbGen entity
6006 blendfunc GL_ONE GL_ONE
6007 }
6008 }
6009 bullet3
6010 {
6011 sort additive
6012 cull disable
6013 {
6014 map models/weaphits/bullet3.tga
6015 rgbGen oneminusentity
6016 blendfunc GL_ONE GL_ONE
6017 }
6018 }
6019
6020
6021 blood1
6022 {
6023 {
6024 map models/weaphits/blood201.tga
6025 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6026 }
6027 cull disable
6028 }
6029 blood2
6030 {
6031 {
6032 map models/weaphits/blood202.tga
6033 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6034 }
6035 cull disable
6036 }
6037 blood3
6038 {
6039 {
6040 map models/weaphits/blood203.tga
6041 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6042 }
6043 cull disable
6044 }
6045 blood4
6046 {
6047 {
6048 map models/weaphits/blood204.tga
6049 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6050 }
6051 cull disable
6052 }
6053 blood5
6054 {
6055 {
6056 map models/weaphits/blood205.tga
6057 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6058 }
6059 cull disable
6060 }
6061
6062
6063
6064 //
6065 // weapons
6066 //
6067 //models/weapons2/machinegun/f_machinegun
6068 //{
6069 // nofog
6070 // sort additive
6071 // cull disable
6072 // {
6073 // map models/weapons2/machinegun/f_machinegun.tga
6074 //// blendfunc GL_ONE GL_ONE
6075 // }
6076 //}
6077
6078 models/weapons2/machinegun/f_machinegun
6079 {
6080 nofog
6081 sort additive
6082 cull disable
6083 {
6084 animMap 2 models/weapons2/machinegun/f_machinegun.tga models/weapons2/machinegun/f_machinegun1.tga
6085 blendfunc GL_ONE GL_ONE
6086 }
6087 }
6088
6089
6090
6091
6092
6093 models/weapons2/railgun/f_railgun2
6094 {
6095 sort additive
6096 cull disable
6097 {
6098 map models/weapons2/railgun/f_railgun2.tga
6099 blendfunc GL_ONE GL_ONE
6100 }
6101 }
6102
6103
6104
6105 models/weapons2/railgun/railgun2
6106 {
6107 sort additive
6108 cull disable
6109 {
6110 map models/weapons2/railgun/railgun2.glow.tga
6111 blendfunc GL_ONE GL_ONE
6112 rgbGen entity // identity
6113 }
6114 }
6115
6116 models/weapons2/railgun/railgun3
6117 {
6118 {
6119 map models/weapons2/railgun/railgun3.tga
6120 rgbGen lightingDiffuse
6121 }
6122
6123 {
6124 map models/weapons2/railgun/railgun3.glow.tga
6125 blendfunc GL_ONE GL_ONE
6126 rgbGen entity // identity
6127 }
6128 }
6129
6130 models/weapons2/railgun/railgun4
6131 {
6132 {
6133 map models/weapons2/railgun/railgun4.tga
6134 tcMod scroll 0 1
6135 rgbGen entity // identity
6136 }
6137
6138 }
6139
6140 models/weapons2/shotgun/f_shotgun
6141 {
6142 sort additive
6143 cull disable
6144 {
6145 map models/weapons2/shotgun/f_shotgun.tga
6146 blendfunc GL_ONE GL_ONE
6147 }
6148 }
6149
6150 models/weapons2/shotgun/shotgun_laser
6151 {
6152
6153 {
6154 map models/weapons2/shotgun/shotgun_laser.tga
6155 blendfunc GL_ONE GL_ONE
6156 }
6157 }
6158 models/weapons2/shotgun/barrel
6159 {
6160
6161 {
6162 map models/weapons2/shotgun/barrel.tga
6163 }
6164 {
6165 map textures/effects/envmap2.tga
6166 tcGen environment
6167 blendFunc GL_ONE GL_ONE
6168 rgbGen vertex
6169 }
6170 }
6171
6172
6173
6174 models/weapons2/bfg/f_bfg
6175 {
6176 sort additive
6177 cull disable
6178 {
6179 clampmap models/weapons2/bfg/f_bfg.tga
6180 blendfunc GL_ONE GL_ONE
6181 // rgbgen wave triangle 1 5.1 1 7
6182 tcmod rotate 317
6183
6184 }
6185 {
6186 clampmap models/weapons2/bfg/f_bfg2.tga
6187 blendfunc GL_ONE GL_ONE
6188 tcmod rotate -511
6189 }
6190 }
6191
6192
6193 models/weapons2/grenadel/f_grenadel
6194 {
6195 sort additive
6196 cull disable
6197 {
6198 map models/weapons2/grenadel/f_grenadel.tga
6199 blendfunc GL_ONE GL_ONE
6200 }
6201 }
6202 //models/weapons2/lightning/f_lightning
6203 //{
6204 // sort additive
6205 // cull disable
6206 // {
6207 // map models/weapons2/lightning/f_lightning.tga
6208 // blendfunc GL_ONE GL_ONE
6209 // }
6210 //}
6211 sprites/plasma1
6212 {
6213 cull disable
6214 {
6215 clampmap sprites/plasmaa.tga
6216 blendfunc GL_ONE GL_ONE
6217 tcMod rotate 931
6218 }
6219 }
6220 models/ammo/rocket/rockfls1
6221 {
6222 cull disable
6223 {
6224 map models/ammo/rocket/rockfls1.tga
6225 blendfunc GL_ONE GL_ONE
6226 }
6227 }
6228 models/ammo/rocket/rockfls2
6229 {
6230 cull disable
6231 {
6232 map models/ammo/rocket/rockfls2.tga
6233 blendfunc GL_ONE GL_ONE
6234 }
6235 }
6236 models/ammo/rocket/rockflar
6237 {
6238 cull disable
6239 {
6240 map models/ammo/rocket/rockflar.tga
6241 blendfunc GL_ONE GL_ONE
6242 }
6243 }
6244
6245 sprites/plasma2
6246 {
6247 cull disable
6248 {
6249 map sprites/plasma2.tga
6250 blendfunc GL_ONE GL_ONE
6251 }
6252 }
6253 models/weapons2/plasma/f_plasma
6254 {
6255 cull disable
6256 sort additive
6257 {
6258 map models/weapons2/plasma/f_plasma.tga
6259 blendfunc GL_ONE GL_ONE
6260 }
6261 }
6262 models/weapons2/flamethrower/f_flamethrower
6263 {
6264 cull disable
6265 sort additive
6266 {
6267 map models/weapons2/flamethrower/f_flamethrower.tga
6268 blendfunc GL_ONE GL_ONE
6269 }
6270 }
6271 models/weapons2/grapple/f_grapple
6272 {
6273 cull disable
6274 sort additive
6275 {
6276 map models/weapons2/grapple/f_grapple.tga
6277 blendfunc GL_ONE GL_ONE
6278 }
6279 }
6280 models/weapons2/rocketl/f_rocketl
6281 {
6282 cull disable
6283 sort additive
6284 {
6285 map models/weapons2/rocketl/f_rocketl.tga
6286 blendfunc GL_ONE GL_ONE
6287 }
6288 }
6289
6290 models/weapons2/gauntlet/gauntlet3
6291 {
6292
6293 cull disable
6294 sort additive
6295 {
6296 // map models/weapons2/gauntlet/gauntlet3.tga
6297 AnimMap 10 models/weapons2/gauntlet/gauntlet3.tga models/weapons2/gauntlet/gauntlet4.tga
6298 blendfunc GL_ONE GL_ONE
6299 }
6300 }
6301
6302 // this one can go away eventually
6303 models/weapons2/rocketl/rocketl14
6304 {
6305 cull disable
6306 sort additive
6307 {
6308 map models/weapons2/rocketl/f_rocketl.tga
6309 blendfunc GL_ONE GL_ONE
6310 }
6311 }
6312
6313 //
6314 // players
6315 //
6316 models/players/tankjr/tankjr
6317 {
6318 {
6319 map $whiteimage
6320 rgbGen lightingDiffuse
6321 }
6322 {
6323 map models/players/tankjr/tankjr.tga
6324 blendFunc GL_DST_COLOR GL_SRC_ALPHA
6325 rgbGen identity
6326 alphaGen lightingSpecular
6327 }
6328 }
6329 //models/players/visorhead
6330 //{
6331 // {
6332 // map $whiteimage
6333 // rgbGen lightingDiffuse
6334 // }
6335 // {
6336 // map models/players/visor/visorhead.tga
6337 // rgbGen identity
6338 // alphaGen lightingSpecular
6339 // blendFunc GL_DST_COLOR GL_SRC_ALPHA
6340 // }
6341 //}
6342 //models/players/visor/visortorso2
6343 //{
6344 // {
6345 // map $whiteimage
6346 // rgbGen lightingDiffuse
6347 // }
6348 // {
6349 // map models/players/visor/visortorso2.tga
6350 // rgbGen identity
6351 // alphaGen lightingSpecular
6352 // blendFunc GL_DST_COLOR GL_SRC_ALPHA
6353 // }
6354 //}
6355
6356 models/players/doom/f_doom
6357 {
6358 {
6359 map models/players/doom/f_doom.tga
6360 }
6361 {
6362
6363 map models/players/doom/fx_doom.tga
6364 tcGen environment
6365 rgbGen lightingDiffuse
6366 blendfunc gl_ONE gl_ONE
6367 }
6368 }
6369 models/players/doom/f_doom
6370 {
6371 {
6372 map models/players/doom/f_doom.tga
6373 rgbGen lightingDiffuse
6374 }
6375 {
6376
6377 map models/players/doom/doom_fx.tga
6378 tcGen environment
6379 rgbGen lightingDiffuse
6380 blendfunc gl_ONE gl_ONE
6381 }
6382
6383 }
6384
6385 models/players/xian/xianfacf
6386 {
6387 {
6388 map $whiteimage
6389 rgbGen lightingDiffuse
6390 }
6391 {
6392 map models/players/medium/xian/xianfacf.tga
6393 rgbGen identity
6394 alphaGen lightingSpecular
6395 blendFunc GL_DST_COLOR GL_SRC_ALPHA
6396 }
6397 }
6398 models/brandon/braneye
6399 {
6400 {
6401 map $whiteimage
6402 rgbGen lightingDiffuse
6403 }
6404 {
6405 map models/players/light/brandon/braneye.tga
6406 rgbGen identity
6407 alphaGen lightingSpecular
6408 blendFunc GL_DST_COLOR GL_SRC_ALPHA
6409 }
6410 {
6411 map models/players/light/brandon/braneye.glow.tga
6412 blendfunc GL_ONE GL_ONE
6413 }
6414 }
6415 models/players/brandon/branhat
6416 {
6417 {
6418 map models/players/light/brandon/branhat.tga
6419 }
6420 {
6421 map models/players/light/brandon/branhat.glow.tga
6422 blendfunc GL_ONE GL_ONE
6423 }
6424 }
6425
6426 //
6427 // weapons
6428 //
6429
6430 models/weapons2/plasma/plasma_glass
6431 {
6432 {
6433 map textures/effects/envmap.tga
6434 tcGen environment
6435 blendfunc GL_ONE GL_ONE
6436 rgbGen lightingDiffuse
6437 }
6438 }
6439 models/weapons2/plasma/plasma_glo
6440 {
6441 {
6442 map models/weapons2/plasma/plasma_glo.tga
6443 tcMod scroll 0 1
6444 rgbGen identity
6445 }
6446 }
6447
6448 ////////////////////////////
6449 /// Lightning gun Shader ///
6450 ////////////////////////////
6451 models/weapons2/lightning/ball
6452 {
6453 deformVertexes autoSprite
6454 {
6455 map models/weapons2/lightning/ball.tga
6456 blendfunc GL_ONE GL_ONE
6457 rgbgen wave triangle 1 2 0 7
6458 tcMod rotate 360
6459 }
6460 {
6461 map models/weapons2/lightning/ball.tga
6462 blendfunc GL_ONE GL_ONE
6463 rgbgen wave triangle 1 5 1 3
6464 tcMod rotate -200
6465 }
6466
6467 }
6468
6469 //
6470 //
6471 // instant: as seen on the powerups themselves
6472 //
6473
6474 models/powerups/instant/scan
6475 {
6476 {
6477 map models/powerups/instant/scan.tga
6478 }
6479 {
6480 map textures/effects/envmapdim.tga
6481 blendfunc GL_ONE GL_ONE
6482 tcGen environment
6483 }
6484 }
6485 models/powerups/instant/quad
6486 {
6487 {
6488 map gfx/colors/darkblue.tga
6489 }
6490 {
6491 map textures/effects/envmap.tga
6492 tcGen environment
6493 // blendFunc GL_DST_COLOR GL_ZERO
6494 blendFunc GL_ONE GL_ONE
6495 }
6496 }
6497 models/powerups/instant/enviro
6498 {
6499 {
6500 map models/powerups/instant/enviro.tga
6501 }
6502 {
6503 map textures/effects/envmapdim.tga
6504 blendfunc GL_ONE GL_ONE
6505 tcGen environment
6506 }
6507 }
6508 models/powerups/instant/flight
6509 {
6510 {
6511 map models/powerups/instant/flight.tga
6512 }
6513 {
6514 map textures/effects/envmapdim.tga
6515 blendfunc GL_ONE GL_ONE
6516 tcGen environment
6517 }
6518 }
6519 models/powerups/instant/haste
6520 {
6521 {
6522 map models/powerups/instant/haste.tga
6523 }
6524 {
6525 map textures/effects/envmapdim.tga
6526 blendfunc GL_ONE GL_ONE
6527 tcGen environment
6528 }
6529 }
6530 models/powerups/instant/invis
6531 {
6532 {
6533 map textures/effects/envmapdim.tga
6534 blendfunc GL_ONE GL_ONE
6535 tcGen environment
6536 }
6537 }
6538 models/powerups/instant/regen
6539 {
6540 {
6541 map models/powerups/instant/regen.tga
6542 }
6543 {
6544 map textures/effects/envmapdim.tga
6545 tcGen environment
6546 blendfunc GL_ONE GL_ONE
6547 }
6548 }
6549
6550 //
6551 // holdable powerups
6552 //
6553
6554 models/powerups/holdable/medkit_base
6555 {
6556 {
6557 map textures/effects/envmap.tga
6558 tcgen environment
6559 }
6560
6561 }
6562
6563 models/powerups/holdable/medkit_sphere
6564 {
6565 {
6566 map textures/effects/envmapdim.tga
6567 tcgen environment
6568 blendfunc GL_ONE GL_ONE
6569 }
6570
6571 }
6572
6573 models/powerups/holdable/medkit_fluid
6574 {
6575 sort additive
6576 cull back
6577 {
6578 map models/powerups/holdable/medkit_fluid.tga
6579 tcMod scroll 0 2
6580 blendfunc GL_ONE GL_ONE
6581 }
6582
6583 }
6584
6585 models/powerups/holdable/teleport_base
6586 {
6587 {
6588 map textures/effects/envmap.tga
6589 tcgen environment
6590 }
6591
6592 }
6593
6594 models/powerups/holdable/teleport_sphere
6595 {
6596 {
6597 map textures/effects/envmapdim.tga
6598 tcgen environment
6599 blendfunc GL_ONE GL_ONE
6600 }
6601
6602 }
6603
6604 models/powerups/holdable/teleport_fluid
6605 {
6606 sort additive
6607 cull back
6608 {
6609 map models/powerups/holdable/teleport_fluid.tga
6610 tcMod scroll 0 2
6611 blendfunc GL_ONE GL_ONE
6612 }
6613
6614 }
6615
6616
6617 ////// maxx test stim ////
6618 models/mapobjects/clonetube/cl_door1
6619 {
6620
6621 q3map_surfacelight 600
6622 light 1
6623
6624
6625
6626 //cull twosided
6627 //{
6628 // map models/mapobjects/clonetube/chrome1.tga
6629 // map models/mapobjects/clonetube/GUNFX.tga
6630 // blendfunc gl_one_minus_dst_color gl_zero
6631 // blendfunc blend
6632 // tcmod scale 2 2
6633 // rgbGen identity
6634 // tcGen environment
6635 //}
6636 {
6637 map models/mapobjects/clonetube/c_water2.tga
6638 blendFunc add
6639 rgbgen vertex
6640 tcmod scale 1 1
6641 tcmod scroll .025 .025
6642 }
6643
6644 {
6645 map models/mapobjects/clonetube/c_glass1.tga
6646 blendFunc GL_ONE GL_SRC_ALPHA
6647 rgbGen identity
6648 }
6649
6650 {
6651 map models/mapobjects/clonetube/cl_door1.tga
6652 blendFunc blend
6653 rgbGen vertex
6654 }
6655
6656
6657
6658
6659
6660 }
6661
6662 models/mapobjects/clonetube/clone1
6663 {
6664 cull twosided
6665
6666
6667
6668 {
6669 map models/mapobjects/clonetube/c_water2.tga
6670 tcmod rotate 350
6671 rgbGen wave sin 1 .8 0 2
6672 rgbGen identity
6673
6674 }
6675 {
6676 map models/mapobjects/clonetube/clone1.tga
6677 blendFunc blend
6678 rgbGen vertex
6679 }
6680
6681
6682
6683
6684
6685 }
6686
6687 models/mapobjects/test/sop_body1
6688 {
6689 {
6690 map textures/effects/regenmap3.tga
6691 tcmod rotate 350
6692 tcmod stretch scale 1 .4 0 .1
6693
6694 // tcmod scroll 3 1
6695 // tcmod scale 2 2
6696 // tcmod stretch 1 .5 0 2
6697 blendFunc GL_ONE GL_ZERO
6698 rgbGen wave sin 1 .6 0 .5
6699 }
6700 {
6701 map models/mapobjects/test/sop_body1.tga
6702 blendFunc blend
6703 rgbGen vertex
6704 }
6705 }
6706 models/players/protosoldier/proto_armor1
6707 {
6708 cull twosided
6709
6710 {
6711 map models/players/protosoldier/proto_armor1.tga
6712 rgbGen lightingdiffuse
6713 }
6714 }
6715
6716 models/mapobjects/generator/genface
6717 {
6718 cull twosided
6719
6720 {
6721 map models/mapobjects/generator/sun.tga
6722 rgbGen identity
6723 tcMod rotate 360
6724 rgbgen wave triangle 0 1 0 7
6725 // tcMod scroll 1 0
6726 }
6727 {
6728 map models/mapobjects/generator/genface.tga
6729 blendfunc blend
6730 rgbGen vertex
6731 }
6732 }
6733
6734 models/mapobjects/generator/gen1
6735 {
6736 cull twosided
6737
6738 {
6739 map textures/effects/regenmap3.tga
6740 rgbGen identity
6741 tcMod rotate 360
6742 tcMod scroll 1 0
6743 }
6744 {
6745 map models/mapobjects/generator/gen1.tga
6746 blendfunc blend
6747 rgbGen vertex
6748 }
6749 }
6750 models/mapobjects/generator/elec1
6751 {
6752 cull twosided
6753
6754
6755 {
6756 map models/mapobjects/generator/elec1.tga
6757 blendFunc GL_ONE GL_ONE
6758 rgbgen wave triangle .8 2 0 7
6759 tcMod scroll 0 1
6760 }
6761 {
6762 map models/mapobjects/generator/elec1.tga
6763 blendFunc GL_ONE GL_ONE
6764 rgbgen wave triangle 1 1.4 0 5
6765 tcMod scale -1 1
6766 tcMod scroll 0 1
6767 }
6768 {
6769 map models/mapobjects/generator/elec1.tga
6770 blendFunc GL_ONE GL_ONE
6771 rgbgen wave triangle 1 1.4 0 6.3
6772 tcMod scale -1 1
6773 tcMod scroll 2 1
6774 }
6775 {
6776 map models/mapobjects/generator/elec1.tga
6777 blendFunc GL_ONE GL_ONE
6778 rgbgen wave triangle 1 1.4 0 7.7
6779 tcMod scroll -1.3 1
6780 }
6781 }
6782
6783
6784 models/mapobjects/test3/engine
6785 {
6786 {
6787 map textures/effects/regenmap3.tga
6788 tcmod rotate 350
6789 tcmod stretch scale 1 .4 0 .1
6790
6791 // tcmod scroll 3 1
6792 // tcmod scale 2 2
6793 // tcmod stretch 1 .5 0 2
6794 blendFunc GL_ONE GL_ZERO
6795 rgbGen wave sin 1 .6 0 .5
6796 }
6797 {
6798 map models/mapobjects/test3/engine.tga
6799 blendFunc blend
6800 rgbGen vertex
6801 }
6802 }
6803
6804 models/mapobjects/test3/temp2
6805 {
6806 {
6807 map textures/effects/regenmap3.tga
6808 tcmod rotate 350
6809 // tcmod scroll 3 1
6810 // tcmod scale 2 2
6811 // tcmod stretch 1 .5 0 2
6812 blendFunc GL_ONE GL_ZERO
6813 rgbGen wave sin 1 .6 0 .5
6814 }
6815 {
6816 map models/mapobjects/test3/temp2.tga
6817 blendFunc blend
6818 rgbGen vertex
6819 }
6820 }
6821 models/mapobjects/test3/temp4
6822 {
6823 {
6824 map textures/effects/regenmap3.tga
6825 tcmod rotate 350
6826 // tcmod scroll 3 1
6827 // tcmod scale 2 2
6828 // tcmod stretch 1 .5 0 2
6829 blendFunc GL_ONE GL_ZERO
6830 rgbGen wave sin 1 .6 0 .5
6831 }
6832 {
6833 map models/mapobjects/test3/temp4.tga
6834 blendFunc blend
6835 rgbGen vertex
6836 }
6837 }
6838
6839
6840 models/mapobjects/test3/temp
6841 {
6842 {
6843 map textures/effects/regenmap3.tga
6844 tcmod rotate 350
6845 // tcmod scroll 3 1
6846 // tcmod scale 2 2
6847 // tcmod stretch 1 .5 0 2
6848 blendFunc GL_ONE GL_ZERO
6849 rgbGen wave sin 1 .6 0 .5
6850 }
6851 {
6852 map models/mapobjects/test3/temp.tga
6853 blendFunc blend
6854 rgbGen vertex
6855 }
6856 }
6857
6858
6859 //models/players/xaero/xaero_a
6860 //{
6861 // {
6862 // map textures/effects/envmapbfg.tga
6863 // tcmod rotate 350
6864 // tcmod scroll 3 1
6865 // blendFunc GL_ONE GL_ZERO
6866 // rgbGen identity
6867 /// }
6868 // {
6869 // map models/players/xaero/xaero_a.tga
6870 // blendFunc blend
6871 // rgbGen lightingdiffuse
6872 // }
6873 //}
6874
6875 models/mapobjects/light/sconce
6876 {
6877 cull none
6878 {
6879 map models/mapobjects/light/sconce.tga
6880 alphaFunc GE128
6881 // blendFunc blend
6882 // depthWrite
6883 rgbGen lightingdiffuse
6884 }
6885 }
6886
6887 models/mapobjects/light/sconcel
6888 {
6889 cull twosided
6890 surfaceparm nomarks
6891 q3map_lightimage textures/lightimage/sconcel.tga
6892 q3map_surfacelight 5000
6893 light 1
6894 {
6895 map models/mapobjects/light/sconcel.tga
6896 blendFunc GL_ONE GL_ZERO
6897 rgbGen identity
6898 }
6899
6900 }
6901
6902 models/mapobjects/light/sconce2
6903 {
6904 //cull twosided
6905 surfaceparm nomarks
6906 q3map_lightimage textures/lightimage/sconce2.tga
6907 q3map_surfacelight 5000
6908 light 1
6909 {
6910 map models/mapobjects/light/sconce2.tga
6911 blendFunc GL_ONE GL_ZERO
6912 rgbGen identity
6913 }
6914
6915 }
6916
6917 ////// maxx airplane propeller ////////////
6918
6919 models/mapobjects/vehicles/propeller1
6920 {
6921 cull disable
6922 // surfaceparm alphashadow
6923
6924 {
6925 map models/mapobjects/vehicles/propeller1.tga
6926
6927 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
6928 // depthWrite
6929 alphaFunc GT0
6930 rgbGen lightingdiffuse
6931 }
6932 }
6933
6934
6935 models/mapobjects/miltary_trim/metal_m05
6936 {
6937 surfaceparm playerclip
6938 cull disable
6939 {
6940 map models/mapobjects/miltary_trim/metal_m05.tga
6941 alphaFunc GE128
6942 depthWrite
6943 rgbGen vertex
6944 }
6945 }
6946
6947 models/mapobjects/miltary_trim/metal_m05a
6948 {
6949 surfaceparm playerclip
6950 cull disable
6951 {
6952 map models/mapobjects/miltary_trim/metal_m05.tga
6953 alphaFunc GE128
6954 depthWrite
6955 rgbGen lightingdiffuse
6956 }
6957 }
6958
6959 models/weapons2/tesla/zap_scroll2b
6960 {
6961 q3map_surfacelight 1000
6962 surfaceparm trans
6963 surfaceparm nomarks
6964 surfaceparm nolightmap
6965 // qer_editorimage models/weapons2/tesla/zap_scroll.tga
6966 cull none
6967
6968 {
6969 map models/weapons2/tesla/zap_scroll.tga
6970 blendFunc GL_ONE GL_ONE
6971 rgbgen wave triangle .8 2 0 7
6972 tcMod scroll 0 1.2
6973 }
6974 {
6975 map models/weapons2/tesla/zap_scroll.tga
6976 blendFunc GL_ONE GL_ONE
6977 rgbgen wave triangle 1 1.4 0 5
6978 tcMod scale -1 1
6979 tcMod scroll 0 1.2
6980 }
6981 {
6982 map models/weapons2/tesla/zap_scroll2a.tga
6983 blendFunc GL_ONE GL_ONE
6984 rgbgen wave triangle 1 1.4 0 6.3
6985 tcMod scale -1 1
6986 tcMod scroll 2 1.2
6987 }
6988 {
6989 map models/weapons2/tesla/zap_scroll2a.tga
6990 blendFunc GL_ONE GL_ONE
6991 rgbgen wave triangle 1 1.4 0 7.7
6992 tcMod scroll -1.3 1.2
6993 }
6994 }
6995
6996
6997 models\mapobjects\vehicles\luv2
6998 {
6999 surfaceparm metalsteps
7000 {
7001 map $lightmap
7002 rgbGen identity
7003 }
7004 {
7005 map models\mapobjects\vehicles\luv2.tga
7006 blendFunc GL_DST_COLOR GL_ZERO
7007 rgbGen identity
7008 }
7009 }
7010
7011 models\mapobjects\vehicles\train1
7012 {
7013 surfaceparm metalsteps
7014 {
7015 map $lightmap
7016 rgbGen identity
7017 }
7018 {
7019 map models\mapobjects\vehicles\train1.tga
7020 blendFunc GL_DST_COLOR GL_ZERO
7021 rgbGen identity
7022 }
7023 }
7024
7025 models\mapobjects\vehicles\natter
7026 {
7027
7028 {
7029 map models/mapobjects/vehicles/natter.tga
7030 rgbGen vertex
7031
7032 }
7033
7034 }
7035
7036 textures/props/freeze_glass
7037 {
7038 deformVertexes wave 64 sin .25 .25 0 .5
7039 // deformVertexes wave 100 sin 0 .2 0 .2
7040
7041 q3map_surfacelight 600
7042 light 1
7043
7044
7045
7046 {
7047 map textures/props/freeze_cloud.tga
7048 blendFunc GL_dst_color GL_one
7049 // rgbgen identity
7050 tcmod scale -2 -2
7051 tcmod scroll .0 -0.20
7052 }
7053 {
7054 map textures/props/freeze_glass.tga
7055 blendFunc GL_dst_color GL_one
7056 // nolightmap
7057 // rgbgen identity
7058 tcmod scale 1 1
7059 tcmod scroll .05 .025
7060 }
7061
7062
7063 {
7064 map $lightmap
7065 blendFunc GL_dst_color GL_zero
7066 rgbgen identity
7067 }
7068
7069
7070
7071 // END
7072 //}
7073
7074 }
7075
7076 /////////////////// jet shadow /////////////////////////
7077
7078 models/mapobjects/vehicles/jet_shadow
7079 {
7080 {
7081
7082 map models/mapobjects/vehicles/jet_shadow.tga
7083 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7084 // blendFunc blend
7085 // rgbGen vertex
7086 rgbGen identity
7087 }
7088
7089 }
7090
7091 models/mapobjects/vehicles/truck_shadow
7092 {
7093 {
7094
7095 map models/mapobjects/vehicles/truck_shadow.tga
7096 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7097 // blendFunc blend
7098 // rgbGen vertex
7099 rgbGen identity
7100 }
7101
7102 }
7103
7104
7105 ///////////////////// maxx ////////////////////
7106
7107
7108
7109 models/mapobjects/furniture/xsink
7110 {
7111 {
7112 map models/mapobjects/furniture/xsink.tga
7113 blendFunc GL_ONE GL_ZERO
7114 rgbGen vertex
7115 }
7116 {
7117 map textures/effects/tinfx.tga
7118 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
7119 tcMod Scale .3 .3
7120 tcGen environment
7121 }
7122 // {
7123 // map $lightmap
7124 // blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
7125 // rgbGen identity
7126 // }
7127 }
7128
7129
7130 models/mapobjects/furniture/xsink_fac
7131 {
7132
7133 {
7134 map models/mapobjects/furniture/xsink_fac.tga
7135 blendFunc blend
7136 depthWrite
7137 rgbGen vertex
7138
7139 }
7140 }
7141
7142
7143 /////////////////////////// dr.z_goggles ////////////
7144
7145 models/players/drz/drz_glass
7146 {
7147 {
7148 map models/players/drz/drz_glass.tga
7149 blendFunc GL_ONE GL_ZERO
7150 rgbGen lightingdiffuse
7151 }
7152 {
7153 map models/players/drz/escape_env.tga
7154 blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
7155 tcMod Scale 2 2
7156 tcGen environment
7157 }
7158 }
7159
7160
7161
7162
7163 models/mapobjects/vehicles/sub5
7164 {
7165 surfaceparm metalsteps
7166
7167 {
7168 map models/mapobjects/vehicles/sub5.tga
7169 rgbGen lightingdiffuse
7170 }
7171 }
7172
7173
7174 models/mapobjects/vehicles/sub5s
7175 {
7176 surfaceparm metalsteps
7177
7178 {
7179 map models/mapobjects/vehicles/sub5s.tga
7180 // blendFunc GL_DST_COLOR GL_ZERO
7181 rgbGen vertex
7182 }
7183 }
7184
7185
7186 models\mapobjects\flag\flag_ui_american
7187
7188 {
7189 cull twosided
7190 {
7191
7192 map models/mapobjects/flag/flag_ui_american.tga
7193 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7194 rgbGen identity
7195 }
7196
7197 }
7198 models\mapobjects\flag\flag_ui_nazi
7199
7200 {
7201 {
7202 map models/mapobjects/flag/flag_ui_nazi.tga
7203 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7204 rgbGen identity
7205 }
7206
7207 }
7208
7209 models\mapobjects\flag\bannerflag2
7210
7211 {
7212 cull twosided
7213 {
7214
7215 map models/mapobjects/flag/bannerflag2.tga
7216 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7217 rgbGen identity
7218 }
7219
7220 }
7221
7222
7223 models\mapobjects\bjui\bj_body1
7224 {
7225
7226 {
7227 map models/mapobjects/bjui/bj_body1.tga
7228 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7229 rgbGen identity
7230 }
7231
7232 }
7233
7234 models\mapobjects\bjui\bj_head1
7235 {
7236 //cull front // (SA) no such thing
7237 {
7238 map models/mapobjects/bjui/bj_head1.tga
7239 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7240 rgbGen identity
7241 }
7242
7243 }
7244
7245 models/mapobjects/tree/tree_vil1
7246 {
7247 surfaceparm alphashadow
7248 deformVertexes wave 194 sin 0 2 0 .1
7249 deformVertexes wave 30 sin 0 1 0 .3
7250 deformVertexes wave 194 sin 0 1 0 .4
7251 cull twosided
7252
7253
7254 {
7255 map models/mapobjects/tree/tree_vil1.tga
7256 alphaFunc GE128
7257 rgbGen vertex
7258 }
7259
7260 }
7261
7262 models/mapobjects/tree/branch_slp1
7263 {
7264 surfaceparm alphashadow
7265 // deformVertexes wave 194 sin 0 2 0 .1
7266 // deformVertexes wave 30 sin 0 1 0 .3
7267 // deformVertexes wave 194 sin 0 1 0 .4
7268 cull twosided
7269
7270
7271 {
7272 map models/mapobjects/tree/branch_slp1.tga
7273 alphaFunc GE128
7274 rgbGen vertex
7275 }
7276
7277 }
7278
7279 models/mapobjects/tree/branch_slp2
7280 {
7281 surfaceparm alphashadow
7282 // deformVertexes wave 194 sin 0 2 0 .1
7283 // deformVertexes wave 30 sin 0 1 0 .3
7284 // deformVertexes wave 194 sin 0 1 0 .4
7285 cull twosided
7286
7287
7288 {
7289 map models/mapobjects/tree/branch_slp2.tga
7290 alphaFunc GE128
7291 rgbGen vertex
7292 }
7293
7294 }
7295
7296 models/mapobjects/tree/trunck_2a
7297 {
7298 surfaceparm alphashadow
7299 cull twosided
7300
7301
7302 {
7303 map models/mapobjects/tree/trunck_2a.tga
7304 // alphaFunc GE128
7305 rgbGen vertex
7306 }
7307
7308 }
7309
7310 models/mapobjects/tree/branch_vil1
7311 {
7312 surfaceparm alphashadow
7313 // deformVertexes wave 194 sin 0 2 0 .1
7314 // deformVertexes wave 30 sin 0 1 0 .3
7315 // deformVertexes wave 194 sin 0 1 0 .4
7316 cull twosided
7317
7318
7319 {
7320 map models/mapobjects/tree/branch_vil1.tga
7321 alphaFunc GE128
7322 rgbGen lightingdiffuse
7323 }
7324
7325 }
7326
7327 models/mapobjects/tree/branch_vil1a
7328 {
7329 surfaceparm alphashadow
7330 // deformVertexes wave 194 sin 0 2 0 .1
7331 // deformVertexes wave 30 sin 0 1 0 .3
7332 // deformVertexes wave 194 sin 0 1 0 .4
7333 cull twosided
7334
7335
7336 {
7337 map models/mapobjects/tree/branch_vil1a.tga
7338 alphaFunc GE128
7339 rgbGen lightingdiffuse
7340 }
7341
7342 }
7343
7344 models/mapobjects/tree/branch_vil1_d
7345 {
7346 surfaceparm alphashadow
7347 // deformVertexes wave 194 sin 0 2 0 .1
7348 // deformVertexes wave 30 sin 0 1 0 .3
7349 // deformVertexes wave 194 sin 0 1 0 .4
7350 cull twosided
7351
7352
7353 {
7354 map models/mapobjects/tree/branch_vil1.tga
7355 alphaFunc GE128
7356 rgbGen identity
7357 }
7358
7359 }
7360
7361 models/mapobjects/tree/branch_vil1a_d
7362 {
7363 surfaceparm alphashadow
7364 // deformVertexes wave 194 sin 0 2 0 .1
7365 // deformVertexes wave 30 sin 0 1 0 .3
7366 // deformVertexes wave 194 sin 0 1 0 .4
7367 cull twosided
7368
7369
7370 {
7371 map models/mapobjects/tree/branch_vil1a.tga
7372 alphaFunc GE128
7373 rgbGen identity
7374 }
7375
7376 }
7377
7378 //models/mapobjects/vehicles/mercedes_1
7379 //{
7380 //
7381 // {
7382 // map models/mapobjects/vehicles/mercedes_1.tga
7383 // blendFunc GL_ONE GL_ZERO
7384 /// rgbGen lightingdiffuse
7385 // }
7386 /// {
7387 // map textures/effects/tinfx.tga
7388 // blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE
7389 // tcGen environment
7390 // }
7391 //
7392 //}
7393
7394 models/mapobjects/vehicles/mercedes_1
7395
7396 {
7397 {
7398 map textures/effects/tinfx.tga
7399 blendFunc GL_ONE GL_ZERO
7400 rgbGen lightingdiffuse
7401 tcGen environment
7402 }
7403 {
7404 map models/mapobjects/vehicles/mercedes_1.TGA
7405 blendfunc blend
7406 rgbGen lightingdiffuse
7407 }
7408 }
7409
7410 models/mapobjects/vehicles/mercedes_1v
7411
7412 {
7413 {
7414 map textures/effects/tinfx.tga
7415 blendFunc GL_ONE GL_ZERO
7416 rgbGen vertex
7417 tcGen environment
7418 }
7419 {
7420 map models/mapobjects/vehicles/mercedes_1.TGA
7421 blendfunc blend
7422 rgbGen vertex
7423 }
7424 }
7425 models/mapobjects/vehicles/car_shadow
7426 {
7427 surfaceparm metalsteps
7428 cull twosided
7429 {
7430 map models/mapobjects/vehicles/car_shadow.tga
7431 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7432 rgbGen lightingdiffuse
7433 }
7434
7435 }
7436
7437 models/mapobjects/vehicles/glass
7438 {
7439 surfaceparm metalsteps
7440 cull twosided
7441 {
7442 map models/mapobjects/vehicles/glass.tga
7443 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7444 rgbGen lightingdiffuse
7445 }
7446
7447 }
7448
7449 models/mapobjects/vehicles/glass2
7450 {
7451 surfaceparm metalsteps
7452 cull twosided
7453 {
7454 map models/mapobjects/vehicles/glass.tga
7455 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7456 rgbGen lightingdiffuse
7457 }
7458
7459 }
7460 models/mapobjects/plants/flowers1
7461 {
7462 surfaceparm alphashadow
7463 // deformVertexes wave 194 sin 0 2 0 .1
7464 // deformVertexes wave 30 sin 0 1 0 .3
7465 // deformVertexes wave 194 sin 0 1 0 .4
7466 cull twosided
7467
7468
7469 {
7470 map models/mapobjects/plants/flowers1.tga
7471 alphaFunc GE128
7472 rgbGen lightingdiffuse
7473 }
7474
7475 }
7476
7477 models/mapobjects/plants/GRASS1
7478 {
7479 surfaceparm alphashadow
7480 // deformVertexes wave 194 sin 0 2 0 .1
7481 // deformVertexes wave 30 sin 0 1 0 .3
7482 // deformVertexes wave 194 sin 0 1 0 .4
7483 cull twosided
7484
7485
7486 {
7487 map models/mapobjects/plants/GRASS1.tga
7488 // alphaFunc GE128
7489 blendfunc blend
7490 rgbGen lightingdiffuse
7491 }
7492
7493 }
7494
7495 models/mapobjects/plants/GRASS1t
7496 {
7497 surfaceparm alphashadow
7498 // deformVertexes wave 194 sin 0 2 0 .1
7499 // deformVertexes wave 30 sin 0 1 0 .3
7500 // deformVertexes wave 194 sin 0 1 0 .4
7501 cull twosided
7502
7503
7504 {
7505 map models/mapobjects/plants/GRASS1t.tga
7506 // alphaFunc GE128
7507 blendfunc blend
7508 rgbGen lightingdiffuse
7509 }
7510
7511 }
7512
7513 models/mapobjects/plants/vine1
7514 {
7515 surfaceparm alphashadow
7516 // deformVertexes wave 194 sin 0 2 0 .1
7517 // deformVertexes wave 30 sin 0 1 0 .3
7518 // deformVertexes wave 194 sin 0 1 0 .4
7519 cull twosided
7520
7521
7522 {
7523 map models/mapobjects/plants/vine1.tga
7524 // alphaFunc GE128
7525 blendfunc blend
7526 rgbGen lightingdiffuse
7527 }
7528
7529 }
7530
7531
7532 models/mapobjects/plants/dirt1
7533 {
7534 surfaceparm alphashadow
7535 // deformVertexes wave 194 sin 0 2 0 .1
7536 // deformVertexes wave 30 sin 0 1 0 .3
7537 // deformVertexes wave 194 sin 0 1 0 .4
7538 cull twosided
7539
7540
7541 {
7542 map models/mapobjects/plants/dirt1.tga
7543 rgbGen lightingdiffuse
7544 }
7545
7546 }
7547 models/mapobjects/plants/bushes1
7548 {
7549 surfaceparm alphashadow
7550 // deformVertexes wave 194 sin 0 2 0 .1
7551 // deformVertexes wave 30 sin 0 1 0 .3
7552 // deformVertexes wave 194 sin 0 1 0 .4
7553 cull twosided
7554
7555
7556 {
7557 map models/mapobjects/plants/bushes1.tga
7558 alphaFunc GE128
7559 // rgbGen lightingdiffuse
7560 rgbGen identity
7561 }
7562
7563 }
7564 models/mapobjects/plants/bushes2
7565 {
7566 surfaceparm alphashadow
7567 // deformVertexes wave 194 sin 0 2 0 .1
7568 // deformVertexes wave 30 sin 0 1 0 .3
7569 // deformVertexes wave 194 sin 0 1 0 .4
7570 cull twosided
7571
7572
7573 {
7574 map models/mapobjects/plants/bushes2.tga
7575 alphaFunc GE128
7576 rgbGen lightingdiffuse
7577 // rgbGen identity
7578 }
7579
7580 }
7581
7582 models/mapobjects/plants/bushes3
7583 {
7584 surfaceparm alphashadow
7585 // deformVertexes wave 194 sin 0 2 0 .1
7586 // deformVertexes wave 30 sin 0 1 0 .3
7587 // deformVertexes wave 194 sin 0 1 0 .4
7588 cull twosided
7589
7590
7591 {
7592 map models/mapobjects/plants/bushes3.tga
7593 alphaFunc GE128
7594 // rgbGen lightingdiffuse
7595 rgbGen identity
7596 }
7597
7598 }
7599 models/mapobjects/plants/small_branch
7600 {
7601 surfaceparm alphashadow
7602 deformVertexes wave 194 sin 0 2 0 .1
7603 deformVertexes wave 30 sin 0 1 0 .1
7604 deformVertexes wave 194 sin 0 1 0 .1
7605 cull twosided
7606
7607
7608 {
7609 map models/mapobjects/plants/small_branch.tga
7610 alphaFunc GE128
7611 rgbGen lightingdiffuse
7612 // rgbGen identity
7613 }
7614
7615 }
7616
7617 models/mapobjects/tree/trunck2l
7618 {
7619 surfaceparm alphashadow
7620 // deformVertexes wave 194 sin 0 2 0 .1
7621 // deformVertexes wave 30 sin 0 1 0 .3
7622 // deformVertexes wave 194 sin 0 1 0 .4
7623 cull twosided
7624
7625
7626 {
7627 map models/mapobjects/tree/trunck2l.tga
7628 rgbGen lightingdiffuse
7629 // rgbGen identity
7630 }
7631
7632 }
7633
7634 models/mapobjects/tree/trunck2al
7635 {
7636
7637 {
7638 map models/mapobjects/tree/trunck2al.tga
7639 rgbGen identity
7640
7641 }
7642
7643 }
7644
7645 models/mapobjects/tree/trunk_trn1
7646 {
7647
7648 {
7649 map models/mapobjects/tree/trunk_trn1.tga
7650 rgbGen identity
7651
7652 }
7653
7654 }
7655
7656 models/mapobjects/tree/trunk_trn2
7657 {
7658
7659 {
7660 map models/mapobjects/tree/trunk_trn2.tga
7661 rgbGen identity
7662
7663 }
7664
7665 }
7666
7667 models/mapobjects/plants/small_branch_t
7668 {
7669 surfaceparm alphashadow
7670 // deformVertexes wave 194 sin 0 2 0 .1
7671 deformVertexes wave 30 sin 0 1 0 .1
7672 deformVertexes wave 194 sin 0 1 0 .1
7673 cull twosided
7674
7675
7676 {
7677 map models/mapobjects/plants/small_branch_t.tga
7678 alphaFunc GE128
7679 // rgbGen lightingdiffuse
7680 rgbGen identity
7681 }
7682
7683 }
7684
7685 models/mapobjects/tree/tree_vil2t
7686 {
7687 surfaceparm alphashadow
7688 // deformVertexes wave 194 sin 0 2 0 .1
7689 deformVertexes wave 30 sin 0 1 0 .1
7690 deformVertexes wave 194 sin 0 1 0 .1
7691 cull twosided
7692
7693
7694 {
7695 map models/mapobjects/tree/tree_vil2t.tga
7696 alphaFunc GE128
7697 // rgbGen lightingdiffuse
7698 rgbGen identity
7699 }
7700
7701 }
7702
7703 models/mapobjects/tree/branch_vil1at
7704 {
7705 surfaceparm alphashadow
7706 // deformVertexes wave 194 sin 0 2 0 .1
7707 deformVertexes wave 30 sin 0 1 0 .1
7708 deformVertexes wave 194 sin 0 1 0 .1
7709 cull twosided
7710
7711
7712 {
7713 map models/mapobjects/tree/branch_vil1at.tga
7714 alphaFunc GE128
7715 // rgbGen lightingdiffuse
7716 rgbGen identity
7717 }
7718
7719 }
7720
7721
7722 models/mapobjects/tree/branch_vil1t
7723 {
7724 surfaceparm alphashadow
7725 // deformVertexes wave 194 sin 0 2 0 .1
7726 deformVertexes wave 30 sin 0 1 0 .1
7727 deformVertexes wave 194 sin 0 1 0 .1
7728 cull twosided
7729
7730
7731 {
7732 map models/mapobjects/tree/branch_vil1t.tga
7733 alphaFunc GE128
7734 // rgbGen lightingdiffuse
7735 rgbGen identity
7736 }
7737
7738 }
7739
7740 models/powerups/holdable/glass_brandy
7741 {
7742 // surfaceparm alphashadow
7743 // cull twosided
7744
7745
7746 {
7747 map models/powerups/holdable/glass_brandy.tga
7748 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7749 rgbGen lightingdiffuse
7750 }
7751
7752 }
7753
7754
7755 models/weapons2/fg42/fg42_2
7756 {
7757
7758 {
7759 map models/weapons2/fg42/fg42_2.tga
7760 rgbGen lightingdiffuse
7761 }
7762 }
7763
7764 models/mapobjects/xlab_props/light
7765 {
7766 // q3map_surfacelight 1000
7767 // light 1
7768 // surfaceparm nomarks
7769 {
7770 map $lightmap
7771 rgbGen identity
7772 }
7773 {
7774 map models/mapobjects/xlab_props/light.tga
7775 blendFunc GL_DST_COLOR GL_ZERO
7776 rgbGen identity
7777 }
7778 {
7779 map models/mapobjects/xlab_props/light.tga
7780 blendFunc GL_ONE GL_ONE
7781 }
7782 }
7783
7784
7785 models/mapobjects/xlab_props/fwindow1
7786
7787 {
7788
7789 q3map_surfacelight 5000
7790 light 1
7791 surfaceparm nomarks
7792 {
7793 map textures/props/fwindow1.tga
7794 blendFunc GL_ONE GL_SRC_ALPHA
7795 rgbGen identity
7796 }
7797
7798 {
7799 map $lightmap
7800 blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
7801 rgbGen identity
7802 }
7803
7804 }
7805
7806 models/mapobjects/snow_tree/stree_f1
7807 {
7808 surfaceparm alphashadow
7809 cull twosided
7810
7811
7812 {
7813 map models/mapobjects/snow_tree/stree_f1.tga
7814 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7815 alphaFunc GE128
7816 rgbGen lightingdiffuse
7817 }
7818
7819 }
7820
7821
7822 models/mapobjects/snow_tree/stree_s1
7823 {
7824 surfaceparm alphashadow
7825 cull twosided
7826
7827
7828 {
7829 map models/mapobjects/snow_tree/stree_s1.tga
7830 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7831 alphaFunc GE128
7832 rgbGen lightingdiffuse
7833 }
7834
7835 }
7836
7837 models/mapobjects/door/xdoor_m01
7838
7839 {
7840 surfaceparm nomarks
7841 {
7842 map $lightmap
7843 rgbGen identity
7844 }
7845 {
7846 map textures/xlab_door/xdoor_m01.tga
7847 blendFunc GL_DST_COLOR GL_ZERO
7848 rgbGen identity
7849 }
7850 }
7851
7852 models/mapobjects/v2/v2
7853 {
7854 {
7855 map models/mapobjects/v2/v2.tga
7856 rgbGen lightingdiffuse
7857 }
7858
7859 }
7860
7861 models/mapobjects/v2/v2a
7862
7863 {
7864 surfaceparm nomarks
7865
7866 {
7867 map models/mapobjects/v2/v2.tga
7868 // blendFunc GL_DST_COLOR GL_ZERO
7869 rgbGen vertex
7870 }
7871 }
7872
7873 models\mapobjects\furniture\chair1
7874 {
7875 {
7876 map models/mapobjects/furniture/chair1.tga
7877 rgbGen lightingdiffuse
7878 }
7879
7880 }
7881
7882
7883 models/mapobjects/electronics/radar_01
7884 {
7885
7886 {
7887 map models/mapobjects/electronics/radarsweep.tga
7888 rgbGen identity
7889 tcMod rotate 120
7890 // rgbgen wave triangle 0 1 0 7
7891 // tcMod scroll 1 0
7892 }
7893
7894
7895 {
7896 map models/mapobjects/electronics/radarbeeps.tga
7897 blendfunc blend
7898 tcMod scroll .01 .001
7899 rgbGen wave sin 1 .3 0 .25
7900 }
7901 {
7902 map models/mapobjects/electronics/radar_01.tga
7903 blendfunc blend
7904 rgbGen vertex
7905 }
7906 }
7907
7908 models/mapobjects/light/chandlier3a
7909 {
7910 nomipmaps
7911 surfaceparm alphashadow
7912 cull twosided
7913
7914
7915 {
7916 map models/mapobjects/light/chandlier3a.tga
7917 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7918 alphaFunc GE128
7919 rgbGen lightingdiffuse
7920 }
7921
7922 }
7923
7924 models/mapobjects/light/chandlier4
7925 {
7926 nomipmaps
7927 surfaceparm alphashadow
7928 cull twosided
7929
7930
7931 {
7932 map models/mapobjects/light/chandlier4.tga
7933 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
7934 alphaFunc GE128
7935 rgbGen lightingdiffuse
7936 }
7937
7938 }
7939
7940 models/mapobjects/light/chandlier4l
7941 {
7942 {
7943 map models/mapobjects/light/chandlier4l.tga
7944 rgbGen lightingdiffuse
7945 }
7946
7947 }
7948
7949 models/mapobjects/light/chandlier3
7950 {
7951 {
7952 map models/mapobjects/light/chandlier3.tga
7953 rgbGen lightingdiffuse
7954 }
7955
7956 }
7957
7958 models/weapons2/telsa/base_tesla4
7959 {
7960 cull twosided
7961
7962 {
7963 map models/weapons2/telsa/base_tesla4_l.tga
7964 rgbGen identity
7965 tcMod rotate 120
7966 tcMod scroll 2 2
7967 }
7968 {
7969 map models/weapons2/telsa/base_tesla4.tga
7970 blendfunc blend
7971 rgbGen vertex
7972 }
7973 }
7974
7975 models/mapobjects/ui/FLAME
7976 {
7977 nopicmip
7978 nomipmaps
7979
7980 {
7981 map ui/assets/flame.tga
7982 // map models/mapobjects/ui/FLAME.tga
7983 // blendFunc GL_ONE_MINUS_SRC_ALPHA GL_SRC_ALPHA
7984 blendfunc blend
7985 tcmod scale .4 .4
7986 tcmod scroll 0 .08
7987 tcmod turb .5 .02 0 .1
7988 rgbGen identity
7989 }
7990 {
7991 map ui/assets/flame.tga
7992 // blendFunc GL_ONE_MINUS_SRC_ALPHA GL_SRC_ALPHA
7993 blendfunc blend
7994 tcmod scale .3 .3
7995 tcmod scroll 0.001 .04
7996 tcmod turb .5 .04 0 .1
7997 }
7998
7999
8000 }
8001
8002
8003 models/mapobjects/telsagun/tesla1a
8004 {
8005
8006
8007
8008 {
8009 // map models/weapons2/telsa/tesla1.tga
8010 map textures/effects/regenmap3.tga
8011 rgbGen identity
8012 tcMod rotate 360
8013 tcMod scroll 2 0
8014 }
8015 {
8016 map models/mapobjects/telsagun/tesla1a.tga
8017 blendfunc blend
8018 rgbGen vertex
8019 }
8020
8021
8022 }
8023
8024 models\mapobjects\furniture\grandfatherclock01
8025 {
8026
8027 {
8028 map models/mapobjects/furniture/grandfatherclock01.tga
8029 rgbGen identity
8030 }
8031 }
8032
8033 models\mapobjects\letters\osa
8034 {
8035
8036 {
8037 map models/mapobjects/letters/osa2.tga
8038 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
8039 alphafunc GT0
8040 rgbGen identity
8041 }
8042 }
8043
8044
8045 models\mapobjects\barbwire\barb_wire
8046 {
8047 surfaceparm metalsteps
8048 nomipmaps
8049 nopicmip
8050 cull disable
8051 {
8052 map models/mapobjects/barbwire/barb_wire.tga
8053 alphaFunc GE128
8054 depthWrite
8055 rgbGen identity
8056
8057 }
8058 }
8059
8060
8061 models/mapobjects/B-25/PROPELLER
8062 {
8063 cull twosided
8064 surfaceparm nomarks
8065 {
8066 map models/mapobjects/B-25/PROPELLER.tga
8067 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
8068 rgbGen vertex
8069 tcMod rotate 4000
8070 alphaGen vertex
8071 }
8072 }
8073
8074 // textures/b-25/plane_ext1
8075 // {
8076 // cull twosided
8077 // surfaceparm nomarks
8078 // {
8079 // map textures/b-25/plane_ext1.tga
8080 // rgbGen vertex
8081 // }
8082 // }
8083
8084
8085 // textures/b-25/plane_int5
8086 // {
8087 // cull twosided
8088 // surfaceparm nomarks
8089 // {
8090 // map textures/b-25/plane_int5.tga
8091 // rgbGen vertex
8092 // }
8093 // }
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
0 teslaDamageEffect
1 {
2 {
3 map $whiteimage
4 blendFunc GL_DST_COLOR GL_ONE
5 rgbGen entity
6 }
7 {
8 map $whiteimage
9 blendFunc GL_DST_COLOR GL_ONE
10 rgbGen entity
11 }
12 {
13 map $whiteimage
14 blendFunc GL_DST_COLOR GL_ONE
15 rgbGen entity
16 }
17 {
18 map $whiteimage
19 blendFunc GL_DST_COLOR GL_ONE
20 rgbGen entity
21 }
22 }
23
24 teslaAltDamageEffect
25 {
26 {
27 map $whiteimage
28 blendFunc GL_DST_COLOR GL_ONE
29 rgbGen entity
30 }
31 {
32 map $whiteimage
33 blendFunc GL_DST_COLOR GL_ONE
34 rgbGen entity
35 }
36 }
37
38 smokeParticle
39 {
40 cull none
41 {
42 map sprites/smokepuff.tga
43 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
44 alphaGen vertex
45 }
46 }
47
48 bulletParticleTrail
49 {
50 cull none
51 entityMergable
52 {
53 map sprites/bullettrail.tga
54 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
55 alphaGen vertex
56 }
57 }
58
59 loperGroundCharge
60 {
61 allowCompress
62 cull none
63 polygonOffset
64 nofog
65 entityMergable
66 {
67 map sprites/loperGroundCharge.tga
68 blendFunc GL_SRC_ALPHA GL_ONE
69 rgbGen vertex
70 alphaGen vertex
71 }
72 }
73
74 sparkFlareParticle
75 {
76 cull none
77 entityMergable
78 {
79 map gfx\misc\sunflare1.tga
80 blendFunc GL_SRC_ALPHA GL_ONE
81 rgbGen vertex
82 alphaGen vertex
83 }
84 }
85
86 sparkParticle
87 {
88 cull none
89 entityMergable
90 {
91 map sprites/spark.tga
92 blendFunc GL_SRC_ALPHA GL_ONE
93 rgbGen vertex
94 alphaGen vertex
95 }
96 }
97
98 smokeTrail
99 {
100 cull none
101 entityMergable
102 {
103 map sprites/smoketrail2.tga
104 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
105 rgbGen vertex
106 alphaGen vertex
107 }
108 }
109
110 zombieSpiritTrail
111 {
112 cull none
113 //entityMergable // allow all the sprites to be merged together
114 {
115 map sprites/spirit_trail.tga
116 blendFunc GL_SRC_ALPHA GL_ONE
117 rgbGen vertex
118 alphaGen vertex
119 }
120 }
121
122 zombieSpiritSkull
123 {
124 cull none
125
126
127
128 {
129 map models/mapobjects/skull/skull_spirit.tga
130 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
131 rgbGen identity
132 alphaGen entity
133 }
134
135 }
136
137 helgaSpiritTrail
138 {
139 cull none
140 {
141 map sprites/spirit_trail.tga
142 blendFunc GL_SRC_ALPHA GL_ONE
143 rgbGen vertex
144 alphaGen vertex
145 }
146 }
147
148 helgaSpiritGhost
149 {
150 cull none
151 surfaceparm nodlight
152 deformVertexes wave 100 sin 0.75 1.5 0 0.75
153 {
154 map models/players/beast/ghost.tga
155 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
156 // blendFunc blend
157 // rgbGen vertex
158 alphaGen entity
159 }
160
161 }
162
163 //--------------------------------------------------------------------
164 // Zombie Death effects
165 zombieDeathDust
166 {
167 // expand the surface out from the model surface
168 deformVertexes wave 100 sin 1 0 0 0
169 // give it some character
170 deformVertexes wave 94 sin 0 1 0 1.2
171 cull none
172 {
173 map models/players/zombie/zom_body1.tga
174 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
175 //tcGen environment
176 alphaGen normalzfade 0.7 -2.0 -0.5
177 //tcmod rotate 1200
178 //tcmod scroll 1 .2
179 }
180 }
181
182 zombieDeathWindTrail
183 {
184 cull twosided
185 {
186 map sprites/zombie_dust.tga
187 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
188 rgbGen vertex
189 alphaGen vertex
190 }
191 }
192
193 zombieBodyFade
194 {
195 cull twosided
196 surfaceparm trans
197 {
198 map models/players/zombie/zom_body1.tga
199 //blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
200 alphaFunc GE128
201 depthWrite
202 rgbGen lightingDiffuse
203 alphaGen normalzfade 1.0 -1.0 -1000 // -1000 = zombie Hack
204 }
205 }
206
207 zombieHeadFade
208 {
209 cull twosided
210 surfaceparm trans
211 {
212 map models/players/zombie/zom_head1.tga
213 //blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
214 alphaFunc GE128
215 depthWrite
216 rgbGen lightingDiffuse
217 alphaGen normalzfade 1.0 -1.0 -1000 // -1000 = zombie Hack
218 }
219 }
220
221 // these used to be blendFunc add, but we made them alpha so they would fog better (the ablack.tga is an alpha version of the 8x8 black texture used when we need blend func anims like this)
222
223 grenadeExplosion
224 {
225 cull disable
226 {
227 animmap 7 gfx/colors/ablack.tga sprites/fire_sm_a.tga sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga
228 rgbGen wave inversesawtooth 0 1 0 7
229 blendFunc GL_SRC_ALPHA GL_ONE
230 }
231 {
232 animmap 7 sprites/fire_sm_a.tga sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga gfx/colors/ablack.tga
233 rgbGen wave sawtooth 0 1 0 7
234 blendFunc GL_SRC_ALPHA GL_ONE
235 }
236 }
237
238
239 rocketExplosion
240 {
241 cull disable
242 {
243 animmap 7 gfx/colors/ablack.tga sprites/fire_sm_a.tga sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga
244 rgbGen wave inversesawtooth 0 1 0 7
245 blendFunc GL_SRC_ALPHA GL_ONE
246 }
247 {
248 animmap 7 sprites/fire_sm_a.tga sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga gfx/colors/ablack.tga
249 rgbGen wave sawtooth 0 1 0 7
250 blendFunc GL_SRC_ALPHA GL_ONE
251 }
252 }
253
254 // Ridah, temp only
255 //flamethrowerHit
256 //{
257 // cull disable
258 // {
259 // animmap 12 sprites/fire_sm_a.tga sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga
260 // rgbGen wave inversesawtooth 0 1 0 12
261 // blendfunc GL_SRC_ALPHA GL_ONE
262 // }
263 // {
264 // animmap 12 sprites/fire_sm_b.tga sprites/fire_sm_c.tga sprites/fire_sm_d.tga sprites/fire_sm_e.tga sprites/fire_sm_f.tga gfx/colors/black.tga
265 // rgbGen wave sawtooth 0 1 0 12
266 // blendfunc GL_SRC_ALPHA GL_ONE
267 // }
268 //}
269
270 lightningBolt
271 {
272 //nomipmap
273 nopicmip // dont scale with texture details, since it looks bad
274 cull disable
275 nofog
276 entityMergable
277 {
278 map sprites\lightning.tga
279 blendfunc GL_SRC_ALPHA GL_ONE // needs to be this or we get fog discoloration
280 rgbGen vertex
281 alphaGen vertex
282 }
283 }
284
285 lightningBoltGreen
286 {
287 nopicmip // dont scale with texture details, since it looks bad
288 cull disable
289 nofog
290 entityMergable
291 {
292 map sprites\lightninggreen.tga
293 blendfunc GL_SRC_ALPHA GL_ONE // needs to be this or we get fog discoloration
294 rgbGen vertex
295 alphaGen vertex
296 }
297 }
298
299 lightningHitWall
300 {
301 polygonOffset
302 {
303 map sprites/lightningGlow.tga
304 blendfunc GL_SRC_ALPHA GL_ONE // needs to be this or we get fog discoloration
305 rgbGen vertex
306 alphaGen vertex
307 }
308 }
309
310 lightningWave
311 {
312 nofog
313 polygonOffset
314 {
315 map sprites/lightningWave.tga
316 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_COLOR // needs to be this or we get fog discoloration
317 rgbGen vertex
318 alphaGen vertex
319 }
320 }
321
322 flamethrowerBlueStream
323 {
324 // nofog
325 cull none
326 // entityMergable
327 {
328 map sprites\fthrow_bluestream1.tga
329 // blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_COLOR
330 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA // needs to be this or we get fog discoloration
331 rgbGen vertex
332 alphaGen vertex
333 }
334 }
335
336 flamethrowerFireStream
337 {
338 nofog
339 cull none
340 entityMergable
341 {
342 map sprites\fthrow_firestream2.tga
343 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_COLOR
344 rgbGen vertex
345 alphaGen vertex
346 }
347 }
348
349 // character on fire effect
350 entityOnFire1
351 {
352 allowCompress
353 // give it some character
354 deformVertexes wave 45 sin 0 10 0 -.6 // a negative frequency is for Z deformation based on normal
355 cull none
356 { // flame top-side
357 animmapcomp 20 sprites/clnfire_lg/spr000.tga sprites/clnfire_lg/spr001.tga sprites/clnfire_lg/spr002.tga sprites/clnfire_lg/spr003.tga sprites/clnfire_lg/spr004.tga sprites/clnfire_lg/spr005.tga sprites/clnfire_lg/spr006.tga sprites/clnfire_lg/spr007.tga sprites/clnfire_lg/spr008.tga sprites/clnfire_lg/spr009.tga sprites/clnfire_lg/spr010.tga sprites/clnfire_lg/spr011.tga sprites/clnfire_lg/spr012.tga sprites/clnfire_lg/spr013.tga sprites/clnfire_lg/spr014.tga sprites/clnfire_lg/spr015.tga
358 animmapnocomp 20 sprites/clnfire/spr000.tga sprites/clnfire/spr001.tga sprites/clnfire/spr002.tga sprites/clnfire/spr003.tga sprites/clnfire/spr004.tga sprites/clnfire/spr005.tga sprites/clnfire/spr006.tga sprites/clnfire/spr007.tga sprites/clnfire/spr008.tga sprites/clnfire/spr009.tga sprites/clnfire/spr010.tga sprites/clnfire/spr011.tga sprites/clnfire/spr012.tga sprites/clnfire/spr013.tga sprites/clnfire/spr014.tga sprites/clnfire/spr015.tga
359 blendFunc GL_SRC_ALPHA GL_ONE
360 alphaGen normalzfade 1.0 -0.7 0.5
361 }
362 }
363
364 entityOnFire2
365 {
366 allowCompress
367 {
368 animmapcomp 20 sprites/clnfire_lg/spr000.tga sprites/clnfire_lg/spr001.tga sprites/clnfire_lg/spr002.tga sprites/clnfire_lg/spr003.tga sprites/clnfire_lg/spr004.tga sprites/clnfire_lg/spr005.tga sprites/clnfire_lg/spr006.tga sprites/clnfire_lg/spr007.tga sprites/clnfire_lg/spr008.tga sprites/clnfire_lg/spr009.tga sprites/clnfire_lg/spr010.tga sprites/clnfire_lg/spr011.tga sprites/clnfire_lg/spr012.tga sprites/clnfire_lg/spr013.tga sprites/clnfire_lg/spr014.tga sprites/clnfire_lg/spr015.tga
369 animmapnocomp 20 sprites/clnfire/spr000.tga sprites/clnfire/spr001.tga sprites/clnfire/spr002.tga sprites/clnfire/spr003.tga sprites/clnfire/spr004.tga sprites/clnfire/spr005.tga sprites/clnfire/spr006.tga sprites/clnfire/spr007.tga sprites/clnfire/spr008.tga sprites/clnfire/spr009.tga sprites/clnfire/spr010.tga sprites/clnfire/spr011.tga sprites/clnfire/spr012.tga sprites/clnfire/spr013.tga sprites/clnfire/spr014.tga sprites/clnfire/spr015.tga
370 blendFunc GL_SRC_ALPHA GL_ONE
371 alphaGen normalzfade 1.0 -0.7 1.3
372 }
373 { // blue under-side
374 map sprites/inferno_blue.tga
375 blendFunc GL_SRC_ALPHA GL_ONE
376 //tcGen environment
377 alphaGen normalzfade 1.0 -2.0 0.6
378 //tcmod rotate 12
379 //tcmod scroll 1 .2
380 }
381 }
382
383 sprites/smokeMap
384 {
385 qer_editorimage sprites/smokeMap.tga
386 surfaceparm trans
387 surfaceparm nonsolid
388
389 allowCompress
390 // give it some character
391 // deformVertexes wave 0 sin 0 2 0 0 // a negative frequency is for Z deformation based on normal
392 deformVertexes wave 30 sin 0.6 1.4 0.6 0.42 // a negative frequency is for Z deformation based on normal
393 deformVertexes wave 25 sin 0 10 0 -0.6 // a negative frequency is for Z deformation based on normal
394 cull none
395 { // water reflection
396 map sprites/smokeMap.tga
397 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
398 alphaGen normalzfade 0.85 -0.9 0.9
399 //tcGen environment
400 tcmod scroll 0 -0.33
401 tcmod scale 4 1
402 }
403 // { // water dripping
404 // map textures/liquids/water_m6.tga
405 // blendFunc GL_SRC_ALPHA GL_ONE
406 // alphaGen normalzfade 1.0 -0.8 0.5
407 // tcmod scroll 0 -0.3
408 // }
409 { // water reflection
410 map sprites/smokeMap.tga
411 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
412 alphaGen normalzfade 0.7 -0.9 0.9
413 //tcGen environment
414 tcmod scroll 0 -0.2
415 tcmod scale 5 1
416 }
417 }
418
419 dripWet2
420 {
421 allowCompress
422 { // water reflection
423 map sprites/smokeMap.tga
424 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
425 alphaGen normalzfade 1.0 -0.8 0.5
426 //tcGen environment
427 tcmod scroll 0 -0.33
428 }
429 // {
430 // map sprites/smokeMap.tga
431 // blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
432 // alphaGen normalzfade 1.0 -0.7 0.5
433 // tcmod scroll 0 -0.4
434 // }
435 }
436
437
438 // Rafael - bats
439 bats1
440 {
441 cull none
442 entityMergable // allow all the sprites to be merged together
443
444 {
445 map sprites/bats/bat1.tga
446 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
447 rgbGen vertex
448 alphaGen vertex
449 }
450 }
451 bats2
452 {
453 cull none
454 entityMergable // allow all the sprites to be merged together
455 {
456 map sprites/bats/bat2.tga
457 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
458 rgbGen vertex
459 alphaGen vertex
460 }
461 }
462 bats3
463 {
464 cull none
465 entityMergable // allow all the sprites to be merged together
466 {
467 map sprites/bats/bat3.tga
468 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
469 rgbGen vertex
470 alphaGen vertex
471 }
472 }
473 bats4
474 {
475 cull none
476 entityMergable // allow all the sprites to be merged together
477 {
478 map sprites/bats/bat4.tga
479 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
480 rgbGen vertex
481 alphaGen vertex
482 }
483 }
484 bats5
485 {
486 cull none
487 entityMergable // allow all the sprites to be merged together
488 {
489 map sprites/bats/bat5.tga
490 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
491 rgbGen vertex
492 alphaGen vertex
493 }
494 }
495 bats6
496 {
497 cull none
498 entityMergable // allow all the sprites to be merged together
499 {
500 map sprites/bats/bat6.tga
501 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
502 rgbGen vertex
503 alphaGen vertex
504 }
505 }
506 bats7
507 {
508 cull none
509 entityMergable // allow all the sprites to be merged together
510 {
511 map sprites/bats/bat7.tga
512 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
513 rgbGen vertex
514 alphaGen vertex
515 }
516 }
517 bats8
518 {
519 cull none
520 entityMergable // allow all the sprites to be merged together
521 {
522 map sprites/bats/bat8.tga
523 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
524 rgbGen vertex
525 alphaGen vertex
526 }
527 }
528 bats9
529 {
530 cull none
531 entityMergable // allow all the sprites to be merged together
532 {
533 map sprites/bats/bat9.tga
534 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
535 rgbGen vertex
536 alphaGen vertex
537 }
538 }
539 bats10
540 {
541 cull none
542 entityMergable // allow all the sprites to be merged together
543 {
544 map sprites/bats/bat10.tga
545 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
546 rgbGen vertex
547 alphaGen vertex
548 }
549 }
550 //done
551
552 blood_dot1
553 {
554 polygonOffset
555 {
556 map sprites/blood_dot1.tga
557 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
558 rgbGen vertex
559 alphaGen vertex
560 }
561 }
562 blood_dot2
563 {
564 polygonOffset
565 {
566 map sprites/blood_dot2.tga
567 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
568 rgbGen vertex
569 alphaGen vertex
570 }
571 }
572 blood_dot3
573 {
574 polygonOffset
575 {
576 map sprites/blood_dot3.tga
577 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
578 rgbGen vertex
579 alphaGen vertex
580 }
581 }
582 blood_dot4
583 {
584 polygonOffset
585 {
586 map sprites/blood_dot4.tga
587 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
588 rgbGen vertex
589 alphaGen vertex
590 }
591 }
592 blood_dot5
593 {
594 polygonOffset
595 {
596 map sprites/blood_dot5.tga
597 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
598 rgbGen vertex
599 alphaGen vertex
600 }
601 }
602
603 // Flamethrower Nozzle
604 nozzleFlame1
605 {
606 nofog
607 cull none
608 {
609 map sprites\nozzle\noz001.tga
610 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
611 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
612 rgbGen vertex
613 alphaGen vertex
614 }
615 }
616 nozzleFlame2
617 {
618 nofog
619 cull none
620 {
621 map sprites\nozzle\noz002.tga
622 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
623 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
624 rgbGen vertex
625 alphaGen vertex
626 }
627 }
628 nozzleFlame3
629 {
630 nofog
631 cull none
632 {
633 map sprites\nozzle\noz003.tga
634 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
635 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
636 rgbGen vertex
637 alphaGen vertex
638 }
639 }
640 nozzleFlame4
641 {
642 nofog
643 cull none
644 {
645 map sprites\nozzle\noz004.tga
646 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
647 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
648 rgbGen vertex
649 alphaGen vertex
650 }
651 }
652 nozzleFlame5
653 {
654 nofog
655 cull none
656 {
657 map sprites\nozzle\noz005.tga
658 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
659 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
660 rgbGen vertex
661 alphaGen vertex
662 }
663 }
664 nozzleFlame6
665 {
666 nofog
667 cull none
668 {
669 map sprites\nozzle\noz006.tga
670 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
671 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
672 rgbGen vertex
673 alphaGen vertex
674 }
675 }
676 nozzleFlame7
677 {
678 nofog
679 cull none
680 {
681 map sprites\nozzle\noz007.tga
682 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
683 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
684 rgbGen vertex
685 alphaGen vertex
686 }
687 }
688 nozzleFlame8
689 {
690 nofog
691 cull none
692 {
693 map sprites\nozzle\noz008.tga
694 blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR
695 // blendfunc GL_ONE GL_ONE_MINUS_SRC_COLOR_MINUS_SRC_ALPHA
696 rgbGen vertex
697 alphaGen vertex
698 }
699 }
700
701 sprites/percentdot
702 {
703 nopicmip
704 nomipmaps
705 {
706 map sprites/percentdot.tga
707 blendfunc GL_ONE GL_ONE
708 }
709 }
710
711 viewFlashBlood
712 {
713 sort nearest
714 {
715 //map *white
716 map sprites/viewflash_red.tga
717 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
718 //rgbGen identityLighting
719 alphaGen vertex
720 }
721 }
722
723 viewFadeBlack
724 {
725 sort nearest
726 {
727 map *white
728 blendFunc GL_ZERO GL_ONE_MINUS_SRC_ALPHA
729 rgbGen wave square 0 0 0 0 // just solid black
730 alphaGen entity
731 }
732 }
733
734 bloodTrail
735 {
736 cull disable
737 {
738 map models/weaphits/blood204.tga
739 blendfunc blend
740 }
741 }
742
743
744 viewFlashFire
745 {
746 sort nearest
747 {
748 //map *white
749 animmap 20 sprites/inferno/inf0003.tga sprites/inferno/inf0004.tga sprites/inferno/inf0005.tga sprites/inferno/inf0006.tga sprites/inferno/inf0007.tga sprites/inferno/inf0008.tga
750 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
751 //blendFunc GL_SRC_ALPHA GL_ONE
752 //rgbGen identityLighting
753 alphaGen vertex
754 }
755 }
756
757 bloodCloud
758 {
759 cull none
760 entityMergable
761 {
762 map sprites/bloodCloud.tga
763 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
764 rgbGen vertex
765 alphaGen vertex
766 }
767 }
768
769 // zombie dlight
770 flamedlightshader
771 {
772 {
773 map $dlight
774 blendfunc GL_DST_COLOR GL_ONE
775 }
776 {
777 map $dlight
778 blendfunc GL_DST_COLOR GL_ONE
779 }
780 {
781 map $dlight
782 blendfunc GL_DST_COLOR GL_ONE
783 }
784 }
785
786 viewTeslaDamageEffect
787 {
788 nofog
789 cull disable
790 sort nearest
791 {
792 map $whiteimage
793 blendFunc GL_DST_COLOR GL_ONE
794 rgbGen entity
795 }
796 {
797 map $whiteimage
798 blendFunc GL_DST_COLOR GL_ONE
799 rgbGen entity
800 }
801 {
802 map $whiteimage
803 blendFunc GL_DST_COLOR GL_ONE
804 rgbGen entity
805 }
806 {
807 map $whiteimage
808 blendFunc GL_DST_COLOR GL_ONE
809 rgbGen entity
810 }
811 }
812
813 viewTeslaAltDamageEffect
814 {
815 nofog
816 cull disable
817 sort nearest
818 {
819 map $whiteimage
820 blendFunc GL_DST_COLOR GL_ONE
821 rgbGen entity
822 }
823 {
824 map $whiteimage
825 blendFunc GL_DST_COLOR GL_ONE
826 rgbGen entity
827 }
828 }
829
830 sprites/aistate1
831 {
832 {
833 map sprites/relaxed.tga
834 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
835 }
836 }
837
838 sprites/aistate2
839 {
840 {
841 map sprites/query.tga
842 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
843 }
844 }
845
846 sprites/aistate3
847 {
848 {
849 map sprites/alerted.tga
850 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
851 }
852 }
853
854 sprites/aistate4
855 {
856 {
857 map sprites/combat.tga
858 blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
859 }
860 }
861
862
863 // ===========================
864 // Nerve Gun fire hitting grass/sand
865 // ===========================
866 dirt_splash
867 {
868 cull none
869 entityMergable
870 {
871 map models/weaphits/sand_splash.tga
872 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
873 rgbGen vertex
874 alphaGen vertex
875 }
876 }
877
878 water_splash
879 {
880 cull none
881 entityMergable
882 {
883 map models/weaphits/water_splash.tga
884 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
885 rgbGen vertex
886 alphaGen vertex
887 }
888 }
0 ///////////////// terrain ////////////////////
1 //////////////////////////////////////////////
2
3 textures/terrain/mxterra1_0
4 {
5 surfaceparm nolightmap
6 q3map_novertexshadows
7 q3map_forcesunlight
8 {
9 map textures/stone/mxrock9c.tga
10 rgbGen vertexLit
11 tcmod scale 0.125 0.125
12 }
13 {
14 map textures/skies2/clouds2.tga
15 blendfunc filter
16 tcmod scale 0.01 0.01
17 tcMod scroll -0.01 -0.05
18 }
19 }
20
21 textures/terrain/mxterra1_1
22 {
23 surfaceparm nolightmap
24 q3map_novertexshadows
25 q3map_forcesunlight
26 {
27 map textures/stone/mxrock12c.tga
28 rgbGen vertexLit
29 tcmod scale 0.125 0.125
30 }
31 {
32 map textures/skies2/clouds2.tga
33 blendfunc filter
34 tcmod scale 0.01 0.01
35 tcMod scroll -0.01 -0.05
36 }
37 }
38
39 textures/terrain/mxterra1_2
40 {
41 surfaceparm nolightmap
42 q3map_novertexshadows
43 q3map_forcesunlight
44 {
45 map textures/stone/mxrock10c.tga
46 tcmod scale 0.05 0.05
47 rgbGen vertexLit
48 }
49 {
50 map textures/skies2/clouds2.tga
51 blendfunc filter
52 tcmod scale 0.01 0.01
53 tcMod scroll -0.01 -0.05
54 }
55
56 }
57 textures/terrain/mxterra1_0to1
58 {
59 surfaceparm nolightmap
60 q3map_novertexshadows
61 q3map_forcesunlight
62 {
63 map textures/stone/mxrock9c.tga
64 rgbGen vertexLit
65 alphaGen vertex
66 tcmod scale 0.125 0.125
67 }
68 {
69 map textures/stone/mxrock12c.tga
70 tcmod scale 0.125 0.125
71 rgbGen vertexLit
72 alphaGen vertex
73 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
74 }
75 {
76 map textures/skies2/clouds2.tga
77 blendfunc filter
78 tcmod scale 0.01 0.01
79 tcMod scroll -0.01 -0.05
80 }
81 }
82
83 textures/terrain/mxterra1_0to2
84 {
85 surfaceparm nolightmap
86 q3map_novertexshadows
87 q3map_forcesunlight
88 {
89 map textures/stone/mxrock9c.tga
90 rgbGen vertexLit
91 alphaGen vertex
92 tcmod scale 0.125 0.125
93 }
94 {
95 map textures/stone/mxrock10c.tga
96 tcmod scale 0.05 0.05
97 rgbGen vertexLit
98 alphaGen vertex
99 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
100 }
101 {
102 map textures/skies2/clouds2.tga
103 blendfunc filter
104 tcmod scale 0.01 0.01
105 tcMod scroll -0.01 -0.05
106 }
107 }
108
109 textures/terrain/mxterra1_1to2
110 {
111 surfaceparm nolightmap
112 q3map_novertexshadows
113 q3map_forcesunlight
114 {
115 map textures/stone/mxrock12c.tga
116 rgbGen vertexLit
117 alphaGen vertex
118 tcmod scale 0.125 0.125
119 }
120 {
121 map textures/stone/mxrock10c.tga
122 tcmod scale 0.05 0.05
123 rgbGen vertexLit
124 alphaGen vertex
125 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
126 }
127 {
128 map textures/skies2/clouds2.tga
129 blendfunc filter
130 tcmod scale 0.01 0.01
131 tcMod scroll -0.01 -0.05
132 }
133 }
134
135 ///////////////// baseout ////////////////////
136 //////////////////////////////////////////////
137
138 textures/terrain/mxterra2_0
139 {
140 surfaceparm grasssteps
141 surfaceparm nolightmap
142 q3map_novertexshadows
143 q3map_forcesunlight
144 {
145 map textures/stone/mxrock0bo.tga
146 rgbGen vertexLit
147 tcmod scale 0.1 0.1
148 }
149 }
150
151 textures/terrain/mxterra2_1
152 {
153 surfaceparm gravelsteps
154 surfaceparm nolightmap
155 q3map_novertexshadows
156 q3map_forcesunlight
157 {
158 map textures/stone/mxrock1b.tga
159 rgbGen vertexLit
160 tcmod scale 0.1 0.1
161 }
162 }
163
164 textures/terrain/mxterra2_2
165 {
166 surfaceparm grasssteps
167 surfaceparm nolightmap
168 q3map_novertexshadows
169 q3map_forcesunlight
170 {
171 map textures/stone/mxrock2bo.tga
172 tcmod scale 0.05 0.05
173 rgbGen vertexLit
174 }
175 }
176
177 textures/terrain/mxterra2_3
178 {
179 surfaceparm nolightmap
180 q3map_novertexshadows
181 q3map_forcesunlight
182 {
183 map textures/stone/mxrock3bo.tga
184 tcmod scale 0.05 0.05
185 rgbGen vertexLit
186 }
187 }
188
189 textures/terrain/mxterra2_4
190 {
191 surfaceparm nolightmap
192 q3map_novertexshadows
193 q3map_forcesunlight
194 {
195 map textures/stone/mxrock4b.tga
196 tcmod scale 0.1 0.1
197 rgbGen vertexLit
198 }
199 }
200
201 textures/terrain/mxterra2_0to1
202 {
203 surfaceparm grasssteps
204 surfaceparm nolightmap
205 q3map_novertexshadows
206 q3map_forcesunlight
207 {
208 map textures/stone/mxrock0bo.tga
209 rgbGen vertexLit
210 alphaGen vertex
211 tcmod scale 0.1 0.1
212 }
213 {
214 map textures/stone/mxrock1b.tga
215 tcmod scale 0.1 0.1
216 rgbGen vertexLit
217 alphaGen vertex
218 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
219 }
220 }
221
222 textures/terrain/mxterra2_0to2
223 {
224 surfaceparm grasssteps
225 surfaceparm nolightmap
226 q3map_novertexshadows
227 q3map_forcesunlight
228 {
229 map textures/stone/mxrock0bo.tga
230 rgbGen vertexLit
231 alphaGen vertex
232 tcmod scale 0.1 0.1
233 }
234 {
235 map textures/stone/mxrock2bo.tga
236 tcmod scale 0.05 0.05
237 rgbGen vertexLit
238 alphaGen vertex
239 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
240 }
241 }
242
243 textures/terrain/mxterra2_0to3
244 {
245 surfaceparm grasssteps
246 surfaceparm nolightmap
247 q3map_novertexshadows
248 q3map_forcesunlight
249 {
250 map textures/stone/mxrock0bo.tga
251 rgbGen vertexLit
252 alphaGen vertex
253 tcmod scale 0.1 0.1
254 }
255 {
256 map textures/stone/mxrock3bo.tga
257 tcmod scale 0.05 0.05
258 rgbGen vertexLit
259 alphaGen vertex
260 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
261 }
262 }
263
264 textures/terrain/mxterra2_0to4
265 {
266 surfaceparm grasssteps
267 surfaceparm nolightmap
268 q3map_novertexshadows
269 q3map_forcesunlight
270 {
271 map textures/stone/mxrock0bo.tga
272 rgbGen vertexLit
273 alphaGen vertex
274 tcmod scale 0.1 0.1
275 }
276 {
277 map textures/stone/mxrock4b.tga
278 tcmod scale 0.1 0.1
279 rgbGen vertexLit
280 alphaGen vertex
281 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
282 }
283 }
284
285
286 textures/terrain/mxterra2_1to2
287 {
288 surfaceparm grasssteps
289 surfaceparm nolightmap
290 q3map_novertexshadows
291 q3map_forcesunlight
292 {
293 map textures/stone/mxrock1b.tga
294 rgbGen vertexLit
295 alphaGen vertex
296 tcmod scale 0.1 0.1
297 }
298 {
299 map textures/stone/mxrock2bo.tga
300 tcmod scale 0.05 0.05
301 rgbGen vertexLit
302 alphaGen vertex
303 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
304 }
305 }
306
307 textures/terrain/mxterra2_1to3
308 {
309 surfaceparm gravelsteps
310 surfaceparm nolightmap
311 q3map_novertexshadows
312 q3map_forcesunlight
313 {
314 map textures/stone/mxrock1b.tga
315 rgbGen vertexLit
316 alphaGen vertex
317 tcmod scale 0.1 0.1
318 }
319 {
320 map textures/stone/mxrock3bo.tga
321 tcmod scale 0.05 0.05
322 rgbGen vertexLit
323 alphaGen vertex
324 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
325 }
326 }
327
328 textures/terrain/mxterra2_1to4
329 {
330 surfaceparm gravelsteps
331 surfaceparm nolightmap
332 q3map_novertexshadows
333 q3map_forcesunlight
334 {
335 map textures/stone/mxrock1b.tga
336 rgbGen vertexLit
337 alphaGen vertex
338 tcmod scale 0.1 0.1
339 }
340 {
341 map textures/stone/mxrock4b.tga
342 tcmod scale 0.1 0.1
343 rgbGen vertexLit
344 alphaGen vertex
345 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
346 }
347 }
348
349 textures/terrain/mxterra2_2to3
350 {
351 surfaceparm grasssteps
352 surfaceparm nolightmap
353 q3map_novertexshadows
354 q3map_forcesunlight
355 {
356 map textures/stone/mxrock2bo.tga
357 rgbGen vertexLit
358 alphaGen vertex
359 tcmod scale 0.05 0.05
360 }
361 {
362 map textures/stone/mxrock3bo.tga
363 tcmod scale 0.05 0.05
364 rgbGen vertexLit
365 alphaGen vertex
366 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
367 }
368 }
369
370 textures/terrain/mxterra2_2to4
371 {
372 surfaceparm grasssteps
373 surfaceparm nolightmap
374 q3map_novertexshadows
375 q3map_forcesunlight
376 {
377 map textures/stone/mxrock2bo.tga
378 rgbGen vertexLit
379 alphaGen vertex
380 tcmod scale 0.05 0.05
381 }
382 {
383 map textures/stone/mxrock4b.tga
384 tcmod scale 0.1 0.1
385 rgbGen vertexLit
386 alphaGen vertex
387 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
388 }
389 }
390
391
392 textures/terrain/mxterra2_3to4
393 {
394 surfaceparm nolightmap
395 q3map_novertexshadows
396 q3map_forcesunlight
397 {
398 map textures/stone/mxrock3bo.tga
399 rgbGen vertexLit
400 alphaGen vertex
401 tcmod scale 0.05 0.05
402 }
403 {
404 map textures/stone/mxrock4b.tga
405 tcmod scale 0.1 0.1
406 rgbGen vertexLit
407 alphaGen vertex
408 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
409 }
410 }
411
412
413 ///////////////// forest ////////////////////////
414 /////////////////////////////////////////////////
415
416 textures/terrain/mxterra3_0
417 {
418 surfaceparm grasssteps
419 surfaceparm nolightmap
420 q3map_novertexshadows
421 q3map_forcesunlight
422 {
423 map textures/stone/mxrock0b.tga
424 rgbGen vertexLit
425 tcmod scale 0.1 0.1
426 }
427 {
428 map textures/skies2/clouds2.tga
429 blendfunc filter
430 tcmod scale 0.01 0.01
431 tcMod scroll -0.01 -0.05
432 }
433 }
434
435 textures/terrain/mxterra3_1
436 {
437 surfaceparm gravelsteps
438 surfaceparm nolightmap
439 q3map_novertexshadows
440 q3map_forcesunlight
441 {
442 map textures/stone/mxrock1b.tga
443 rgbGen vertexLit
444 tcmod scale 0.1 0.1
445 }
446 {
447 map textures/skies2/clouds2.tga
448 blendfunc filter
449 tcmod scale 0.01 0.01
450 tcMod scroll -0.01 -0.05
451 }
452 }
453
454 textures/terrain/mxterra3_2
455 {
456 surfaceparm grasssteps
457 surfaceparm nolightmap
458 q3map_novertexshadows
459 q3map_forcesunlight
460 {
461 map textures/stone/mxrock2b.tga
462 tcmod scale 0.05 0.05
463 rgbGen vertexLit
464 }
465 {
466 map textures/skies2/clouds2.tga
467 blendfunc filter
468 tcmod scale 0.01 0.01
469 tcMod scroll -0.01 -0.05
470 }
471 }
472
473 textures/terrain/mxterra3_3
474 {
475 surfaceparm nolightmap
476 q3map_novertexshadows
477 q3map_forcesunlight
478 {
479 map textures/stone/mxrock3g.tga
480 tcmod scale 0.05 0.05
481 rgbGen vertexLit
482 }
483 {
484 map textures/skies2/clouds2.tga
485 blendfunc filter
486 tcmod scale 0.01 0.01
487 tcMod scroll -0.01 -0.05
488 }
489 }
490
491 textures/terrain/mxterra3_4
492 {
493 surfaceparm nolightmap
494 q3map_novertexshadows
495 q3map_forcesunlight
496 {
497 map textures/stone/mxrock4b.tga
498 tcmod scale 0.1 0.1
499 rgbGen vertexLit
500 }
501 {
502 map textures/skies2/clouds2.tga
503 blendfunc filter
504 tcmod scale 0.01 0.01
505 tcMod scroll -0.01 -0.05
506 }
507 }
508
509 textures/terrain/mxterra3_0to1
510 {
511 surfaceparm grasssteps
512 surfaceparm nolightmap
513 q3map_novertexshadows
514 q3map_forcesunlight
515 {
516 map textures/stone/mxrock0b.tga
517 rgbGen vertexLit
518 alphaGen vertex
519 tcmod scale 0.1 0.1
520 }
521 {
522 map textures/stone/mxrock1b.tga
523 tcmod scale 0.1 0.1
524 rgbGen vertexLit
525 alphaGen vertex
526 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
527 }
528 {
529 map textures/skies2/clouds2.tga
530 blendfunc filter
531 tcmod scale 0.01 0.01
532 tcMod scroll -0.01 -0.05
533 }
534 }
535
536 textures/terrain/mxterra3_0to2
537 {
538 surfaceparm grasssteps
539 surfaceparm nolightmap
540 q3map_novertexshadows
541 q3map_forcesunlight
542 {
543 map textures/stone/mxrock0b.tga
544 rgbGen vertexLit
545 alphaGen vertex
546 tcmod scale 0.1 0.1
547 }
548 {
549 map textures/stone/mxrock2b.tga
550 tcmod scale 0.05 0.05
551 rgbGen vertexLit
552 alphaGen vertex
553 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
554 }
555 {
556 map textures/skies2/clouds2.tga
557 blendfunc filter
558 tcmod scale 0.01 0.01
559 tcMod scroll -0.01 -0.05
560 }
561 }
562
563 textures/terrain/mxterra3_0to3
564 {
565 surfaceparm grasssteps
566 surfaceparm nolightmap
567 q3map_novertexshadows
568 q3map_forcesunlight
569 {
570 map textures/stone/mxrock0b.tga
571 rgbGen vertexLit
572 alphaGen vertex
573 tcmod scale 0.1 0.1
574 }
575 {
576 map textures/stone/mxrock3g.tga
577 tcmod scale 0.05 0.05
578 rgbGen vertexLit
579 alphaGen vertex
580 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
581 }
582 {
583 map textures/skies2/clouds2.tga
584 blendfunc filter
585 tcmod scale 0.01 0.01
586 tcMod scroll -0.01 -0.05
587 }
588 }
589
590 textures/terrain/mxterra3_0to4
591 {
592 surfaceparm grasssteps
593 surfaceparm nolightmap
594 q3map_novertexshadows
595 q3map_forcesunlight
596 {
597 map textures/stone/mxrock0b.tga
598 rgbGen vertexLit
599 alphaGen vertex
600 tcmod scale 0.1 0.1
601 }
602 {
603 map textures/stone/mxrock4b.tga
604 tcmod scale 0.1 0.1
605 rgbGen vertexLit
606 alphaGen vertex
607 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
608 }
609 {
610 map textures/skies2/clouds2.tga
611 blendfunc filter
612 tcmod scale 0.01 0.01
613 tcMod scroll -0.01 -0.05
614 }
615 }
616
617
618 textures/terrain/mxterra3_1to2
619 {
620 surfaceparm grasssteps
621 surfaceparm nolightmap
622 q3map_novertexshadows
623 q3map_forcesunlight
624 {
625 map textures/stone/mxrock1b.tga
626 rgbGen vertexLit
627 alphaGen vertex
628 tcmod scale 0.1 0.1
629 }
630 {
631 map textures/stone/mxrock2b.tga
632 tcmod scale 0.05 0.05
633 rgbGen vertexLit
634 alphaGen vertex
635 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
636 }
637 {
638 map textures/skies2/clouds2.tga
639 blendfunc filter
640 tcmod scale 0.01 0.01
641 tcMod scroll -0.01 -0.05
642 }
643 }
644
645 textures/terrain/mxterra3_1to3
646 {
647 surfaceparm gravelsteps
648 surfaceparm nolightmap
649 q3map_novertexshadows
650 q3map_forcesunlight
651 {
652 map textures/stone/mxrock1b.tga
653 rgbGen vertexLit
654 alphaGen vertex
655 tcmod scale 0.1 0.1
656 }
657 {
658 map textures/stone/mxrock3g.tga
659 tcmod scale 0.05 0.05
660 rgbGen vertexLit
661 alphaGen vertex
662 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
663 }
664 {
665 map textures/skies2/clouds2.tga
666 blendfunc filter
667 tcmod scale 0.01 0.01
668 tcMod scroll -0.01 -0.05
669 }
670 }
671
672 textures/terrain/mxterra3_1to4
673 {
674 surfaceparm gravelsteps
675 surfaceparm nolightmap
676 q3map_novertexshadows
677 q3map_forcesunlight
678 {
679 map textures/stone/mxrock1b.tga
680 rgbGen vertexLit
681 alphaGen vertex
682 tcmod scale 0.1 0.1
683 }
684 {
685 map textures/stone/mxrock4b.tga
686 tcmod scale 0.1 0.1
687 rgbGen vertexLit
688 alphaGen vertex
689 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
690 }
691 {
692 map textures/skies2/clouds2.tga
693 blendfunc filter
694 tcmod scale 0.01 0.01
695 tcMod scroll -0.01 -0.05
696 }
697 }
698
699 textures/terrain/mxterra3_2to3
700 {
701 surfaceparm grasssteps
702 surfaceparm nolightmap
703 q3map_novertexshadows
704 q3map_forcesunlight
705 {
706 map textures/stone/mxrock2b.tga
707 rgbGen vertexLit
708 alphaGen vertex
709 tcmod scale 0.05 0.05
710 }
711 {
712 map textures/stone/mxrock3g.tga
713 tcmod scale 0.05 0.05
714 rgbGen vertexLit
715 alphaGen vertex
716 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
717 }
718 {
719 map textures/skies2/clouds2.tga
720 blendfunc filter
721 tcmod scale 0.01 0.01
722 tcMod scroll -0.01 -0.05
723 }
724 }
725
726 textures/terrain/mxterra3_2to4
727 {
728 surfaceparm grasssteps
729 surfaceparm nolightmap
730 q3map_novertexshadows
731 q3map_forcesunlight
732 {
733 map textures/stone/mxrock2b.tga
734 rgbGen vertexLit
735 alphaGen vertex
736 tcmod scale 0.05 0.05
737 }
738 {
739 map textures/stone/mxrock4b.tga
740 tcmod scale 0.1 0.1
741 rgbGen vertexLit
742 alphaGen vertex
743 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
744 }
745 {
746 map textures/skies2/clouds2.tga
747 blendfunc filter
748 tcmod scale 0.01 0.01
749 tcMod scroll -0.01 -0.05
750 }
751 }
752
753 textures/terrain/mxterra3_3to4
754 {
755 surfaceparm nolightmap
756 q3map_novertexshadows
757 q3map_forcesunlight
758 {
759 map textures/stone/mxrock3g.tga
760 rgbGen vertexLit
761 alphaGen vertex
762 tcmod scale 0.05 0.05
763 }
764 {
765 map textures/stone/mxrock4b.tga
766 tcmod scale 0.1 0.1
767 rgbGen vertexLit
768 alphaGen vertex
769 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
770 }
771 {
772 map textures/skies2/clouds2.tga
773 blendfunc filter
774 tcmod scale 0.01 0.01
775 tcMod scroll -0.01 -0.05
776 }
777 }
778
779
780 ///////////////// sfm ////////////////////////
781 //////////////////////////////////////////////
782
783 textures/terrain/mxterra4_0
784 {
785 surfaceparm nolightmap
786 q3map_novertexshadows
787 q3map_forcesunlight
788 {
789 map textures/stone/mxdebri0.tga
790 rgbGen vertexLit
791 tcmod scale 0.25 0.25
792 }
793 }
794
795 textures/terrain/mxterra4_1
796 {
797 surfaceparm nolightmap
798 q3map_novertexshadows
799 q3map_forcesunlight
800 {
801 map textures/stone/mxdebri1.tga
802 rgbGen vertexLit
803 tcmod scale 0.25 0.25
804 }
805 }
806
807 textures/terrain/mxterra4_2
808 {
809 surfaceparm nolightmap
810 q3map_novertexshadows
811 q3map_forcesunlight
812 {
813 map textures/stone/mxdebri2.tga
814 rgbGen vertexLit
815 tcmod scale 0.05 0.05
816 }
817 }
818
819 textures/terrain/mxterra4_3
820 {
821 surfaceparm nolightmap
822 q3map_novertexshadows
823 q3map_forcesunlight
824 {
825 map textures/stone/mxdebri3.tga
826 rgbGen vertexLit
827 tcmod scale 0.05 0.05
828 }
829 }
830
831 textures/terrain/mxterra4_4
832 {
833 surfaceparm nolightmap
834 q3map_novertexshadows
835 q3map_forcesunlight
836 {
837 map textures/stone/mxdebri4.tga
838 rgbGen vertexLit
839 tcmod scale 0.05 0.05
840 }
841 }
842
843 textures/terrain/mxterra4_0to1
844 {
845 surfaceparm nolightmap
846 q3map_novertexshadows
847 q3map_forcesunlight
848 {
849 map textures/stone/mxdebri0.tga
850 rgbGen vertexLit
851 alphaGen vertex
852 tcmod scale 0.25 0.25
853 }
854 {
855 map textures/stone/mxdebri1.tga
856 rgbGen vertexLit
857 alphaGen vertex
858 tcmod scale 0.25 0.25
859 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
860 }
861 }
862
863 textures/terrain/mxterra4_0to2
864 {
865 surfaceparm nolightmap
866 q3map_novertexshadows
867 q3map_forcesunlight
868 {
869 map textures/stone/mxdebri0.tga
870 rgbGen vertexLit
871 alphaGen vertex
872 tcmod scale 0.25 0.25
873 }
874 {
875 map textures/stone/mxdebri2.tga
876 rgbGen vertexLit
877 alphaGen vertex
878 tcmod scale 0.05 0.05
879 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
880 }
881 }
882
883 textures/terrain/mxterra4_0to3
884 {
885 surfaceparm nolightmap
886 q3map_novertexshadows
887 q3map_forcesunlight
888 {
889 map textures/stone/mxdebri0.tga
890 rgbGen vertexLit
891 alphaGen vertex
892 tcmod scale 0.25 0.25
893 }
894 {
895 map textures/stone/mxdebri3.tga
896 rgbGen vertexLit
897 alphaGen vertex
898 tcmod scale 0.05 0.05
899 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
900 }
901 }
902
903 textures/terrain/mxterra4_0to4
904 {
905 surfaceparm nolightmap
906 q3map_novertexshadows
907 q3map_forcesunlight
908 {
909 map textures/stone/mxdebri0.tga
910 rgbGen vertexLit
911 alphaGen vertex
912 tcmod scale 0.25 0.25
913 }
914 {
915 map textures/stone/mxdebri4.tga
916 rgbGen vertexLit
917 alphaGen vertex
918 tcmod scale 0.05 0.05
919 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
920 }
921 }
922
923
924 textures/terrain/mxterra4_1to2
925 {
926 surfaceparm nolightmap
927 q3map_novertexshadows
928 q3map_forcesunlight
929 {
930 map textures/stone/mxdebri1.tga
931 rgbGen vertexLit
932 alphaGen vertex
933 tcmod scale 0.25 0.25
934 }
935 {
936 map textures/stone/mxdebri2.tga
937 rgbGen vertexLit
938 alphaGen vertex
939 tcmod scale 0.05 0.05
940 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
941 }
942 }
943
944 textures/terrain/mxterra4_1to3
945 {
946 surfaceparm nolightmap
947 q3map_novertexshadows
948 q3map_forcesunlight
949 {
950 map textures/stone/mxdebri1.tga
951 rgbGen vertexLit
952 alphaGen vertex
953 tcmod scale 0.25 0.25
954 }
955 {
956 map textures/stone/mxdebri3.tga
957 rgbGen vertexLit
958 alphaGen vertex
959 tcmod scale 0.05 0.05
960 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
961 }
962 }
963
964 textures/terrain/mxterra4_1to4
965 {
966 surfaceparm nolightmap
967 q3map_novertexshadows
968 q3map_forcesunlight
969 {
970 map textures/stone/mxdebri1.tga
971 rgbGen vertexLit
972 alphaGen vertex
973 tcmod scale 0.25 0.25
974 }
975 {
976 map textures/stone/mxdebri4.tga
977 rgbGen vertexLit
978 alphaGen vertex
979 tcmod scale 0.05 0.05
980 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
981 }
982 }
983
984 textures/terrain/mxterra4_2to3
985 {
986 surfaceparm nolightmap
987 q3map_novertexshadows
988 q3map_forcesunlight
989 {
990 map textures/stone/mxdebri2.tga
991 rgbGen vertexLit
992 alphaGen vertex
993 tcmod scale 0.05 0.05
994 }
995 {
996 map textures/stone/mxdebri3.tga
997 tcmod scale 0.05 0.05
998 rgbGen vertexLit
999 alphaGen vertex
1000 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1001 }
1002 }
1003
1004 textures/terrain/mxterra4_2to4
1005 {
1006 surfaceparm nolightmap
1007 q3map_novertexshadows
1008 q3map_forcesunlight
1009 {
1010 map textures/stone/mxdebri2.tga
1011 rgbGen vertexLit
1012 alphaGen vertex
1013 tcmod scale 0.05 0.05
1014 }
1015 {
1016 map textures/stone/mxdebri4.tga
1017 tcmod scale 0.05 0.05
1018 rgbGen vertexLit
1019 alphaGen vertex
1020 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1021 }
1022 }
1023
1024
1025 textures/terrain/mxterra4_3to4
1026 {
1027 surfaceparm nolightmap
1028 q3map_novertexshadows
1029 q3map_forcesunlight
1030 {
1031 map textures/stone/mxdebri3.tga
1032 rgbGen vertexLit
1033 alphaGen vertex
1034 tcmod scale 0.05 0.05
1035 }
1036 {
1037 map textures/stone/mxdebri4.tga
1038 tcmod scale 0.05 0.05
1039 rgbGen vertexLit
1040 alphaGen vertex
1041 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1042 }
1043 }
1044
1045
1046 ///////////////// snow ///////////////////////
1047 //////////////////////////////////////////////
1048
1049 textures/terrain/mxterra5_0
1050 {
1051 surfaceparm grasssteps
1052 surfaceparm nolightmap
1053 q3map_novertexshadows
1054 q3map_forcesunlight
1055 {
1056 map textures/stone/mxsnow0.tga
1057 rgbGen vertexLit
1058 tcmod scale 0.05 0.05
1059 }
1060 {
1061 map textures/skies2/clouds2.tga
1062 blendfunc filter
1063 tcmod scale 0.01 0.01
1064 tcMod scroll -0.01 -0.05
1065 }
1066 }
1067
1068 textures/terrain/mxterra5_1
1069 {
1070 surfaceparm gravelsteps
1071 surfaceparm nolightmap
1072 q3map_novertexshadows
1073 q3map_forcesunlight
1074 {
1075 map textures/stone/mxsnow1.tga
1076 rgbGen vertexLit
1077 tcmod scale 0.025 0.025
1078 }
1079 {
1080 map textures/skies2/clouds2.tga
1081 blendfunc filter
1082 tcmod scale 0.01 0.01
1083 tcMod scroll -0.01 -0.05
1084 }
1085 }
1086
1087 textures/terrain/mxterra5_2
1088 {
1089 surfaceparm grasssteps
1090 surfaceparm nolightmap
1091 q3map_novertexshadows
1092 q3map_forcesunlight
1093 {
1094 map textures/stone/mxsnow2.tga
1095 tcmod scale 0.05 0.05
1096 rgbGen vertexLit
1097 }
1098 {
1099 map textures/skies2/clouds2.tga
1100 blendfunc filter
1101 tcmod scale 0.01 0.01
1102 tcMod scroll -0.01 -0.05
1103 }
1104 }
1105
1106 textures/terrain/mxterra5_3
1107 {
1108 surfaceparm nolightmap
1109 q3map_novertexshadows
1110 q3map_forcesunlight
1111 {
1112 map textures/stone/mxsnow3.tga
1113 tcmod scale 0.05 0.05
1114 rgbGen vertexLit
1115 }
1116 {
1117 map textures/skies2/clouds2.tga
1118 blendfunc filter
1119 tcmod scale 0.01 0.01
1120 tcMod scroll -0.01 -0.05
1121 }
1122 }
1123
1124 textures/terrain/mxterra5_4
1125 {
1126 surfaceparm nolightmap
1127 q3map_novertexshadows
1128 q3map_forcesunlight
1129 {
1130 map textures/stone/mxsnow4.tga
1131 tcmod scale 0.1 0.1
1132 rgbGen vertexLit
1133 }
1134 {
1135 map textures/skies2/clouds2.tga
1136 blendfunc filter
1137 tcmod scale 0.01 0.01
1138 tcMod scroll -0.01 -0.05
1139 }
1140 }
1141
1142 textures/terrain/mxterra5_0to1
1143 {
1144 surfaceparm grasssteps
1145 surfaceparm nolightmap
1146 q3map_novertexshadows
1147 q3map_forcesunlight
1148 {
1149 map textures/stone/mxsnow0.tga
1150 rgbGen vertexLit
1151 alphaGen vertex
1152 tcmod scale 0.05 0.05
1153 }
1154 {
1155 map textures/stone/mxsnow1.tga
1156 tcmod scale 0.025 0.025
1157 rgbGen vertexLit
1158 alphaGen vertex
1159 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1160 }
1161 {
1162 map textures/skies2/clouds2.tga
1163 blendfunc filter
1164 tcmod scale 0.01 0.01
1165 tcMod scroll -0.01 -0.05
1166 }
1167 }
1168
1169 textures/terrain/mxterra5_0to2
1170 {
1171 surfaceparm grasssteps
1172 surfaceparm nolightmap
1173 q3map_novertexshadows
1174 q3map_forcesunlight
1175 {
1176 map textures/stone/mxsnow0.tga
1177 rgbGen vertexLit
1178 alphaGen vertex
1179 tcmod scale 0.05 0.05
1180 }
1181 {
1182 map textures/stone/mxsnow2.tga
1183 tcmod scale 0.05 0.05
1184 rgbGen vertexLit
1185 alphaGen vertex
1186 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1187 }
1188 {
1189 map textures/skies2/clouds2.tga
1190 blendfunc filter
1191 tcmod scale 0.01 0.01
1192 tcMod scroll -0.01 -0.05
1193 }
1194 }
1195
1196 textures/terrain/mxterra5_0to3
1197 {
1198 surfaceparm grasssteps
1199 surfaceparm nolightmap
1200 q3map_novertexshadows
1201 q3map_forcesunlight
1202 {
1203 map textures/stone/mxsnow0.tga
1204 rgbGen vertexLit
1205 alphaGen vertex
1206 tcmod scale 0.05 0.05
1207 }
1208 {
1209 map textures/stone/mxsnow3.tga
1210 tcmod scale 0.05 0.05
1211 rgbGen vertexLit
1212 alphaGen vertex
1213 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1214 }
1215 {
1216 map textures/skies2/clouds2.tga
1217 blendfunc filter
1218 tcmod scale 0.01 0.01
1219 tcMod scroll -0.01 -0.05
1220 }
1221 }
1222
1223 textures/terrain/mxterra5_0to4
1224 {
1225 surfaceparm grasssteps
1226 surfaceparm nolightmap
1227 q3map_novertexshadows
1228 q3map_forcesunlight
1229 {
1230 map textures/stone/mxsnow0.tga
1231 rgbGen vertexLit
1232 alphaGen vertex
1233 tcmod scale 0.05 0.05
1234 }
1235 {
1236 map textures/stone/mxsnow4.tga
1237 tcmod scale 0.1 0.1
1238 rgbGen vertexLit
1239 alphaGen vertex
1240 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1241 }
1242 {
1243 map textures/skies2/clouds2.tga
1244 blendfunc filter
1245 tcmod scale 0.01 0.01
1246 tcMod scroll -0.01 -0.05
1247 }
1248
1249 }
1250
1251 textures/terrain/mxterra5_1to2
1252 {
1253 surfaceparm grasssteps
1254 surfaceparm nolightmap
1255 q3map_novertexshadows
1256 q3map_forcesunlight
1257 {
1258 map textures/stone/mxsnow1.tga
1259 rgbGen vertexLit
1260 alphaGen vertex
1261 tcmod scale 0.1 0.1
1262 }
1263 {
1264 map textures/stone/mxsnow2.tga
1265 tcmod scale 0.05 0.05
1266 rgbGen vertexLit
1267 alphaGen vertex
1268 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1269 }
1270 {
1271 map textures/skies2/clouds2.tga
1272 blendfunc filter
1273 tcmod scale 0.01 0.01
1274 tcMod scroll -0.01 -0.05
1275 }
1276 }
1277
1278 textures/terrain/mxterra5_1to3
1279 {
1280 surfaceparm gravelsteps
1281 surfaceparm nolightmap
1282 q3map_novertexshadows
1283 q3map_forcesunlight
1284 {
1285 map textures/stone/mxsnow1.tga
1286 rgbGen vertexLit
1287 alphaGen vertex
1288 tcmod scale 0.1 0.1
1289 }
1290 {
1291 map textures/stone/mxsnow3.tga
1292 tcmod scale 0.05 0.05
1293 rgbGen vertexLit
1294 alphaGen vertex
1295 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1296 }
1297 {
1298 map textures/skies2/clouds2.tga
1299 blendfunc filter
1300 tcmod scale 0.01 0.01
1301 tcMod scroll -0.01 -0.05
1302 }
1303 }
1304
1305 textures/terrain/mxterra5_1to4
1306 {
1307 surfaceparm gravelsteps
1308 surfaceparm nolightmap
1309 q3map_novertexshadows
1310 q3map_forcesunlight
1311 {
1312 map textures/stone/mxsnow1.tga
1313 rgbGen vertexLit
1314 alphaGen vertex
1315 tcmod scale 0.1 0.1
1316 }
1317 {
1318 map textures/stone/mxsnow4.tga
1319 tcmod scale 0.1 0.1
1320 rgbGen vertexLit
1321 alphaGen vertex
1322 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1323 }
1324 {
1325 map textures/skies2/clouds2.tga
1326 blendfunc filter
1327 tcmod scale 0.01 0.01
1328 tcMod scroll -0.01 -0.05
1329 }
1330 }
1331
1332 textures/terrain/mxterra5_2to3
1333 {
1334 surfaceparm grasssteps
1335 surfaceparm nolightmap
1336 q3map_novertexshadows
1337 q3map_forcesunlight
1338 {
1339 map textures/stone/mxsnow2.tga
1340 rgbGen vertexLit
1341 alphaGen vertex
1342 tcmod scale 0.05 0.05
1343 }
1344 {
1345 map textures/stone/mxsnow3.tga
1346 tcmod scale 0.05 0.05
1347 rgbGen vertexLit
1348 alphaGen vertex
1349 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1350 }
1351 {
1352 map textures/skies2/clouds2.tga
1353 blendfunc filter
1354 tcmod scale 0.01 0.01
1355 tcMod scroll -0.01 -0.05
1356 }
1357 }
1358
1359 textures/terrain/mxterra5_2to4
1360 {
1361 surfaceparm grasssteps
1362 surfaceparm nolightmap
1363 q3map_novertexshadows
1364 q3map_forcesunlight
1365 {
1366 map textures/stone/mxsnow2.tga
1367 rgbGen vertexLit
1368 alphaGen vertex
1369 tcmod scale 0.05 0.05
1370 }
1371 {
1372 map textures/stone/mxsnow4.tga
1373 tcmod scale 0.1 0.1
1374 rgbGen vertexLit
1375 alphaGen vertex
1376 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1377 }
1378 {
1379 map textures/skies2/clouds2.tga
1380 blendfunc filter
1381 tcmod scale 0.01 0.01
1382 tcMod scroll -0.01 -0.05
1383 }
1384 }
1385
1386
1387 textures/terrain/mxterra5_3to4
1388 {
1389 surfaceparm nolightmap
1390 q3map_novertexshadows
1391 q3map_forcesunlight
1392 {
1393 map textures/stone/mxsnow3.tga
1394 rgbGen vertexLit
1395 alphaGen vertex
1396 tcmod scale 0.05 0.05
1397 }
1398 {
1399 map textures/stone/mxsnow4.tga
1400 tcmod scale 0.1 0.1
1401 rgbGen vertexLit
1402 alphaGen vertex
1403 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1404 }
1405 {
1406 map textures/skies2/clouds2.tga
1407 blendfunc filter
1408 tcmod scale 0.01 0.01
1409 tcMod scroll -0.01 -0.05
1410 }
1411 }
1412
1413
1414 ///////////////// beach //////////////////////
1415 //////////////////////////////////////////////
1416
1417 textures/terrain/mxterra6_0
1418 {
1419 surfaceparm grasssteps
1420 surfaceparm nolightmap
1421 q3map_novertexshadows
1422 q3map_forcesunlight
1423 {
1424 map textures/stone/mxsand0.tga
1425 rgbGen vertexLit
1426 tcmod scale 0.1 0.1
1427 }
1428 {
1429 map textures/skies2/clouds2.tga
1430 blendfunc filter
1431 tcmod scale 0.01 0.01
1432 tcMod scroll -0.01 -0.05
1433 }
1434 }
1435
1436 textures/terrain/mxterra6_1
1437 {
1438 surfaceparm gravelsteps
1439 surfaceparm nolightmap
1440 q3map_novertexshadows
1441 q3map_forcesunlight
1442 {
1443 map textures/stone/mxsand1.tga
1444 rgbGen vertexLit
1445 tcmod scale 0.1 0.1
1446 }
1447 {
1448 map textures/skies2/clouds2.tga
1449 blendfunc filter
1450 tcmod scale 0.01 0.01
1451 tcMod scroll -0.01 -0.05
1452 }
1453 }
1454
1455 textures/terrain/mxterra6_2
1456 {
1457 surfaceparm grasssteps
1458 surfaceparm nolightmap
1459 q3map_novertexshadows
1460 q3map_forcesunlight
1461 {
1462 map textures/stone/mxsand2.tga
1463 tcmod scale 0.05 0.05
1464 rgbGen vertexLit
1465 }
1466 {
1467 map textures/skies2/clouds2.tga
1468 blendfunc filter
1469 tcmod scale 0.01 0.01
1470 tcMod scroll -0.01 -0.05
1471 }
1472
1473 }
1474
1475 textures/terrain/mxterra6_3
1476 {
1477 surfaceparm nolightmap
1478 q3map_novertexshadows
1479 q3map_forcesunlight
1480 {
1481 map textures/stone/mxsand3.tga
1482 tcmod scale 0.05 0.05
1483 rgbGen vertexLit
1484 }
1485 {
1486 map textures/skies2/clouds2.tga
1487 blendfunc filter
1488 tcmod scale 0.01 0.01
1489 tcMod scroll -0.01 -0.05
1490 }
1491
1492 }
1493
1494 textures/terrain/mxterra6_4
1495 {
1496 surfaceparm nolightmap
1497 q3map_novertexshadows
1498 q3map_forcesunlight
1499 {
1500 map textures/stone/mxsand4.tga
1501 tcmod scale 0.1 0.1
1502 rgbGen vertexLit
1503 }
1504 {
1505 map textures/skies2/clouds2.tga
1506 blendfunc filter
1507 tcmod scale 0.01 0.01
1508 tcMod scroll -0.01 -0.05
1509 }
1510
1511 }
1512
1513 textures/terrain/mxterra6_0to1
1514 {
1515 surfaceparm grasssteps
1516 surfaceparm nolightmap
1517 q3map_novertexshadows
1518 q3map_forcesunlight
1519 {
1520 map textures/stone/mxsand0.tga
1521 rgbGen vertexLit
1522 alphaGen vertex
1523 tcmod scale 0.1 0.1
1524 }
1525 {
1526 map textures/stone/mxsand1.tga
1527 tcmod scale 0.1 0.1
1528 rgbGen vertexLit
1529 alphaGen vertex
1530 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1531 }
1532 {
1533 map textures/skies2/clouds2.tga
1534 blendfunc filter
1535 tcmod scale 0.01 0.01
1536 tcMod scroll -0.01 -0.05
1537 }
1538
1539 }
1540
1541 textures/terrain/mxterra6_0to2
1542 {
1543 surfaceparm grasssteps
1544 surfaceparm nolightmap
1545 q3map_novertexshadows
1546 q3map_forcesunlight
1547 {
1548 map textures/stone/mxsand0.tga
1549 rgbGen vertexLit
1550 alphaGen vertex
1551 tcmod scale 0.1 0.1
1552 }
1553 {
1554 map textures/stone/mxsand2.tga
1555 tcmod scale 0.05 0.05
1556 rgbGen vertexLit
1557 alphaGen vertex
1558 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1559 }
1560 {
1561 map textures/skies2/clouds2.tga
1562 blendfunc filter
1563 tcmod scale 0.01 0.01
1564 tcMod scroll -0.01 -0.05
1565 }
1566
1567 }
1568
1569 textures/terrain/mxterra6_0to3
1570 {
1571 surfaceparm grasssteps
1572 surfaceparm nolightmap
1573 q3map_novertexshadows
1574 q3map_forcesunlight
1575 {
1576 map textures/stone/mxsand0.tga
1577 rgbGen vertexLit
1578 alphaGen vertex
1579 tcmod scale 0.1 0.1
1580 }
1581 {
1582 map textures/stone/mxsand3.tga
1583 tcmod scale 0.05 0.05
1584 rgbGen vertexLit
1585 alphaGen vertex
1586 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1587 }
1588 {
1589 map textures/skies2/clouds2.tga
1590 blendfunc filter
1591 tcmod scale 0.01 0.01
1592 tcMod scroll -0.01 -0.05
1593 }
1594
1595 }
1596
1597 textures/terrain/mxterra6_0to4
1598 {
1599 surfaceparm grasssteps
1600 surfaceparm nolightmap
1601 q3map_novertexshadows
1602 q3map_forcesunlight
1603 {
1604 map textures/stone/mxsand0.tga
1605 rgbGen vertexLit
1606 alphaGen vertex
1607 tcmod scale 0.1 0.1
1608 }
1609 {
1610 map textures/stone/mxsand4.tga
1611 tcmod scale 0.1 0.1
1612 rgbGen vertexLit
1613 alphaGen vertex
1614 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1615 }
1616 {
1617 map textures/skies2/clouds2.tga
1618 blendfunc filter
1619 tcmod scale 0.01 0.01
1620 tcMod scroll -0.01 -0.05
1621 }
1622 }
1623
1624 textures/terrain/mxterra6_1to2
1625 {
1626 surfaceparm grasssteps
1627 surfaceparm nolightmap
1628 q3map_novertexshadows
1629 q3map_forcesunlight
1630 {
1631 map textures/stone/mxsand1.tga
1632 rgbGen vertexLit
1633 alphaGen vertex
1634 tcmod scale 0.1 0.1
1635 }
1636 {
1637 map textures/stone/mxsand2.tga
1638 tcmod scale 0.05 0.05
1639 rgbGen vertexLit
1640 alphaGen vertex
1641 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1642 }
1643 {
1644 map textures/skies2/clouds2.tga
1645 blendfunc filter
1646 tcmod scale 0.01 0.01
1647 tcMod scroll -0.01 -0.05
1648 }
1649 }
1650
1651 textures/terrain/mxterra6_1to3
1652 {
1653 surfaceparm gravelsteps
1654 surfaceparm nolightmap
1655 q3map_novertexshadows
1656 q3map_forcesunlight
1657 {
1658 map textures/stone/mxsand1.tga
1659 rgbGen vertexLit
1660 alphaGen vertex
1661 tcmod scale 0.1 0.1
1662 }
1663 {
1664 map textures/stone/mxsand3.tga
1665 tcmod scale 0.05 0.05
1666 rgbGen vertexLit
1667 alphaGen vertex
1668 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1669 }
1670 {
1671 map textures/skies2/clouds2.tga
1672 blendfunc filter
1673 tcmod scale 0.01 0.01
1674 tcMod scroll -0.01 -0.05
1675 }
1676 }
1677
1678 textures/terrain/mxterra6_1to4
1679 {
1680 surfaceparm gravelsteps
1681 surfaceparm nolightmap
1682 q3map_novertexshadows
1683 q3map_forcesunlight
1684 {
1685 map textures/stone/mxsand1.tga
1686 rgbGen vertexLit
1687 alphaGen vertex
1688 tcmod scale 0.1 0.1
1689 }
1690 {
1691 map textures/stone/mxsand4.tga
1692 tcmod scale 0.1 0.1
1693 rgbGen vertexLit
1694 alphaGen vertex
1695 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1696 }
1697 {
1698 map textures/skies2/clouds2.tga
1699 blendfunc filter
1700 tcmod scale 0.01 0.01
1701 tcMod scroll -0.01 -0.05
1702 }
1703 }
1704
1705 textures/terrain/mxterra6_2to3
1706 {
1707 surfaceparm grasssteps
1708 surfaceparm nolightmap
1709 q3map_novertexshadows
1710 q3map_forcesunlight
1711 {
1712 map textures/stone/mxsand2.tga
1713 rgbGen vertexLit
1714 alphaGen vertex
1715 tcmod scale 0.05 0.05
1716 }
1717 {
1718 map textures/stone/mxsand3.tga
1719 tcmod scale 0.05 0.05
1720 rgbGen vertexLit
1721 alphaGen vertex
1722 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1723 }
1724 {
1725 map textures/skies2/clouds2.tga
1726 blendfunc filter
1727 tcmod scale 0.01 0.01
1728 tcMod scroll -0.01 -0.05
1729 }
1730 }
1731
1732 textures/terrain/mxterra6_2to4
1733 {
1734 surfaceparm grasssteps
1735 surfaceparm nolightmap
1736 q3map_novertexshadows
1737 q3map_forcesunlight
1738 {
1739 map textures/stone/mxsand2.tga
1740 rgbGen vertexLit
1741 alphaGen vertex
1742 tcmod scale 0.05 0.05
1743 }
1744 {
1745 map textures/stone/mxsand4.tga
1746 tcmod scale 0.1 0.1
1747 rgbGen vertexLit
1748 alphaGen vertex
1749 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1750 }
1751 {
1752 map textures/skies2/clouds2.tga
1753 blendfunc filter
1754 tcmod scale 0.01 0.01
1755 tcMod scroll -0.01 -0.05
1756 }
1757 }
1758
1759
1760 textures/terrain/mxterra6_3to4
1761 {
1762 surfaceparm nolightmap
1763 q3map_novertexshadows
1764 q3map_forcesunlight
1765 {
1766 map textures/stone/mxsand3.tga
1767 rgbGen vertexLit
1768 alphaGen vertex
1769 tcmod scale 0.05 0.05
1770 }
1771 {
1772 map textures/stone/mxsand4.tga
1773 tcmod scale 0.1 0.1
1774 rgbGen vertexLit
1775 alphaGen vertex
1776 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1777 }
1778 {
1779 map textures/skies2/clouds2.tga
1780 blendfunc filter
1781 tcmod scale 0.01 0.01
1782 tcMod scroll -0.01 -0.05
1783 }
1784 }
1785
1786
1787 ///////////////// tram /////////////////////
1788 //////////////////////////////////////////////
1789
1790 textures/terrain/mxterra7_0
1791 {
1792 surfaceparm grasssteps
1793 surfaceparm nolightmap
1794 q3map_novertexshadows
1795 q3map_forcesunlight
1796 {
1797 map textures/stone/mxxsnow0.tga
1798 rgbGen vertexLit
1799 tcmod scale 0.1 0.1
1800 }
1801 }
1802
1803 textures/terrain/mxterra7_1
1804 {
1805 surfaceparm gravelsteps
1806 surfaceparm nolightmap
1807 q3map_novertexshadows
1808 q3map_forcesunlight
1809 {
1810 map textures/stone/mxxsnow1.tga
1811 rgbGen vertexLit
1812 tcmod scale .025 .025
1813 }
1814 }
1815
1816 textures/terrain/mxterra7_2
1817 {
1818 surfaceparm grasssteps
1819 surfaceparm nolightmap
1820 q3map_novertexshadows
1821 q3map_forcesunlight
1822 {
1823 map textures/stone/mxxsnow2.tga
1824 tcmod scale 0.05 0.05
1825 rgbGen vertexLit
1826 }
1827 }
1828
1829 textures/terrain/mxterra7_3
1830 {
1831 surfaceparm nolightmap
1832 q3map_novertexshadows
1833 q3map_forcesunlight
1834 {
1835 map textures/stone/mxxsnow3.tga
1836 tcmod scale 0.05 0.05
1837 rgbGen vertexLit
1838 }
1839 }
1840
1841 textures/terrain/mxterra7_4
1842 {
1843 surfaceparm nolightmap
1844 q3map_novertexshadows
1845 q3map_forcesunlight
1846 {
1847 map textures/stone/mxxsnow4.tga
1848 tcmod scale 0.1 0.1
1849 rgbGen vertexLit
1850 }
1851 }
1852
1853 textures/terrain/mxterra7_0to1
1854 {
1855 surfaceparm grasssteps
1856 surfaceparm nolightmap
1857 q3map_novertexshadows
1858 q3map_forcesunlight
1859 {
1860 map textures/stone/mxxsnow0.tga
1861 rgbGen vertexLit
1862 alphaGen vertex
1863 tcmod scale 0.1 0.1
1864 }
1865 {
1866 map textures/stone/mxxsnow1.tga
1867 tcmod scale .05 .05
1868 rgbGen vertexLit
1869 alphaGen vertex
1870 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1871 }
1872 }
1873
1874 textures/terrain/mxterra7_0to2
1875 {
1876 surfaceparm grasssteps
1877 surfaceparm nolightmap
1878 q3map_novertexshadows
1879 q3map_forcesunlight
1880 {
1881 map textures/stone/mxxsnow0.tga
1882 rgbGen vertexLit
1883 alphaGen vertex
1884 tcmod scale 0.1 0.1
1885 }
1886 {
1887 map textures/stone/mxxsnow2.tga
1888 tcmod scale 0.05 0.05
1889 rgbGen vertexLit
1890 alphaGen vertex
1891 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1892 }
1893 }
1894
1895 textures/terrain/mxterra7_0to3
1896 {
1897 surfaceparm grasssteps
1898 surfaceparm nolightmap
1899 q3map_novertexshadows
1900 q3map_forcesunlight
1901 {
1902 map textures/stone/mxxsnow0.tga
1903 rgbGen vertexLit
1904 alphaGen vertex
1905 tcmod scale 0.1 0.1
1906 }
1907 {
1908 map textures/stone/mxxsnow3.tga
1909 tcmod scale 0.05 0.05
1910 rgbGen vertexLit
1911 alphaGen vertex
1912 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1913 }
1914 }
1915
1916 textures/terrain/mxterra7_0to4
1917 {
1918 surfaceparm grasssteps
1919 surfaceparm nolightmap
1920 q3map_novertexshadows
1921 q3map_forcesunlight
1922 {
1923 map textures/stone/mxxsnow0.tga
1924 rgbGen vertexLit
1925 alphaGen vertex
1926 tcmod scale 0.1 0.1
1927 }
1928 {
1929 map textures/stone/mxxsnow4.tga
1930 tcmod scale 0.1 0.1
1931 rgbGen vertexLit
1932 alphaGen vertex
1933 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1934 }
1935 }
1936
1937 textures/terrain/mxterra7_1to2
1938 {
1939 surfaceparm grasssteps
1940 surfaceparm nolightmap
1941 q3map_novertexshadows
1942 q3map_forcesunlight
1943 {
1944 map textures/stone/mxxsnow1.tga
1945 rgbGen vertexLit
1946 alphaGen vertex
1947 tcmod scale .025 .025
1948 }
1949 {
1950 map textures/stone/mxxsnow2.tga
1951 tcmod scale 0.05 0.05
1952 rgbGen vertexLit
1953 alphaGen vertex
1954 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1955 }
1956 }
1957
1958 textures/terrain/mxterra7_1to3
1959 {
1960 surfaceparm gravelsteps
1961 surfaceparm nolightmap
1962 q3map_novertexshadows
1963 q3map_forcesunlight
1964 {
1965 map textures/stone/mxxsnow1.tga
1966 rgbGen vertexLit
1967 alphaGen vertex
1968 tcmod scale .025 .025
1969 }
1970 {
1971 map textures/stone/mxxsnow3.tga
1972 tcmod scale 0.05 0.05
1973 rgbGen vertexLit
1974 alphaGen vertex
1975 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1976 }
1977 }
1978
1979 textures/terrain/mxterra7_1to4
1980 {
1981 surfaceparm gravelsteps
1982 surfaceparm nolightmap
1983 q3map_novertexshadows
1984 q3map_forcesunlight
1985 {
1986 map textures/stone/mxxsnow1.tga
1987 rgbGen vertexLit
1988 alphaGen vertex
1989 tcmod scale .025 .025
1990 }
1991 {
1992 map textures/stone/mxxsnow4.tga
1993 tcmod scale 0.1 0.1
1994 rgbGen vertexLit
1995 alphaGen vertex
1996 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
1997 }
1998 }
1999
2000 textures/terrain/mxterra7_2to3
2001 {
2002 surfaceparm grasssteps
2003 surfaceparm nolightmap
2004 q3map_novertexshadows
2005 q3map_forcesunlight
2006 {
2007 map textures/stone/mxxsnow2.tga
2008 rgbGen vertexLit
2009 alphaGen vertex
2010 tcmod scale 0.05 0.05
2011 }
2012 {
2013 map textures/stone/mxxsnow3.tga
2014 tcmod scale 0.05 0.05
2015 rgbGen vertexLit
2016 alphaGen vertex
2017 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2018 }
2019 }
2020
2021 textures/terrain/mxterra7_2to4
2022 {
2023 surfaceparm grasssteps
2024 surfaceparm nolightmap
2025 q3map_novertexshadows
2026 q3map_forcesunlight
2027 {
2028 map textures/stone/mxxsnow2.tga
2029 rgbGen vertexLit
2030 alphaGen vertex
2031 tcmod scale 0.05 0.05
2032 }
2033 {
2034 map textures/stone/mxxsnow4.tga
2035 tcmod scale 0.1 0.1
2036 rgbGen vertexLit
2037 alphaGen vertex
2038 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2039 }
2040 }
2041
2042 textures/terrain/mxterra7_3to4
2043 {
2044 surfaceparm nolightmap
2045 q3map_novertexshadows
2046 q3map_forcesunlight
2047 {
2048 map textures/stone/mxxsnow3.tga
2049 rgbGen vertexLit
2050 alphaGen vertex
2051 tcmod scale 0.05 0.05
2052 }
2053 {
2054 map textures/stone/mxxsnow4.tga
2055 tcmod scale 0.1 0.1
2056 rgbGen vertexLit
2057 alphaGen vertex
2058 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2059 }
2060 }
2061
2062
2063 ///////////////// assault /////////////////////
2064 //////////////////////////////////////////////
2065
2066 textures/terrain/mxterra8_0
2067 {
2068 surfaceparm grasssteps
2069 surfaceparm nolightmap
2070 q3map_novertexshadows
2071 q3map_forcesunlight
2072 {
2073 map textures/stone/mxrock0.tga
2074 rgbGen vertexLit
2075 tcmod scale 0.1 0.1
2076 }
2077 }
2078
2079 textures/terrain/mxterra8_1
2080 {
2081 surfaceparm gravelsteps
2082 surfaceparm nolightmap
2083 q3map_novertexshadows
2084 q3map_forcesunlight
2085 {
2086 map textures/stone/mxrock1.tga
2087 rgbGen vertexLit
2088 tcmod scale 0.1 0.1
2089 }
2090 }
2091
2092 textures/terrain/mxterra8_2
2093 {
2094 surfaceparm grasssteps
2095 surfaceparm nolightmap
2096 q3map_novertexshadows
2097 q3map_forcesunlight
2098 {
2099 map textures/stone/mxrock2.tga
2100 tcmod scale 0.05 0.05
2101 rgbGen vertexLit
2102 }
2103 }
2104
2105 textures/terrain/mxterra8_3
2106 {
2107 surfaceparm nolightmap
2108 q3map_novertexshadows
2109 q3map_forcesunlight
2110 {
2111 map textures/stone/mxrock3_a.tga
2112 tcmod scale 0.05 0.05
2113 rgbGen vertexLit
2114 }
2115 }
2116
2117 textures/terrain/mxterra8_4
2118 {
2119 surfaceparm nolightmap
2120 q3map_novertexshadows
2121 q3map_forcesunlight
2122 {
2123 map textures/stone/mxrock1aa.tga
2124 tcmod scale 0.1 0.1
2125 rgbGen vertexLit
2126 }
2127 }
2128
2129 textures/terrain/mxterra8_0to1
2130 {
2131 surfaceparm grasssteps
2132 surfaceparm nolightmap
2133 q3map_novertexshadows
2134 q3map_forcesunlight
2135 {
2136 map textures/stone/mxrock0.tga
2137 rgbGen vertexLit
2138 alphaGen vertex
2139 tcmod scale 0.1 0.1
2140 }
2141 {
2142 map textures/stone/mxrock1.tga
2143 tcmod scale 0.1 0.1
2144 rgbGen vertexLit
2145 alphaGen vertex
2146 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2147 }
2148 }
2149
2150 textures/terrain/mxterra8_0to2
2151 {
2152 surfaceparm grasssteps
2153 surfaceparm nolightmap
2154 q3map_novertexshadows
2155 q3map_forcesunlight
2156 {
2157 map textures/stone/mxrock0.tga
2158 rgbGen vertexLit
2159 alphaGen vertex
2160 tcmod scale 0.1 0.1
2161 }
2162 {
2163 map textures/stone/mxrock2.tga
2164 tcmod scale 0.05 0.05
2165 rgbGen vertexLit
2166 alphaGen vertex
2167 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2168 }
2169 }
2170
2171 textures/terrain/mxterra8_0to3
2172 {
2173 surfaceparm grasssteps
2174 surfaceparm nolightmap
2175 q3map_novertexshadows
2176 q3map_forcesunlight
2177 {
2178 map textures/stone/mxrock0.tga
2179 rgbGen vertexLit
2180 alphaGen vertex
2181 tcmod scale 0.1 0.1
2182 }
2183 {
2184 map textures/stone/mxrock3_a.tga
2185 tcmod scale 0.05 0.05
2186 rgbGen vertexLit
2187 alphaGen vertex
2188 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2189 }
2190 }
2191
2192 textures/terrain/mxterra8_0to4
2193 {
2194 surfaceparm grasssteps
2195 surfaceparm nolightmap
2196 q3map_novertexshadows
2197 q3map_forcesunlight
2198 {
2199 map textures/stone/mxrock0.tga
2200 rgbGen vertexLit
2201 alphaGen vertex
2202 tcmod scale 0.1 0.1
2203 }
2204 {
2205 map textures/stone/mxrock1aa.tga
2206 tcmod scale 0.1 0.1
2207 rgbGen vertexLit
2208 alphaGen vertex
2209 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2210 }
2211 }
2212
2213 textures/terrain/mxterra8_1to2
2214 {
2215 surfaceparm grasssteps
2216 surfaceparm nolightmap
2217 q3map_novertexshadows
2218 q3map_forcesunlight
2219 {
2220 map textures/stone/mxrock1.tga
2221 rgbGen vertexLit
2222 alphaGen vertex
2223 tcmod scale 0.1 0.1
2224 }
2225 {
2226 map textures/stone/mxrock2.tga
2227 tcmod scale 0.05 0.05
2228 rgbGen vertexLit
2229 alphaGen vertex
2230 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2231 }
2232 }
2233
2234 textures/terrain/mxterra8_1to3
2235 {
2236 surfaceparm gravelsteps
2237 surfaceparm nolightmap
2238 q3map_novertexshadows
2239 q3map_forcesunlight
2240 {
2241 map textures/stone/mxrock1.tga
2242 rgbGen vertexLit
2243 alphaGen vertex
2244 tcmod scale 0.1 0.1
2245 }
2246 {
2247 map textures/stone/mxrock3_a.tga
2248 tcmod scale 0.05 0.05
2249 rgbGen vertexLit
2250 alphaGen vertex
2251 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2252 }
2253 }
2254
2255 textures/terrain/mxterra8_1to4
2256 {
2257 surfaceparm gravelsteps
2258 surfaceparm nolightmap
2259 q3map_novertexshadows
2260 q3map_forcesunlight
2261 {
2262 map textures/stone/mxrock1.tga
2263 rgbGen vertexLit
2264 alphaGen vertex
2265 tcmod scale 0.1 0.1
2266 }
2267 {
2268 map textures/stone/mxrock1aa.tga
2269 tcmod scale 0.1 0.1
2270 rgbGen vertexLit
2271 alphaGen vertex
2272 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2273 }
2274 }
2275
2276 textures/terrain/mxterra8_2to3
2277 {
2278 surfaceparm grasssteps
2279 surfaceparm nolightmap
2280 q3map_novertexshadows
2281 q3map_forcesunlight
2282 {
2283 map textures/stone/mxrock2.tga
2284 rgbGen vertexLit
2285 alphaGen vertex
2286 tcmod scale 0.05 0.05
2287 }
2288 {
2289 map textures/stone/mxrock3_a.tga
2290 tcmod scale 0.05 0.05
2291 rgbGen vertexLit
2292 alphaGen vertex
2293 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2294 }
2295 }
2296
2297 textures/terrain/mxterra8_2to4
2298 {
2299 surfaceparm grasssteps
2300 surfaceparm nolightmap
2301 q3map_novertexshadows
2302 q3map_forcesunlight
2303 {
2304 map textures/stone/mxrock2.tga
2305 rgbGen vertexLit
2306 alphaGen vertex
2307 tcmod scale 0.05 0.05
2308 }
2309 {
2310 map textures/stone/mxrock1aa.tga
2311 tcmod scale 0.1 0.1
2312 rgbGen vertexLit
2313 alphaGen vertex
2314 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2315 }
2316 }
2317
2318 textures/terrain/mxterra8_3to4
2319 {
2320 surfaceparm nolightmap
2321 q3map_novertexshadows
2322 q3map_forcesunlight
2323 {
2324 map textures/stone/mxrock3_a.tga
2325 rgbGen vertexLit
2326 alphaGen vertex
2327 tcmod scale 0.05 0.05
2328 }
2329 {
2330 map textures/stone/mxrock1aa.tga
2331 tcmod scale 0.1 0.1
2332 rgbGen vertexLit
2333 alphaGen vertex
2334 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2335 }
2336 }
2337
2338
2339 ///////////////// village1 ///////////////////
2340 //////////////////////////////////////////////
2341
2342 textures/terrain/mxterra9_0
2343 {
2344 surfaceparm grasssteps
2345 surfaceparm nolightmap
2346 q3map_novertexshadows
2347 q3map_forcesunlight
2348 {
2349 map textures/snow/s_dirt_m03i_2.tga
2350 rgbGen vertexLit
2351 tcmod scale 0.3 0.3
2352 }
2353 }
2354
2355 textures/terrain/mxterra9_1
2356 {
2357 surfaceparm gravelsteps
2358 surfaceparm nolightmap
2359 q3map_novertexshadows
2360 q3map_forcesunlight
2361 {
2362 map textures/snow/s_floor_l_01.tga
2363 rgbGen vertexLit
2364 tcmod scale 0.3 0.3
2365 }
2366 }
2367
2368 textures/terrain/mxterra9_2
2369 {
2370 surfaceparm grasssteps
2371 surfaceparm nolightmap
2372 q3map_novertexshadows
2373 q3map_forcesunlight
2374 {
2375 map textures/snow/s_grass_ml03b.tga
2376 tcmod scale 0.3 0.3
2377 rgbGen vertexLit
2378 }
2379 }
2380
2381 textures/terrain/mxterra9_0to1
2382 {
2383 surfaceparm grasssteps
2384 surfaceparm nolightmap
2385 q3map_novertexshadows
2386 q3map_forcesunlight
2387 {
2388 map textures/snow/s_dirt_m03i_2.tga
2389 rgbGen vertexLit
2390 alphaGen vertex
2391 tcmod scale 0.3 0.3
2392 }
2393 {
2394 map textures/snow/s_floor_l_01.tga
2395 tcmod scale 0.3 0.3
2396 rgbGen vertexLit
2397 alphaGen vertex
2398 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2399 }
2400 }
2401
2402 textures/terrain/mxterra9_0to2
2403 {
2404 surfaceparm grasssteps
2405 surfaceparm nolightmap
2406 q3map_novertexshadows
2407 q3map_forcesunlight
2408 {
2409 map textures/snow/s_dirt_m03i_2.tga
2410 rgbGen vertexLit
2411 alphaGen vertex
2412 tcmod scale 0.3 0.3
2413 }
2414 {
2415 map textures/snow/s_grass_ml03b.tga
2416 tcmod scale 0.3 0.3
2417 rgbGen vertexLit
2418 alphaGen vertex
2419 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2420 }
2421 }
2422
2423 textures/terrain/mxterra9_1to2
2424 {
2425 surfaceparm grasssteps
2426 surfaceparm nolightmap
2427 q3map_novertexshadows
2428 q3map_forcesunlight
2429 {
2430 map textures/snow/s_floor_l_01.tga
2431 rgbGen vertexLit
2432 alphaGen vertex
2433 tcmod scale 0.3 0.3
2434 }
2435 {
2436 map textures/snow/s_grass_ml03b.tga
2437 tcmod scale 0.3 0.3
2438 rgbGen vertexLit
2439 alphaGen vertex
2440 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2441 }
2442 }
2443
2444 ///////////////// training ///////////////////
2445 //////////////////////////////////////////////
2446
2447 textures/terrain/mxterra10_0
2448 {
2449 surfaceparm grasssteps
2450 surfaceparm nolightmap
2451 q3map_novertexshadows
2452 q3map_forcesunlight
2453 {
2454 map textures/stone/mxrock0t.tga
2455 rgbGen vertexLit
2456 tcmod scale 0.1 0.1
2457 }
2458
2459 }
2460
2461 textures/terrain/mxterra10_1
2462 {
2463 surfaceparm gravelsteps
2464 surfaceparm nolightmap
2465 q3map_novertexshadows
2466 q3map_forcesunlight
2467 {
2468 map textures/stone/mxrock1b.tga
2469 rgbGen vertexLit
2470 tcmod scale 0.1 0.1
2471 }
2472
2473 }
2474
2475 textures/terrain/mxterra10_2
2476 {
2477 surfaceparm grasssteps
2478 surfaceparm nolightmap
2479 q3map_novertexshadows
2480 q3map_forcesunlight
2481 {
2482 map textures/stone/mxrock2t.tga
2483 tcmod scale 0.05 0.05
2484 rgbGen vertexLit
2485 }
2486
2487
2488 }
2489
2490 textures/terrain/mxterra10_3
2491 {
2492 surfaceparm nolightmap
2493 q3map_novertexshadows
2494 q3map_forcesunlight
2495 {
2496 map textures/stone/mxrock3g.tga
2497 tcmod scale 0.05 0.05
2498 rgbGen vertexLit
2499 }
2500
2501
2502 }
2503
2504 textures/terrain/mxterra10_4
2505 {
2506 surfaceparm nolightmap
2507 q3map_novertexshadows
2508 q3map_forcesunlight
2509 {
2510 map textures/stone/mxrock4c.tga
2511 tcmod scale 0.1 0.1
2512 rgbGen vertexLit
2513 }
2514
2515
2516 }
2517
2518 textures/terrain/mxterra10_0to1
2519 {
2520 surfaceparm grasssteps
2521 surfaceparm nolightmap
2522 q3map_novertexshadows
2523 q3map_forcesunlight
2524 {
2525 map textures/stone/mxrock0t.tga
2526 rgbGen vertexLit
2527 alphaGen vertex
2528 tcmod scale 0.1 0.1
2529 }
2530 {
2531 map textures/stone/mxrock1b.tga
2532 tcmod scale 0.1 0.1
2533 rgbGen vertexLit
2534 alphaGen vertex
2535 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2536 }
2537
2538
2539 }
2540
2541 textures/terrain/mxterra10_0to2
2542 {
2543 surfaceparm grasssteps
2544 surfaceparm nolightmap
2545 q3map_novertexshadows
2546 q3map_forcesunlight
2547 {
2548 map textures/stone/mxrock0t.tga
2549 rgbGen vertexLit
2550 alphaGen vertex
2551 tcmod scale 0.1 0.1
2552 }
2553 {
2554 map textures/stone/mxrock2t.tga
2555 tcmod scale 0.05 0.05
2556 rgbGen vertexLit
2557 alphaGen vertex
2558 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2559 }
2560
2561
2562 }
2563
2564 textures/terrain/mxterra10_0to3
2565 {
2566 surfaceparm grasssteps
2567 surfaceparm nolightmap
2568 q3map_novertexshadows
2569 q3map_forcesunlight
2570 {
2571 map textures/stone/mxrock0t.tga
2572 rgbGen vertexLit
2573 alphaGen vertex
2574 tcmod scale 0.1 0.1
2575 }
2576 {
2577 map textures/stone/mxrock3g.tga
2578 tcmod scale 0.05 0.05
2579 rgbGen vertexLit
2580 alphaGen vertex
2581 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2582 }
2583
2584
2585 }
2586
2587 textures/terrain/mxterra10_0to4
2588 {
2589 surfaceparm grasssteps
2590 surfaceparm nolightmap
2591 q3map_novertexshadows
2592 q3map_forcesunlight
2593 {
2594 map textures/stone/mxrock0t.tga
2595 rgbGen vertexLit
2596 alphaGen vertex
2597 tcmod scale 0.1 0.1
2598 }
2599 {
2600 map textures/stone/mxrock4c.tga
2601 tcmod scale 0.1 0.1
2602 rgbGen vertexLit
2603 alphaGen vertex
2604 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2605 }
2606
2607
2608 }
2609
2610 textures/terrain/mxterra10_1to2
2611 {
2612 surfaceparm grasssteps
2613 surfaceparm nolightmap
2614 q3map_novertexshadows
2615 q3map_forcesunlight
2616 {
2617 map textures/stone/mxrock1b.tga
2618 rgbGen vertexLit
2619 alphaGen vertex
2620 tcmod scale 0.1 0.1
2621 }
2622 {
2623 map textures/stone/mxrock2t.tga
2624 tcmod scale 0.05 0.05
2625 rgbGen vertexLit
2626 alphaGen vertex
2627 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2628 }
2629
2630 }
2631
2632 textures/terrain/mxterra10_1to3
2633 {
2634 surfaceparm gravelsteps
2635 surfaceparm nolightmap
2636 q3map_novertexshadows
2637 q3map_forcesunlight
2638 {
2639 map textures/stone/mxrock1b.tga
2640 rgbGen vertexLit
2641 alphaGen vertex
2642 tcmod scale 0.1 0.1
2643 }
2644 {
2645 map textures/stone/mxrock3g.tga
2646 tcmod scale 0.05 0.05
2647 rgbGen vertexLit
2648 alphaGen vertex
2649 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2650 }
2651
2652 }
2653
2654 textures/terrain/mxterra10_1to4
2655 {
2656 surfaceparm gravelsteps
2657 surfaceparm nolightmap
2658 q3map_novertexshadows
2659 q3map_forcesunlight
2660 {
2661 map textures/stone/mxrock1b.tga
2662 rgbGen vertexLit
2663 alphaGen vertex
2664 tcmod scale 0.1 0.1
2665 }
2666 {
2667 map textures/stone/mxrock4c.tga
2668 tcmod scale 0.1 0.1
2669 rgbGen vertexLit
2670 alphaGen vertex
2671 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2672 }
2673
2674 }
2675
2676 textures/terrain/mxterra10_2to3
2677 {
2678 surfaceparm grasssteps
2679 surfaceparm nolightmap
2680 q3map_novertexshadows
2681 q3map_forcesunlight
2682 {
2683 map textures/stone/mxrock2t.tga
2684 rgbGen vertexLit
2685 alphaGen vertex
2686 tcmod scale 0.05 0.05
2687 }
2688 {
2689 map textures/stone/mxrock3g.tga
2690 tcmod scale 0.05 0.05
2691 rgbGen vertexLit
2692 alphaGen vertex
2693 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2694 }
2695
2696 }
2697
2698 textures/terrain/mxterra10_2to4
2699 {
2700 surfaceparm grasssteps
2701 surfaceparm nolightmap
2702 q3map_novertexshadows
2703 q3map_forcesunlight
2704 {
2705 map textures/stone/mxrock2t.tga
2706 rgbGen vertexLit
2707 alphaGen vertex
2708 tcmod scale 0.05 0.05
2709 }
2710 {
2711 map textures/stone/mxrock4c.tga
2712 tcmod scale 0.1 0.1
2713 rgbGen vertexLit
2714 alphaGen vertex
2715 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2716 }
2717
2718 }
2719
2720 textures/terrain/mxterra10_3to4
2721 {
2722 surfaceparm nolightmap
2723 q3map_novertexshadows
2724 q3map_forcesunlight
2725 {
2726 map textures/stone/mxrock3g.tga
2727 rgbGen vertexLit
2728 alphaGen vertex
2729 tcmod scale 0.05 0.05
2730 }
2731 {
2732 map textures/stone/mxrock4c.tga
2733 tcmod scale 0.1 0.1
2734 rgbGen vertexLit
2735 alphaGen vertex
2736 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2737 }
2738
2739 }
2740
2741
2742 ///////////////// dam terrain ////////////////
2743 //////////////////////////////////////////////
2744
2745 textures/terrain/mxterra11_0
2746 {
2747 surfaceparm grasssteps
2748 surfaceparm nolightmap
2749 q3map_novertexshadows
2750 q3map_forcesunlight
2751 {
2752 map textures/stone/mxrock0bds.tga
2753 rgbGen vertexLit
2754 tcmod scale 0.1 0.1
2755 }
2756 }
2757
2758 textures/terrain/mxterra11_1
2759 {
2760 surfaceparm gravelsteps
2761 surfaceparm nolightmap
2762 q3map_novertexshadows
2763 q3map_forcesunlight
2764 {
2765 map textures/stone/mxrock1bds.tga
2766 rgbGen vertexLit
2767 tcmod scale 0.1 0.1
2768 }
2769 }
2770
2771 textures/terrain/mxterra11_2
2772 {
2773 surfaceparm grasssteps
2774 surfaceparm nolightmap
2775 q3map_novertexshadows
2776 q3map_forcesunlight
2777 {
2778 map textures/stone/mxrock2bo.tga
2779 tcmod scale 0.05 0.05
2780 rgbGen vertexLit
2781 }
2782 }
2783
2784 textures/terrain/mxterra11_3
2785 {
2786 surfaceparm nolightmap
2787 q3map_novertexshadows
2788 q3map_forcesunlight
2789 {
2790 map textures/stone/mxrock3_a.tga
2791 tcmod scale 0.05 0.05
2792 rgbGen vertexLit
2793 }
2794 }
2795
2796 textures/terrain/mxterra11_4
2797 {
2798 surfaceparm nolightmap
2799 q3map_novertexshadows
2800 q3map_forcesunlight
2801 {
2802 map textures/stone/mxrock4b.tga
2803 tcmod scale 0.1 0.1
2804 rgbGen vertexLit
2805 }
2806 }
2807
2808 textures/terrain/mxterra11_0to1
2809 {
2810 surfaceparm grasssteps
2811 surfaceparm nolightmap
2812 q3map_novertexshadows
2813 q3map_forcesunlight
2814 {
2815 map textures/stone/mxrock0bds.tga
2816 rgbGen vertexLit
2817 alphaGen vertex
2818 tcmod scale 0.1 0.1
2819 }
2820 {
2821 map textures/stone/mxrock1bds.tga
2822 tcmod scale 0.1 0.1
2823 rgbGen vertexLit
2824 alphaGen vertex
2825 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2826 }
2827 }
2828
2829 textures/terrain/mxterra11_0to2
2830 {
2831 surfaceparm grasssteps
2832 surfaceparm nolightmap
2833 q3map_novertexshadows
2834 q3map_forcesunlight
2835 {
2836 map textures/stone/mxrock0bds.tga
2837 rgbGen vertexLit
2838 alphaGen vertex
2839 tcmod scale 0.1 0.1
2840 }
2841 {
2842 map textures/stone/mxrock2bo.tga
2843 tcmod scale 0.05 0.05
2844 rgbGen vertexLit
2845 alphaGen vertex
2846 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2847 }
2848 }
2849
2850 textures/terrain/mxterra11_0to3
2851 {
2852 surfaceparm grasssteps
2853 surfaceparm nolightmap
2854 q3map_novertexshadows
2855 q3map_forcesunlight
2856 {
2857 map textures/stone/mxrock0bds.tga
2858 rgbGen vertexLit
2859 alphaGen vertex
2860 tcmod scale 0.1 0.1
2861 }
2862 {
2863 map textures/stone/mxrock3_a.tga
2864 tcmod scale 0.05 0.05
2865 rgbGen vertexLit
2866 alphaGen vertex
2867 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2868 }
2869 }
2870
2871 textures/terrain/mxterra11_0to4
2872 {
2873 surfaceparm grasssteps
2874 surfaceparm nolightmap
2875 q3map_novertexshadows
2876 q3map_forcesunlight
2877 {
2878 map textures/stone/mxrock0bds.tga
2879 rgbGen vertexLit
2880 alphaGen vertex
2881 tcmod scale 0.1 0.1
2882 }
2883 {
2884 map textures/stone/mxrock4b.tga
2885 tcmod scale 0.1 0.1
2886 rgbGen vertexLit
2887 alphaGen vertex
2888 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2889 }
2890 }
2891
2892
2893 textures/terrain/mxterra11_1to2
2894 {
2895 surfaceparm grasssteps
2896 surfaceparm nolightmap
2897 q3map_novertexshadows
2898 q3map_forcesunlight
2899 {
2900 map textures/stone/mxrock1bds.tga
2901 rgbGen vertexLit
2902 alphaGen vertex
2903 tcmod scale 0.1 0.1
2904 }
2905 {
2906 map textures/stone/mxrock2bo.tga
2907 tcmod scale 0.05 0.05
2908 rgbGen vertexLit
2909 alphaGen vertex
2910 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2911 }
2912 }
2913
2914 textures/terrain/mxterra11_1to3
2915 {
2916 surfaceparm gravelsteps
2917 surfaceparm nolightmap
2918 q3map_novertexshadows
2919 q3map_forcesunlight
2920 {
2921 map textures/stone/mxrock1bds.tga
2922 rgbGen vertexLit
2923 alphaGen vertex
2924 tcmod scale 0.1 0.1
2925 }
2926 {
2927 map textures/stone/mxrock3_a.tga
2928 tcmod scale 0.05 0.05
2929 rgbGen vertexLit
2930 alphaGen vertex
2931 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2932 }
2933 }
2934
2935 textures/terrain/mxterra11_1to4
2936 {
2937 surfaceparm gravelsteps
2938 surfaceparm nolightmap
2939 q3map_novertexshadows
2940 q3map_forcesunlight
2941 {
2942 map textures/stone/mxrock1bds.tga
2943 rgbGen vertexLit
2944 alphaGen vertex
2945 tcmod scale 0.1 0.1
2946 }
2947 {
2948 map textures/stone/mxrock4b.tga
2949 tcmod scale 0.1 0.1
2950 rgbGen vertexLit
2951 alphaGen vertex
2952 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2953 }
2954 }
2955
2956 textures/terrain/mxterra11_2to3
2957 {
2958 surfaceparm grasssteps
2959 surfaceparm nolightmap
2960 q3map_novertexshadows
2961 q3map_forcesunlight
2962 {
2963 map textures/stone/mxrock2bo.tga
2964 rgbGen vertexLit
2965 alphaGen vertex
2966 tcmod scale 0.05 0.05
2967 }
2968 {
2969 map textures/stone/mxrock3_a.tga
2970 tcmod scale 0.05 0.05
2971 rgbGen vertexLit
2972 alphaGen vertex
2973 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2974 }
2975 }
2976
2977 textures/terrain/mxterra11_2to4
2978 {
2979 surfaceparm grasssteps
2980 surfaceparm nolightmap
2981 q3map_novertexshadows
2982 q3map_forcesunlight
2983 {
2984 map textures/stone/mxrock2bo.tga
2985 rgbGen vertexLit
2986 alphaGen vertex
2987 tcmod scale 0.05 0.05
2988 }
2989 {
2990 map textures/stone/mxrock4b.tga
2991 tcmod scale 0.1 0.1
2992 rgbGen vertexLit
2993 alphaGen vertex
2994 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
2995 }
2996 }
2997
2998 textures/terrain/mxterra11_3to4
2999 {
3000 surfaceparm nolightmap
3001 q3map_novertexshadows
3002 q3map_forcesunlight
3003 {
3004 map textures/stone/mxrock3_a.tga
3005 rgbGen vertexLit
3006 alphaGen vertex
3007 tcmod scale 0.05 0.05
3008 }
3009 {
3010 map textures/stone/mxrock4b.tga
3011 tcmod scale 0.1 0.1
3012 rgbGen vertexLit
3013 alphaGen vertex
3014 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3015 }
3016 }
3017
3018
3019 ///////////////// dam skybox /////////////////
3020 //////////////////////////////////////////////
3021
3022 textures/terrain/mxterra12_0
3023 {
3024 surfaceparm grasssteps
3025 surfaceparm nolightmap
3026 q3map_novertexshadows
3027 q3map_forcesunlight
3028 {
3029 map textures/stone/mxrock0b.tga
3030 rgbGen vertexLit
3031 tcmod scale 1 1
3032 }
3033 }
3034
3035 textures/terrain/mxterra12_1
3036 {
3037 surfaceparm gravelsteps
3038 surfaceparm nolightmap
3039 q3map_novertexshadows
3040 q3map_forcesunlight
3041 {
3042 map textures/stone/mxrock1b.tga
3043 rgbGen vertexLit
3044 tcmod scale .75 .75
3045 }
3046 }
3047
3048 textures/terrain/mxterra12_2
3049 {
3050 surfaceparm grasssteps
3051 surfaceparm nolightmap
3052 q3map_novertexshadows
3053 q3map_forcesunlight
3054 {
3055 map textures/stone/mxrock2b.tga
3056 tcmod scale .75 .75
3057 rgbGen vertexLit
3058 }
3059 }
3060
3061 textures/terrain/mxterra12_3
3062 {
3063 surfaceparm nolightmap
3064 q3map_novertexshadows
3065 q3map_forcesunlight
3066 {
3067 map textures/stone/mxrock3g.tga
3068 tcmod scale .75 .75
3069 rgbGen vertexLit
3070 }
3071 }
3072
3073 textures/terrain/mxterra12_4
3074 {
3075 surfaceparm nolightmap
3076 q3map_novertexshadows
3077 q3map_forcesunlight
3078 {
3079 map textures/stone/mxrock4b.tga
3080 tcmod scale .75 .75
3081 rgbGen vertexLit
3082 }
3083 }
3084
3085 textures/terrain/mxterra12_0to1
3086 {
3087 surfaceparm grasssteps
3088 surfaceparm nolightmap
3089 q3map_novertexshadows
3090 q3map_forcesunlight
3091 {
3092 map textures/stone/mxrock0b.tga
3093 rgbGen vertexLit
3094 alphaGen vertex
3095 tcmod scale .75 .75
3096 }
3097 {
3098 map textures/stone/mxrock1b.tga
3099 tcmod scale 1 1
3100 rgbGen vertexLit
3101 alphaGen vertex
3102 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3103 }
3104 }
3105
3106 textures/terrain/mxterra12_0to2
3107 {
3108 surfaceparm grasssteps
3109 surfaceparm nolightmap
3110 q3map_novertexshadows
3111 q3map_forcesunlight
3112 {
3113 map textures/stone/mxrock0b.tga
3114 rgbGen vertexLit
3115 alphaGen vertex
3116 tcmod scale 1 1
3117 }
3118 {
3119 map textures/stone/mxrock2b.tga
3120 tcmod scale .75 .75
3121 rgbGen vertexLit
3122 alphaGen vertex
3123 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3124 }
3125 }
3126
3127 textures/terrain/mxterra12_0to3
3128 {
3129 surfaceparm grasssteps
3130 surfaceparm nolightmap
3131 q3map_novertexshadows
3132 q3map_forcesunlight
3133 {
3134 map textures/stone/mxrock0b.tga
3135 rgbGen vertexLit
3136 alphaGen vertex
3137 tcmod scale 1 1
3138 }
3139 {
3140 map textures/stone/mxrock3g.tga
3141 tcmod scale .75 .75
3142 rgbGen vertexLit
3143 alphaGen vertex
3144 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3145 }
3146 }
3147
3148 textures/terrain/mxterra12_0to4
3149 {
3150 surfaceparm grasssteps
3151 surfaceparm nolightmap
3152 q3map_novertexshadows
3153 q3map_forcesunlight
3154 {
3155 map textures/stone/mxrock0b.tga
3156 rgbGen vertexLit
3157 alphaGen vertex
3158 tcmod scale 1 1
3159 }
3160 {
3161 map textures/stone/mxrock4b.tga
3162 tcmod scale 1 1
3163 rgbGen vertexLit
3164 alphaGen vertex
3165 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3166 }
3167 }
3168
3169 textures/terrain/mxterra12_1to2
3170 {
3171 surfaceparm grasssteps
3172 surfaceparm nolightmap
3173 q3map_novertexshadows
3174 q3map_forcesunlight
3175 {
3176 map textures/stone/mxrock1b.tga
3177 rgbGen vertexLit
3178 alphaGen vertex
3179 tcmod scale .75 .75
3180 }
3181 {
3182 map textures/stone/mxrock2b.tga
3183 tcmod scale .75 .75
3184 rgbGen vertexLit
3185 alphaGen vertex
3186 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3187 }
3188 }
3189
3190 textures/terrain/mxterra12_1to3
3191 {
3192 surfaceparm gravelsteps
3193 surfaceparm nolightmap
3194 q3map_novertexshadows
3195 q3map_forcesunlight
3196 {
3197 map textures/stone/mxrock1b.tga
3198 rgbGen vertexLit
3199 alphaGen vertex
3200 tcmod scale .75 .75
3201 }
3202 {
3203 map textures/stone/mxrock3g.tga
3204 tcmod scale .75 .75
3205 rgbGen vertexLit
3206 alphaGen vertex
3207 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3208 }
3209 }
3210
3211 textures/terrain/mxterra12_1to4
3212 {
3213 surfaceparm gravelsteps
3214 surfaceparm nolightmap
3215 q3map_novertexshadows
3216 q3map_forcesunlight
3217 {
3218 map textures/stone/mxrock1b.tga
3219 rgbGen vertexLit
3220 alphaGen vertex
3221 tcmod scale .75 .75
3222 }
3223 {
3224 map textures/stone/mxrock4b.tga
3225 tcmod scale .75 .75
3226 rgbGen vertexLit
3227 alphaGen vertex
3228 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3229 }
3230 }
3231
3232 textures/terrain/mxterra12_2to3
3233 {
3234 surfaceparm grasssteps
3235 surfaceparm nolightmap
3236 q3map_novertexshadows
3237 q3map_forcesunlight
3238 {
3239 map textures/stone/mxrock2b.tga
3240 rgbGen vertexLit
3241 alphaGen vertex
3242 tcmod scale .75 .75
3243 }
3244 {
3245 map textures/stone/mxrock3g.tga
3246 tcmod scale .75 .75
3247 rgbGen vertexLit
3248 alphaGen vertex
3249 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3250 }
3251 }
3252
3253 textures/terrain/mxterra12_2to4
3254 {
3255 surfaceparm grasssteps
3256 surfaceparm nolightmap
3257 q3map_novertexshadows
3258 q3map_forcesunlight
3259 {
3260 map textures/stone/mxrock2b.tga
3261 rgbGen vertexLit
3262 alphaGen vertex
3263 tcmod scale .75 .75
3264 }
3265 {
3266 map textures/stone/mxrock4b.tga
3267 tcmod scale .75 .75
3268 rgbGen vertexLit
3269 alphaGen vertex
3270 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3271 }
3272 }
3273
3274 textures/terrain/mxterra12_3to4
3275 {
3276 surfaceparm nolightmap
3277 q3map_novertexshadows
3278 q3map_forcesunlight
3279 {
3280 map textures/stone/mxrock3g.tga
3281 rgbGen vertexLit
3282 alphaGen vertex
3283 tcmod scale .75 .75
3284 }
3285 {
3286 map textures/stone/mxrock4b.tga
3287 tcmod scale .75 .75
3288 rgbGen vertexLit
3289 alphaGen vertex
3290 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3291 }
3292 }
3293
3294
3295 ///////////////// escape /////////////////////
3296 //////////////////////////////////////////////
3297
3298 textures/terrain/mxterra13_0
3299 {
3300 surfaceparm grasssteps
3301 surfaceparm nolightmap
3302 q3map_novertexshadows
3303 q3map_forcesunlight
3304 {
3305 map textures/rock/roc_m01p.tga
3306 rgbGen vertexLit
3307 tcmod scale .05 .05
3308 }
3309 }
3310
3311 textures/terrain/mxterra13_1
3312 {
3313 surfaceparm gravelsteps
3314 surfaceparm nolightmap
3315 q3map_novertexshadows
3316 q3map_forcesunlight
3317 {
3318 map textures/rock/roc_m01p.tga
3319 rgbGen vertexLit
3320 tcmod scale .075 .075
3321 }
3322
3323
3324 }
3325
3326 textures/terrain/mxterra13_2
3327 {
3328 surfaceparm grasssteps
3329 surfaceparm nolightmap
3330 q3map_novertexshadows
3331 q3map_forcesunlight
3332 {
3333 map textures/snow/s_grass_ml03a_s.tga
3334 tcmod scale .075 .075
3335 rgbGen vertexLit
3336 }
3337 }
3338
3339 textures/terrain/mxterra13_0to1
3340 {
3341 surfaceparm grasssteps
3342 surfaceparm nolightmap
3343 q3map_novertexshadows
3344 q3map_forcesunlight
3345 {
3346 map textures//rock/roc_m01aa.tga
3347 rgbGen vertexLit
3348 alphaGen vertex
3349 tcmod scale .075 .075
3350 }
3351 {
3352 map textures/rock/roc_m01p.tga
3353 tcmod scale 1 1
3354 rgbGen vertexLit
3355 alphaGen vertex
3356 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3357 }
3358 }
3359
3360 textures/terrain/mxterra13_0to2
3361 {
3362 surfaceparm grasssteps
3363 surfaceparm nolightmap
3364 q3map_novertexshadows
3365 q3map_forcesunlight
3366 {
3367 map textures/rock/roc_m01p.tga
3368 rgbGen vertexLit
3369 alphaGen vertex
3370 tcmod scale .05 .05
3371 }
3372 {
3373 map textures/snow/s_grass_ml03a_s.tga
3374 tcmod scale .075 .075
3375 rgbGen vertexLit
3376 alphaGen vertex
3377 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3378 }
3379 }
3380
3381 textures/terrain/mxterra13_1to2
3382 {
3383 surfaceparm grasssteps
3384 surfaceparm nolightmap
3385 q3map_novertexshadows
3386 q3map_forcesunlight
3387 {
3388 map textures/rock/roc_m01p.tga
3389 rgbGen vertexLit
3390 alphaGen vertex
3391 tcmod scale .075 .075
3392 }
3393 {
3394 map textures/snow/s_grass_ml03a_s.tga
3395 tcmod scale .075 .075
3396 rgbGen vertexLit
3397 alphaGen vertex
3398 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3399 }
3400 }
3401
3402
3403 ///////////////// dark forest ////////////////
3404 //////////////////////////////////////////////
3405
3406 textures/terrain/mxterra14_0
3407 {
3408 surfaceparm grasssteps
3409 surfaceparm nolightmap
3410 q3map_novertexshadows
3411 q3map_forcesunlight
3412 {
3413 map textures/stone/mxrock0b.tga
3414 rgbGen vertexLit
3415 tcmod scale 0.1 0.1
3416 }
3417 }
3418
3419 textures/terrain/mxterra14_1
3420 {
3421 surfaceparm gravelsteps
3422 surfaceparm nolightmap
3423 q3map_novertexshadows
3424 q3map_forcesunlight
3425 {
3426 map textures/stone/mxrock1b.tga
3427 rgbGen vertexLit
3428 tcmod scale 0.1 0.1
3429 }
3430 }
3431
3432 textures/terrain/mxterra14_2
3433 {
3434 surfaceparm grasssteps
3435 surfaceparm nolightmap
3436 q3map_novertexshadows
3437 q3map_forcesunlight
3438 {
3439 map textures/stone/mxrock2b.tga
3440 tcmod scale 0.05 0.05
3441 rgbGen vertexLit
3442 }
3443 }
3444
3445 textures/terrain/mxterra14_3
3446 {
3447 surfaceparm nolightmap
3448 q3map_novertexshadows
3449 q3map_forcesunlight
3450 {
3451 map textures/stone/mxrock3g.tga
3452 tcmod scale 0.05 0.05
3453 rgbGen vertexLit
3454 }
3455 }
3456
3457 textures/terrain/mxterra14_4
3458 {
3459 surfaceparm nolightmap
3460 q3map_novertexshadows
3461 q3map_forcesunlight
3462 {
3463 map textures/stone/mxrock4b.tga
3464 tcmod scale 0.1 0.1
3465 rgbGen vertexLit
3466 }
3467 }
3468
3469 textures/terrain/mxterra14_0to1
3470 {
3471 surfaceparm grasssteps
3472 surfaceparm nolightmap
3473 q3map_novertexshadows
3474 q3map_forcesunlight
3475 {
3476 map textures/stone/mxrock0b.tga
3477 rgbGen vertexLit
3478 alphaGen vertex
3479 tcmod scale 0.1 0.1
3480 }
3481 {
3482 map textures/stone/mxrock1b.tga
3483 tcmod scale 0.1 0.1
3484 rgbGen vertexLit
3485 alphaGen vertex
3486 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3487 }
3488 }
3489
3490 textures/terrain/mxterra14_0to2
3491 {
3492 surfaceparm grasssteps
3493 surfaceparm nolightmap
3494 q3map_novertexshadows
3495 q3map_forcesunlight
3496 {
3497 map textures/stone/mxrock0b.tga
3498 rgbGen vertexLit
3499 alphaGen vertex
3500 tcmod scale 0.1 0.1
3501 }
3502 {
3503 map textures/stone/mxrock2b.tga
3504 tcmod scale 0.05 0.05
3505 rgbGen vertexLit
3506 alphaGen vertex
3507 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3508 }
3509 }
3510
3511 textures/terrain/mxterra14_0to3
3512 {
3513 surfaceparm grasssteps
3514 surfaceparm nolightmap
3515 q3map_novertexshadows
3516 q3map_forcesunlight
3517 {
3518 map textures/stone/mxrock0b.tga
3519 rgbGen vertexLit
3520 alphaGen vertex
3521 tcmod scale 0.1 0.1
3522 }
3523 {
3524 map textures/stone/mxrock3g.tga
3525 tcmod scale 0.05 0.05
3526 rgbGen vertexLit
3527 alphaGen vertex
3528 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3529 }
3530 }
3531
3532 textures/terrain/mxterra14_0to4
3533 {
3534 surfaceparm grasssteps
3535 surfaceparm nolightmap
3536 q3map_novertexshadows
3537 q3map_forcesunlight
3538 {
3539 map textures/stone/mxrock0b.tga
3540 rgbGen vertexLit
3541 alphaGen vertex
3542 tcmod scale 0.1 0.1
3543 }
3544 {
3545 map textures/stone/mxrock4b.tga
3546 tcmod scale 0.1 0.1
3547 rgbGen vertexLit
3548 alphaGen vertex
3549 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3550 }
3551 }
3552
3553 textures/terrain/mxterra14_1to2
3554 {
3555 surfaceparm grasssteps
3556 surfaceparm nolightmap
3557 q3map_novertexshadows
3558 q3map_forcesunlight
3559 {
3560 map textures/stone/mxrock1b.tga
3561 rgbGen vertexLit
3562 alphaGen vertex
3563 tcmod scale 0.1 0.1
3564 }
3565 {
3566 map textures/stone/mxrock2b.tga
3567 tcmod scale 0.05 0.05
3568 rgbGen vertexLit
3569 alphaGen vertex
3570 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3571 }
3572 }
3573
3574 textures/terrain/mxterra14_1to3
3575 {
3576 surfaceparm gravelsteps
3577 surfaceparm nolightmap
3578 q3map_novertexshadows
3579 q3map_forcesunlight
3580 {
3581 map textures/stone/mxrock1b.tga
3582 rgbGen vertexLit
3583 alphaGen vertex
3584 tcmod scale 0.1 0.1
3585 }
3586 {
3587 map textures/stone/mxrock3g.tga
3588 tcmod scale 0.05 0.05
3589 rgbGen vertexLit
3590 alphaGen vertex
3591 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3592 }
3593 }
3594
3595 textures/terrain/mxterra14_1to4
3596 {
3597 surfaceparm gravelsteps
3598 surfaceparm nolightmap
3599 q3map_novertexshadows
3600 q3map_forcesunlight
3601 {
3602 map textures/stone/mxrock1b.tga
3603 rgbGen vertexLit
3604 alphaGen vertex
3605 tcmod scale 0.1 0.1
3606 }
3607 {
3608 map textures/stone/mxrock4b.tga
3609 tcmod scale 0.1 0.1
3610 rgbGen vertexLit
3611 alphaGen vertex
3612 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3613 }
3614 }
3615
3616 textures/terrain/mxterra14_2to3
3617 {
3618 surfaceparm grasssteps
3619 surfaceparm nolightmap
3620 q3map_novertexshadows
3621 q3map_forcesunlight
3622 {
3623 map textures/stone/mxrock2b.tga
3624 rgbGen vertexLit
3625 alphaGen vertex
3626 tcmod scale 0.05 0.05
3627 }
3628 {
3629 map textures/stone/mxrock3g.tga
3630 tcmod scale 0.05 0.05
3631 rgbGen vertexLit
3632 alphaGen vertex
3633 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3634 }
3635 }
3636
3637 textures/terrain/mxterra14_2to4
3638 {
3639 surfaceparm grasssteps
3640 surfaceparm nolightmap
3641 q3map_novertexshadows
3642 q3map_forcesunlight
3643 {
3644 map textures/stone/mxrock2b.tga
3645 rgbGen vertexLit
3646 alphaGen vertex
3647 tcmod scale 0.05 0.05
3648 }
3649 {
3650 map textures/stone/mxrock4b.tga
3651 tcmod scale 0.1 0.1
3652 rgbGen vertexLit
3653 alphaGen vertex
3654 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3655 }
3656 }
3657
3658 textures/terrain/mxterra14_3to4
3659 {
3660 surfaceparm nolightmap
3661 q3map_novertexshadows
3662 q3map_forcesunlight
3663 {
3664 map textures/stone/mxrock3g.tga
3665 rgbGen vertexLit
3666 alphaGen vertex
3667 tcmod scale 0.05 0.05
3668 }
3669 {
3670 map textures/stone/mxrock4b.tga
3671 tcmod scale 0.1 0.1
3672 rgbGen vertexLit
3673 alphaGen vertex
3674 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3675 }
3676 }
3677
3678
3679 ///////////////// norway /////////////////////
3680 //////////////////////////////////////////////
3681
3682 textures/terrain/mxterra15_0
3683 {
3684 surfaceparm grasssteps
3685 surfaceparm nolightmap
3686 q3map_novertexshadows
3687 q3map_forcesunlight
3688 {
3689 map textures/stone/mxsnow0.tga
3690 rgbGen vertexLit
3691 tcmod scale 0.05 0.05
3692 }
3693 }
3694
3695 textures/terrain/mxterra15_1
3696 {
3697 surfaceparm gravelsteps
3698 surfaceparm nolightmap
3699 q3map_novertexshadows
3700 q3map_forcesunlight
3701 {
3702 map textures/stone/mxsnow3.tga
3703 rgbGen vertexLit
3704 tcmod scale 0.025 0.025
3705 }
3706 }
3707
3708 textures/terrain/mxterra15_0to1
3709 {
3710 surfaceparm grasssteps
3711 surfaceparm nolightmap
3712 q3map_novertexshadows
3713 q3map_forcesunlight
3714 {
3715 map textures/stone/mxsnow0.tga
3716 rgbGen vertexLit
3717 alphaGen vertex
3718 tcmod scale 0.05 0.05
3719 }
3720 {
3721 map textures/stone/mxsnow3.tga
3722 tcmod scale 0.025 0.025
3723 rgbGen vertexLit
3724 alphaGen vertex
3725 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3726 }
3727 }
3728
3729
3730 /////////////////end ///////////////////
3731 //////////////////////////////////////////////
3732
3733 textures/terrain/mxterra16_0
3734 {
3735 surfaceparm grasssteps
3736 surfaceparm nolightmap
3737 q3map_novertexshadows
3738 q3map_forcesunlight
3739 {
3740 // map textures/stone/dirt_m03.tga
3741 map textures/stone/ground_c09a.tga
3742 // map textures/stone/mxrock0t.tga
3743 rgbGen vertexLit
3744 tcmod scale 0.1 0.1
3745 }
3746
3747 }
3748
3749 textures/terrain/mxterra16_1
3750 {
3751 surfaceparm gravelsteps
3752 surfaceparm nolightmap
3753 q3map_novertexshadows
3754 q3map_forcesunlight
3755 {
3756 map textures/stone/mxrock1b.tga
3757 rgbGen vertexLit
3758 tcmod scale 0.1 0.1
3759 }
3760
3761 }
3762
3763 textures/terrain/mxterra16_2
3764 {
3765 surfaceparm grasssteps
3766 surfaceparm nolightmap
3767 q3map_novertexshadows
3768 q3map_forcesunlight
3769 {
3770 // map textures/stone/ground_c09a.tga
3771 map textures/stone/mxrock4ca.tga
3772 // map textures/stone/dirt_m03.tga
3773 tcmod scale 0.05 0.05
3774 rgbGen vertexLit
3775 }
3776
3777
3778 }
3779 // assault_rock/ground_c09a
3780 // terrain/dirt_m03
3781 textures/terrain/mxterra16_3
3782 {
3783 surfaceparm nolightmap
3784 q3map_novertexshadows
3785 q3map_forcesunlight
3786 {
3787 map textures/stone/mxrock3g.tga
3788 tcmod scale 0.05 0.05
3789 rgbGen vertexLit
3790 }
3791
3792
3793 }
3794
3795 textures/terrain/mxterra16_4
3796 {
3797 surfaceparm nolightmap
3798 q3map_novertexshadows
3799 q3map_forcesunlight
3800 {
3801 map textures/stone/dirt_m03.tga
3802 // map textures/stone/mxrock4ca.tga
3803 tcmod scale 0.1 0.1
3804 rgbGen vertexLit
3805 }
3806
3807
3808 }
3809
3810 textures/terrain/mxterra16_0to1
3811 {
3812 surfaceparm grasssteps
3813 surfaceparm nolightmap
3814 q3map_novertexshadows
3815 q3map_forcesunlight
3816 {
3817 map textures/stone/ground_c09a.tga
3818 rgbGen vertexLit
3819 alphaGen vertex
3820 tcmod scale 0.1 0.1
3821 }
3822 {
3823 map textures/stone/mxrock1b.tga
3824 tcmod scale 0.1 0.1
3825 rgbGen vertexLit
3826 alphaGen vertex
3827 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3828 }
3829
3830
3831 }
3832
3833 textures/terrain/mxterra16_0to2
3834 {
3835 surfaceparm grasssteps
3836 surfaceparm nolightmap
3837 q3map_novertexshadows
3838 q3map_forcesunlight
3839 {
3840 map textures/stone/ground_c09a.tga
3841 rgbGen vertexLit
3842 alphaGen vertex
3843 tcmod scale 0.1 0.1
3844 }
3845 {
3846 map textures/stone/mxrock4ca.tga
3847 tcmod scale 0.05 0.05
3848 rgbGen vertexLit
3849 alphaGen vertex
3850 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3851 }
3852
3853
3854 }
3855
3856 textures/terrain/mxterra16_0to3
3857 {
3858 surfaceparm grasssteps
3859 surfaceparm nolightmap
3860 q3map_novertexshadows
3861 q3map_forcesunlight
3862 {
3863 map textures/stone/ground_c09a.tga
3864 rgbGen vertexLit
3865 alphaGen vertex
3866 tcmod scale 0.1 0.1
3867 }
3868 {
3869 map textures/stone/mxrock3g.tga
3870 tcmod scale 0.05 0.05
3871 rgbGen vertexLit
3872 alphaGen vertex
3873 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3874 }
3875
3876
3877 }
3878
3879 textures/terrain/mxterra16_0to4
3880 {
3881 surfaceparm grasssteps
3882 surfaceparm nolightmap
3883 q3map_novertexshadows
3884 q3map_forcesunlight
3885 {
3886 map textures/stone/ground_c09a.tga
3887 rgbGen vertexLit
3888 alphaGen vertex
3889 tcmod scale 0.1 0.1
3890 }
3891 {
3892 map textures/stone/dirt_m03.tga
3893 tcmod scale 0.1 0.1
3894 rgbGen vertexLit
3895 alphaGen vertex
3896 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3897 }
3898
3899
3900 }
3901
3902 textures/terrain/mxterra16_1to2
3903 {
3904 surfaceparm grasssteps
3905 surfaceparm nolightmap
3906 q3map_novertexshadows
3907 q3map_forcesunlight
3908 {
3909 map textures/stone/mxrock1b.tga
3910 rgbGen vertexLit
3911 alphaGen vertex
3912 tcmod scale 0.1 0.1
3913 }
3914 {
3915 map textures/stone/mxrock4ca.tga
3916 tcmod scale 0.05 0.05
3917 rgbGen vertexLit
3918 alphaGen vertex
3919 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3920 }
3921
3922 }
3923
3924 textures/terrain/mxterra16_1to3
3925 {
3926 surfaceparm gravelsteps
3927 surfaceparm nolightmap
3928 q3map_novertexshadows
3929 q3map_forcesunlight
3930 {
3931 map textures/stone/mxrock1b.tga
3932 rgbGen vertexLit
3933 alphaGen vertex
3934 tcmod scale 0.1 0.1
3935 }
3936 {
3937 map textures/stone/mxrock3g.tga
3938 tcmod scale 0.05 0.05
3939 rgbGen vertexLit
3940 alphaGen vertex
3941 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3942 }
3943
3944 }
3945
3946 textures/terrain/mxterra16_1to4
3947 {
3948 surfaceparm gravelsteps
3949 surfaceparm nolightmap
3950 q3map_novertexshadows
3951 q3map_forcesunlight
3952 {
3953 map textures/stone/mxrock1b.tga
3954 rgbGen vertexLit
3955 alphaGen vertex
3956 tcmod scale 0.1 0.1
3957 }
3958 {
3959 map textures/stone/dirt_m03.tga
3960 tcmod scale 0.1 0.1
3961 rgbGen vertexLit
3962 alphaGen vertex
3963 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3964 }
3965
3966 }
3967
3968 textures/terrain/mxterra16_2to3
3969 {
3970 surfaceparm grasssteps
3971 surfaceparm nolightmap
3972 q3map_novertexshadows
3973 q3map_forcesunlight
3974 {
3975 map textures/stone/mxrock4ca.tga
3976
3977 rgbGen vertexLit
3978 alphaGen vertex
3979 tcmod scale 0.05 0.05
3980 }
3981 {
3982 map textures/stone/mxrock3g.tga
3983 tcmod scale 0.05 0.05
3984 rgbGen vertexLit
3985 alphaGen vertex
3986 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
3987 }
3988
3989 }
3990
3991 textures/terrain/mxterra16_2to4
3992 {
3993 surfaceparm grasssteps
3994 surfaceparm nolightmap
3995 q3map_novertexshadows
3996 q3map_forcesunlight
3997 {
3998 map textures/stone/mxrock4ca.tga
3999 rgbGen vertexLit
4000 alphaGen vertex
4001 tcmod scale 0.05 0.05
4002 }
4003 {
4004 map textures/stone/dirt_m03.tga
4005 tcmod scale 0.1 0.1
4006 rgbGen vertexLit
4007 alphaGen vertex
4008 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4009 }
4010
4011 }
4012
4013 textures/terrain/mxterra16_3to4
4014 {
4015 surfaceparm nolightmap
4016 q3map_novertexshadows
4017 q3map_forcesunlight
4018 {
4019 map textures/stone/mxrock3g.tga
4020 rgbGen vertexLit
4021 alphaGen vertex
4022 tcmod scale 0.05 0.05
4023 }
4024 {
4025 map textures/stone/dirt_m03.tga
4026 tcmod scale 0.1 0.1
4027 rgbGen vertexLit
4028 alphaGen vertex
4029 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4030 }
4031
4032 }
4033
4034
4035
4036 ///////////////// Boss2 /////////////////////
4037 //////////////////////////////////////////////
4038
4039 textures/terrain/mxterra17_0
4040 {
4041 surfaceparm grasssteps
4042 surfaceparm nolightmap
4043 q3map_novertexshadows
4044 q3map_forcesunlight
4045 {
4046 map textures/stone/mxsnow0.tga
4047 rgbGen vertexLit
4048 tcmod scale 0.05 0.05
4049 }
4050 }
4051
4052 textures/terrain/mxterra17_1
4053 {
4054 surfaceparm gravelsteps
4055 surfaceparm nolightmap
4056 q3map_novertexshadows
4057 q3map_forcesunlight
4058 {
4059 map textures/stone/mxsnow3.tga
4060 rgbGen vertexLit
4061 tcmod scale 0.025 0.025
4062 }
4063 }
4064
4065 textures/terrain/mxterra17_0to1
4066 {
4067 surfaceparm grasssteps
4068 surfaceparm nolightmap
4069 q3map_novertexshadows
4070 q3map_forcesunlight
4071 {
4072 map textures/stone/mxsnow0.tga
4073 rgbGen vertexLit
4074 alphaGen vertex
4075 tcmod scale 0.05 0.05
4076 }
4077 {
4078 map textures/stone/mxsnow3.tga
4079 tcmod scale 0.025 0.025
4080 rgbGen vertexLit
4081 alphaGen vertex
4082 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4083 }
4084 }
4085
4086
4087 ///////////////// baseout2 ////////////////////
4088 //////////////////////////////////////////////
4089
4090 textures/terrain/mxterra18_0
4091 {
4092 surfaceparm grasssteps
4093 surfaceparm nolightmap
4094 q3map_novertexshadows
4095 q3map_forcesunlight
4096 {
4097 map textures/stone/mxrock2t.tga
4098 rgbGen vertexLit
4099 tcmod scale 0.1 0.1
4100 }
4101 }
4102
4103 textures/terrain/mxterra18_1
4104 {
4105 surfaceparm gravelsteps
4106 surfaceparm nolightmap
4107 q3map_novertexshadows
4108 q3map_forcesunlight
4109 {
4110 map textures/stone/mxrock3_a.tga
4111 rgbGen vertexLit
4112 tcmod scale 0.1 0.1
4113 }
4114 }
4115
4116 textures/terrain/mxterra18_0to1
4117 {
4118 surfaceparm grasssteps
4119 surfaceparm nolightmap
4120 q3map_novertexshadows
4121 q3map_forcesunlight
4122 {
4123 map textures/stone/mxrock2t.tga
4124 rgbGen vertexLit
4125 alphaGen vertex
4126 tcmod scale 0.1 0.1
4127 }
4128 {
4129 map textures/stone/mxrock3_a.tga
4130 tcmod scale 0.1 0.1
4131 rgbGen vertexLit
4132 alphaGen vertex
4133 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4134 }
4135 }
4136
4137
4138 ///////////////// assault2 /////////////////////
4139 //////////////////////////////////////////////
4140
4141 textures/terrain/mxterra19_0
4142 {
4143 surfaceparm grasssteps
4144 surfaceparm nolightmap
4145 q3map_novertexshadows
4146 q3map_forcesunlight
4147 {
4148 map textures/stone/mxrock2.tga
4149 rgbGen vertexLit
4150 tcmod scale 0.1 0.1
4151 }
4152 }
4153
4154 textures/terrain/mxterra19_1
4155 {
4156 surfaceparm gravelsteps
4157 surfaceparm nolightmap
4158 q3map_novertexshadows
4159 q3map_forcesunlight
4160 {
4161 map textures/stone/mxrock3_a.tga
4162 rgbGen vertexLit
4163 tcmod scale 0.1 0.1
4164 }
4165 }
4166
4167 textures/terrain/mxterra19_0to1
4168 {
4169 surfaceparm grasssteps
4170 surfaceparm nolightmap
4171 q3map_novertexshadows
4172 q3map_forcesunlight
4173 {
4174 map textures/stone/mxrock2.tga
4175 rgbGen vertexLit
4176 alphaGen vertex
4177 tcmod scale 0.1 0.1
4178 }
4179 {
4180 map textures/stone/mxrock3_a.tga
4181 tcmod scale 0.1 0.1
4182 rgbGen vertexLit
4183 alphaGen vertex
4184 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4185 }
4186 }
4187
4188
4189
4190 ///////////////// Dam2 /////////////////////
4191 //////////////////////////////////////////////
4192
4193 textures/terrain/mxterra20_0
4194 {
4195 surfaceparm grasssteps
4196 surfaceparm nolightmap
4197 q3map_novertexshadows
4198 q3map_forcesunlight
4199 {
4200 map textures/stone/mxrock2.tga
4201 rgbGen vertexLit
4202 tcmod scale 0.1 0.1
4203 }
4204 }
4205
4206 textures/terrain/mxterra20_1
4207 {
4208 surfaceparm gravelsteps
4209 surfaceparm nolightmap
4210 q3map_novertexshadows
4211 q3map_forcesunlight
4212 {
4213 map textures/stone/mxrock3_a.tga
4214 rgbGen vertexLit
4215 tcmod scale 0.1 0.1
4216 }
4217 }
4218
4219 textures/terrain/mxterra20_2
4220 {
4221 surfaceparm gravelsteps
4222 surfaceparm nolightmap
4223 q3map_novertexshadows
4224 q3map_forcesunlight
4225 {
4226 map textures/stone/mxrock1aa.tga
4227 rgbGen vertexLit
4228 tcmod scale 0.1 0.1
4229 }
4230 }
4231
4232 textures/terrain/mxterra20_0to1
4233 {
4234 surfaceparm grasssteps
4235 surfaceparm nolightmap
4236 q3map_novertexshadows
4237 q3map_forcesunlight
4238 {
4239 map textures/stone/mxrock2.tga
4240 rgbGen vertexLit
4241 alphaGen vertex
4242 tcmod scale 0.1 0.1
4243 }
4244 {
4245 map textures/stone/mxrock3_a.tga
4246 tcmod scale 0.1 0.1
4247 rgbGen vertexLit
4248 alphaGen vertex
4249 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4250 }
4251 }
4252
4253
4254 textures/terrain/mxterra20_0to2
4255 {
4256 surfaceparm grasssteps
4257 surfaceparm nolightmap
4258 q3map_novertexshadows
4259 q3map_forcesunlight
4260 {
4261 map textures/stone/mxrock2.tga
4262 rgbGen vertexLit
4263 alphaGen vertex
4264 tcmod scale 0.1 0.1
4265 }
4266 {
4267 map textures/stone/mxrock1aa.tga
4268 tcmod scale 0.1 0.1
4269 rgbGen vertexLit
4270 alphaGen vertex
4271 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4272 }
4273 }
4274
4275 textures/terrain/mxterra20_1to2
4276 {
4277 surfaceparm grasssteps
4278 surfaceparm nolightmap
4279 q3map_novertexshadows
4280 q3map_forcesunlight
4281 {
4282 map textures/stone/mxrock3_a.tga
4283 rgbGen vertexLit
4284 alphaGen vertex
4285 tcmod scale 0.1 0.1
4286 }
4287 {
4288 map textures/stone/mxrock1aa.tga
4289 tcmod scale 0.1 0.1
4290 rgbGen vertexLit
4291 alphaGen vertex
4292 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4293 }
4294 }
4295
4296 ///////////////// Heinrich /////////////////////
4297 //////////////////////////////////////////////
4298
4299 textures/terrain/mxterra21_0
4300 {
4301 surfaceparm grasssteps
4302 surfaceparm nolightmap
4303 q3map_novertexshadows
4304 q3map_forcesunlight
4305 {
4306 map textures/stone/dirt_m03.tga
4307 rgbGen vertexLit
4308 tcmod scale 0.1 0.1
4309 }
4310 }
4311
4312 textures/terrain/mxterra21_1
4313 {
4314 surfaceparm gravelsteps
4315 surfaceparm nolightmap
4316 q3map_novertexshadows
4317 q3map_forcesunlight
4318 {
4319 map textures/stone/mxrock4ca.tga
4320 rgbGen vertexLit
4321 tcmod scale 0.1 0.1
4322 }
4323 }
4324
4325 textures/terrain/mxterra21_2
4326 {
4327 surfaceparm gravelsteps
4328 surfaceparm nolightmap
4329 q3map_novertexshadows
4330 q3map_forcesunlight
4331 {
4332 map textures/stone/ground_c09a.tga
4333 rgbGen vertexLit
4334 tcmod scale 0.1 0.1
4335 }
4336 }
4337
4338 textures/terrain/mxterra21_0to1
4339 {
4340 surfaceparm grasssteps
4341 surfaceparm nolightmap
4342 q3map_novertexshadows
4343 q3map_forcesunlight
4344 {
4345 map textures/stone/dirt_m03.tga
4346 rgbGen vertexLit
4347 alphaGen vertex
4348 tcmod scale 0.1 0.1
4349 }
4350 {
4351 map textures/stone/mxrock4ca.tga
4352 tcmod scale 0.1 0.1
4353 rgbGen vertexLit
4354 alphaGen vertex
4355 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4356 }
4357 }
4358
4359
4360 textures/terrain/mxterra21_0to2
4361 {
4362 surfaceparm grasssteps
4363 surfaceparm nolightmap
4364 q3map_novertexshadows
4365 q3map_forcesunlight
4366 {
4367 map textures/stone/dirt_m03.tga
4368 rgbGen vertexLit
4369 alphaGen vertex
4370 tcmod scale 0.1 0.1
4371 }
4372 {
4373 map textures/stone/ground_c09a.tga
4374 tcmod scale 0.1 0.1
4375 rgbGen vertexLit
4376 alphaGen vertex
4377 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4378 }
4379 }
4380
4381 textures/terrain/mxterra21_1to2
4382 {
4383 surfaceparm grasssteps
4384 surfaceparm nolightmap
4385 q3map_novertexshadows
4386 q3map_forcesunlight
4387 {
4388 map textures/stone/mxrock4ca.tga
4389 rgbGen vertexLit
4390 alphaGen vertex
4391 tcmod scale 0.1 0.1
4392 }
4393 {
4394 map textures/stone/ground_c09a.tga
4395 tcmod scale 0.1 0.1
4396 rgbGen vertexLit
4397 alphaGen vertex
4398 blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
4399 }
4400 }
4401
4402
4403
4404 /////////////////end ///////////////////
4405 //////////////////////////////////////////////
4406
4407
4408
4409
4410 textures/terrain/forest_0
4411 {
4412 surfaceparm grasssteps
4413 surfaceparm nolightmap
4414 q3map_novertexshadows
4415 q3map_forcesunlight
4416 {
4417 map textures/stone/mxrock0b.tga
4418 rgbGen vertexLit
4419 tcmod scale 0.1 0.1
4420 }
4421
4422 }
4423
4424
4425 textures/terrain/snow_0
4426 {
4427 surfaceparm grasssteps
4428 surfaceparm nolightmap
4429 q3map_novertexshadows
4430 q3map_forcesunlight
4431 {
4432 map textures/stone/mxsnow3.tga
4433 rgbGen vertexLit
4434 tcmod scale 0.1 0.1
4435
4436 }
4437
4438 }
4439
4440 textures/terrain/rubble_0
4441 {
4442 surfaceparm grasssteps
4443 surfaceparm nolightmap
4444 q3map_novertexshadows
4445 q3map_forcesunlight
4446 {
4447 map textures/stone/mxdebri0.tga
4448 rgbGen vertexLit
4449 tcmod scale 0.25 0.25
4450
4451 }
4452
4453 }
4454
4455 textures/terrain/rock_0
4456 {
4457 surfaceparm grasssteps
4458 surfaceparm nolightmap
4459 q3map_novertexshadows
4460 q3map_forcesunlight
4461 {
4462 map textures/stone/mxrock2t.tga
4463 rgbGen vertexLit
4464 tcmod scale 0.1 0.1
4465
4466 }
4467
4468 }
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
0 ##########################################################
1 # Info about the MD4 format supported by the ioQ3 engine #
2 ##########################################################
3
4 All models included with the original version of Quake3 from id soft are in
5 the MD3 format. Animations in this format are realized by saving the position
6 of every vertex in each frame which can make these files pretty large.
7
8 ID started work on a newer format, the MD4 format which they never finished.
9 This format uses a skeleton with all vertices "attached" to their bones.
10 Because only the position of the bones must be stored for each frame and the
11 number of bones is not very high this format is more efficient when
12 doing animations.
13
14 Raven software "finished" this format originally started by ID and included
15 it in their game EliteForce. They called their model format "MDR" which is
16 the name I have used throughout the sourcecode and I will continue using in
17 this readme. Since the code on how to handle those MDR files was released
18 under a GPL licence a long time ago, I was able to implement this format for
19 Quake3 and do some efficiency improvements.
20 To enable the support for this model format, go to qcommon/qfiles.h,
21 remove the comment slashes for #define RAVENMD4 and then compile the engine.
22
23 Including finished MDR models in your projects is easy: just load the model
24 files in your cgame code as you would normally load an MD3 model. The engine
25 will expect the models to have a ".mdr" suffix.
26 The rest is pretty much the same: Selecting the current animation frame,
27 adding a skin to the model, etc..
28 You can check out the original eliteforce game sourcecode if you want to
29 have examples on using the md4s. The source can be got at:
30 http://eliteforce2.filefront.com/
31 You can also get reference MDR files there, just go to the model/skin
32 section there and pick something to download.
33
34 Now here comes the tricky part:
35 Creating files with this format. There are tools to create these kinds of
36 MDR files, like a plugin for Milkshape.
37
38 A pretty good overview about MDR file creation is available at
39 http://synapse.vgfort.com/
40 You can find some tools for creating MDR files there.
41
42 On a sidenote:
43 There is an independent implementation of the MD4 file format available
44 here:
45 http://gongo.quakedev.com/
46 At this time, ioquake3 has no support for these models though that may
47 change in the future. Nevertheless, he has got a tool for skeletal
48 animations that can possibly be hooked into the MDR format with some
49 modifications.
50
51
52 Good luck!
53 - Thilo Schulz
186186 0 - No. (default)
187187 1 - Use parallax occlusion mapping.
188188 2 - Use relief mapping. (slower)
189
190 * `r_parallaxMapOffset` - Set the parallax height offset.
191 0 - Values map to -255 - 0. (default)
192 0.5 - Values map to -127 - 127.
193 1.0 - Values map to 0 - 255.
189194
190195 * `r_parallaxMapShadows` - Enable self-shadowing on parallax map
191196 supported materials.