|
|
1.1 root 1: --- h:\quake2\code\game\p_weapon.c Wed Apr 01 15:57:17 1998
2: +++ p_weapon.c Wed Apr 01 14:43:35 1998
3: @@ -152,6 +152,34 @@
4: current
5: ===============
6: */
7: +
8: +// ### Hentai ### BEGIN
9: +void ShowGun(edict_t *ent)
10: +{
11: + char heldmodel[128];
12: + int len;
13: +
14: + if(ent->s.modelindex != 255 || ent->deadflag || !ent->client->pers.weapon)
15: + {
16: + ent->s.modelindex2 = 0;
17: + return;
18: + }
19: +
20: + strcpy(heldmodel, "players/");
21: + strcat(heldmodel, Info_ValueForKey (ent->client->pers.userinfo, "skin"));
22: + for(len = 8; heldmodel[len]; len++)
23: + {
24: + if(heldmodel[len] == '/')
25: + heldmodel[++len] = '\0';
26: + }
27: + strcat(heldmodel, ent->client->pers.weapon->icon);
28: + strcat(heldmodel, ".md2");
29: + //gi.dprintf ("%s\n", heldmodel);
30: + ent->s.modelindex2 = gi.modelindex(heldmodel); // Hentai's custom gun models
31: +
32: +}
33: +// ### Hentai ### END
34: +
35: void ChangeWeapon (edict_t *ent)
36: {
37: if (ent->client->grenade_time)
38: @@ -167,9 +195,6 @@
39: ent->client->newweapon = NULL;
40: ent->client->machinegun_shots = 0;
41:
42: - // set visible model
43: - ent->s.skinnum = (ent - g_edicts - 1) || ((ent->client->pers.weapon->weapmodel & 0xff) << 8);
44: -
45: if (ent->client->pers.weapon && ent->client->pers.weapon->ammo)
46: ent->client->ammo_index = ITEM_INDEX(FindItem(ent->client->pers.weapon->ammo));
47: else
48: @@ -185,6 +210,7 @@
49: ent->client->ps.gunframe = 0;
50: ent->client->ps.gunindex = gi.modelindex(ent->client->pers.weapon->view_model);
51:
52: + // ### Hentai ### BEGIN
53: ent->client->anim_priority = ANIM_PAIN;
54: if(ent->client->ps.pmove.pm_flags & PMF_DUCKED)
55: {
56: @@ -197,6 +223,10 @@
57: ent->client->anim_end = FRAME_pain304;
58:
59: }
60: +
61: + ShowGun(ent);
62: +
63: + // ### Hentai ### END
64: }
65:
66: /*
67: @@ -354,11 +384,12 @@
68: {
69: int n;
70:
71: + // ### Hentai ### BEGIN
72: if(ent->deadflag || ent->s.modelindex != 255) // VWep animations screw up corpses
73: {
74: return;
75: }
76: -
77: + // ### Hentai ### END
78: if (ent->client->weaponstate == WEAPON_DROPPING)
79: {
80: if (ent->client->ps.gunframe == FRAME_DEACTIVATE_LAST)
81: @@ -366,7 +397,9 @@
82: ChangeWeapon (ent);
83: return;
84: }
85: - else if ((FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe) == 4)
86: +
87: + // ### Hentai ### BEGIN
88: + else if((FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe) == 4)
89: {
90: ent->client->anim_priority = ANIM_REVERSE;
91: if(ent->client->ps.pmove.pm_flags & PMF_DUCKED)
92: @@ -381,6 +414,8 @@
93:
94: }
95: }
96: + // ### Hentai ### END
97: +
98:
99: ent->client->ps.gunframe++;
100: return;
101: @@ -403,8 +438,8 @@
102: {
103: ent->client->weaponstate = WEAPON_DROPPING;
104: ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST;
105: -
106: - if ((FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) < 4)
107: + // ### Hentai ### BEGIN
108: + if((FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) < 4)
109: {
110: ent->client->anim_priority = ANIM_REVERSE;
111: if(ent->client->ps.pmove.pm_flags & PMF_DUCKED)
112: @@ -419,6 +454,7 @@
113:
114: }
115: }
116: + // ### Hentai ### END
117: return;
118: }
119:
120: @@ -538,11 +574,7 @@
121: speed = GRENADE_MINSPEED + (GRENADE_TIMER - timer) * ((GRENADE_MAXSPEED - GRENADE_MINSPEED) / GRENADE_TIMER);
122: fire_grenade2 (ent, start, forward, damage, speed, timer, radius, held);
123:
124: - if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
125: - ent->client->pers.inventory[ent->client->ammo_index]--;
126: -
127: - ent->client->grenade_time = level.time + 1.0;
128: -
129: + // ### Hentai ### BEGIN
130: if(ent->deadflag || ent->s.modelindex != 255) // VWep animations screw up corpses
131: {
132: return;
133: @@ -560,6 +592,13 @@
134: ent->s.frame = FRAME_wave08;
135: ent->client->anim_end = FRAME_wave01;
136: }
137: + // ### Hentai ### END
138: +
139: +
140: + if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
141: + ent->client->pers.inventory[ent->client->ammo_index]--;
142: +
143: + ent->client->grenade_time = level.time + 1.0;
144: }
145:
146: void Weapon_Grenade (edict_t *ent)
147: @@ -875,8 +914,8 @@
148: else
149: damage = 20;
150: Blaster_Fire (ent, offset, damage, true, effect);
151: - if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
152: - ent->client->pers.inventory[ent->client->ammo_index]--;
153: +
154: + // ### Hentai ### BEGIN
155:
156: ent->client->anim_priority = ANIM_ATTACK;
157: if (ent->client->ps.pmove.pm_flags & PMF_DUCKED)
158: @@ -889,6 +928,12 @@
159: ent->s.frame = FRAME_attack1 - 1;
160: ent->client->anim_end = FRAME_attack8;
161: }
162: +
163: + // ### Hentai ### END
164: +
165: +
166: + if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
167: + ent->client->pers.inventory[ent->client->ammo_index]--;
168: }
169:
170: ent->client->ps.gunframe++;
171: @@ -990,8 +1035,7 @@
172:
173: PlayerNoise(ent, start, PNOISE_WEAPON);
174:
175: - if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
176: - ent->client->pers.inventory[ent->client->ammo_index]--;
177: + // ### Hentai ### BEGIN
178:
179: ent->client->anim_priority = ANIM_ATTACK;
180: if (ent->client->ps.pmove.pm_flags & PMF_DUCKED)
181: @@ -1004,6 +1048,12 @@
182: ent->s.frame = FRAME_attack1 - (int) (random()+0.25);
183: ent->client->anim_end = FRAME_attack8;
184: }
185: +
186: + // ### Hentai ### END
187: +
188: +
189: + if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
190: + ent->client->pers.inventory[ent->client->ammo_index]--;
191: }
192:
193: void Weapon_Machinegun (edict_t *ent)
194: @@ -1059,6 +1109,8 @@
195: ent->client->weapon_sound = gi.soundindex("weapons/chngnl1a.wav");
196: }
197:
198: + // ### Hentai ### BEGIN
199: +
200: ent->client->anim_priority = ANIM_ATTACK;
201: if (ent->client->ps.pmove.pm_flags & PMF_DUCKED)
202: {
203: @@ -1071,6 +1123,10 @@
204: ent->client->anim_end = FRAME_attack8;
205: }
206:
207: +
208: + // ### Hentai ### END
209: +
210: +
211: if (ent->client->ps.gunframe <= 9)
212: shots = 1;
213: else if (ent->client->ps.gunframe <= 14)
214: @@ -1129,6 +1185,7 @@
215:
216: PlayerNoise(ent, start, PNOISE_WEAPON);
217:
218: +
219: if (! ( (int)dmflags->value & DF_INFINITE_AMMO ) )
220: ent->client->pers.inventory[ent->client->ammo_index] -= shots;
221: }
222: --- h:\quake2\code\game\p_view.c Fri Feb 27 10:09:55 1998
223: +++ p_view.c Sun Mar 08 18:17:03 1998
224: @@ -860,7 +860,16 @@
225: if (!ent->groundentity && client->anim_priority <= ANIM_WAVE)
226: goto newanim;
227:
228: - if (ent->s.frame < client->anim_end)
229: + // ### Hentai ### BEGIN
230: + if(client->anim_priority == ANIM_REVERSE)
231: + {
232: + if(ent->s.frame > client->anim_end)
233: + {
234: + ent->s.frame--;
235: + return;
236: + }
237: + }
238: + else if (ent->s.frame < client->anim_end) // ### Hentai ### END
239: { // continue an animation
240: ent->s.frame++;
241: return;
242: --- h:\quake2\code\game\p_client.c Wed Apr 01 15:49:55 1998
243: +++ p_client.c Sun Mar 08 18:27:09 1998
244: @@ -956,6 +956,10 @@
245: a deathmatch.
246: ============
247: */
248: +// ### Hentai ### BEGIN
249: +void ShowGun(edict_t *ent);
250: +// ### Hentai ### END
251: +
252: void PutClientInServer (edict_t *ent)
253: {
254: vec3_t mins = {-16, -16, -24};
255: @@ -1068,12 +1072,9 @@
256:
257: // clear entity state values
258: ent->s.effects = 0;
259: - ent->s.modelindex = 255; // will use the skin specified model
260: - ent->s.modelindex2 = 255; // custom gun model
261: - // sknum is player num and weapon number
262: - // weapon number will be added in changeweapon
263: ent->s.skinnum = ent - g_edicts - 1;
264: -
265: + ent->s.modelindex = 255; // will use the skin specified model
266: + ShowGun(ent); // ### Hentai ### special gun model
267: ent->s.frame = 0;
268: VectorCopy (spawn_origin, ent->s.origin);
269: ent->s.origin[2] += 1; // make sure off ground
270: @@ -1250,6 +1251,7 @@
271:
272: // save off the userinfo in case we want to check something later
273: strncpy (ent->client->pers.userinfo, userinfo, sizeof(ent->client->pers.userinfo)-1);
274: + ShowGun(ent);
275: }
276:
277:
278: --- h:\quake2\code\game\g_local.h Wed Apr 01 15:57:37 1998
279: +++ g_local.h Wed Mar 25 13:32:45 1998
280: @@ -9,7 +9,7 @@
281: #include "game.h"
282:
283: // the "gameversion" client command will print this plus compile date
284: -#define GAMEVERSION "baseq2"
285: +#define GAMEVERSION "VWep 3.14v4"
286:
287: // protocol bytes that can be directly added to messages
288: #define svc_muzzleflash 1
289: @@ -198,19 +198,6 @@
290: #define IT_KEY 16
291: #define IT_POWERUP 32
292:
293: -// gitem_t->weapmodel for weapons indicates model index
294: -#define WEAP_BLASTER 1
295: -#define WEAP_SHOTGUN 2
296: -#define WEAP_SUPERSHOTGUN 3
297: -#define WEAP_MACHINEGUN 4
298: -#define WEAP_CHAINGUN 5
299: -#define WEAP_GRENADES 6
300: -#define WEAP_GRENADELAUNCHER 7
301: -#define WEAP_ROCKETLAUNCHER 8
302: -#define WEAP_HYPERBLASTER 9
303: -#define WEAP_RAILGUN 10
304: -#define WEAP_BFG 11
305: -
306: typedef struct gitem_s
307: {
308: char *classname; // spawning name
309: @@ -232,8 +219,6 @@
310: char *ammo; // for weapons
311: int flags; // IT_* flags
312:
313: - int weapmodel; // weapon model index (for weapons)
314: -
315: void *info;
316: int tag;
317:
318: @@ -537,7 +522,6 @@
319: // and saving / loading games
320: //
321: #define FFL_SPAWNTEMP 1
322: -#define FFL_NOSPAWN 2
323:
324: typedef enum {
325: F_INT,
326: @@ -549,8 +533,6 @@
327: F_EDICT, // index on disk, pointer in memory
328: F_ITEM, // index on disk, pointer in memory
329: F_CLIENT, // index on disk, pointer in memory
330: - F_FUNCTION,
331: - F_MMOVE,
332: F_IGNORE
333: } fieldtype_t;
334:
335: @@ -785,8 +767,10 @@
336: #define ANIM_PAIN 3
337: #define ANIM_ATTACK 4
338: #define ANIM_DEATH 5
339: -#define ANIM_REVERSE 6
340:
341: +// ### Hentai ### BEGIN
342: +#define ANIM_REVERSE 6
343: +// ### Hentai ### END
344:
345: // client data that stays across multiple level loads
346: typedef struct
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.