Changeset 78:dcde131dddae
- Timestamp:
- 11/22/07 12:12:01 (3 years ago)
- Author:
- mdoison
- Branch:
- madcat
- convert_revision:
- svn:7c786126-522e-0410-a822-d6d8feae56ca/branches/madcat@100
- Message:
-
add goon.patch (tjw 1.2)
- goon+ is now at s2
- improve goons capacities
- pounce give always a knockback
- improve pounce effect
- give splash damage to pounceball
- Location:
- src/game
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r76
|
r78
|
|
| 1884 | 1884 | 1.0f, //float shadowScale; |
| 1885 | 1885 | "alien_general_hud", //char *hudname; |
| 1886 | | ( 1 << S3 ), //int stages |
| | 1886 | ( 1 << S2 )|( 1 << S3 ), //int stages |
| 1887 | 1887 | { -32, -32, -21 }, //vec3_t mins; |
| 1888 | 1888 | { 32, 32, 21 }, //vec3_t maxs; |
-
|
r76
|
r78
|
|
| 523 | 523 | && ( pm->ps->pm_flags & PMF_CHARGE ) ) |
| 524 | 524 | { |
| 525 | | pm->ps->weaponTime += LEVEL3_POUNCE_TIME; |
| 526 | 525 | pm->ps->pm_flags &= ~PMF_CHARGE; |
| | 526 | return qfalse; |
| 527 | 527 | } |
| 528 | 528 | |
| … |
… |
|
| 2868 | 2868 | attack3 = pm->cmd.buttons & BUTTON_USE_HOLDABLE; |
| 2869 | 2869 | |
| 2870 | | if( !pm->autoWeaponHit[ pm->ps->weapon ] && !attack1 && !attack2 && !attack3 ) |
| 2871 | | { |
| 2872 | | pm->ps->weaponTime = 0; |
| 2873 | | pm->ps->weaponstate = WEAPON_READY; |
| | 2870 | // pounce is autohit |
| | 2871 | if( !attack1 && !attack2 && !attack3 ) |
| 2874 | 2872 | return; |
| 2875 | | } |
| 2876 | 2873 | break; |
| 2877 | 2874 | |
-
|
r77
|
r78
|
|
| 634 | 634 | if( client->ps.stats[ STAT_MISC ] < pounceSpeed && ucmd->buttons & BUTTON_ATTACK2 ) |
| 635 | 635 | client->ps.stats[ STAT_MISC ] += ( 100.0f / (float)LEVEL3_POUNCE_CHARGE_TIME ) * pounceSpeed; |
| 636 | | |
| 637 | | if( !( ucmd->buttons & BUTTON_ATTACK2 ) ) |
| 638 | | { |
| 639 | | if( client->pmext.pouncePayload > 0 ) |
| 640 | | client->allowedToPounce = qtrue; |
| 641 | | } |
| 642 | 636 | |
| 643 | 637 | if( client->ps.stats[ STAT_MISC ] > pounceSpeed ) |
-
|
r68
|
r78
|
|
| 987 | 987 | } |
| 988 | 988 | |
| | 989 | // ...and for goon pouncing |
| | 990 | if( mod == MOD_LEVEL3_POUNCE ) |
| | 991 | knockback *= 1.5f; |
| | 992 | |
| 989 | 993 | if( targ->client ) |
| 990 | 994 | { |
-
|
r77
|
r78
|
|
| 453 | 453 | int medKitIncrementTime; |
| 454 | 454 | int lastCreepSlowTime; // time until creep can be removed |
| 455 | | |
| 456 | | qboolean allowedToPounce; |
| 457 | 455 | |
| 458 | 456 | qboolean charging; |
-
|
r0
|
r78
|
|
| 791 | 791 | bolt->parent = self; |
| 792 | 792 | bolt->damage = LEVEL3_BOUNCEBALL_DMG; |
| 793 | | bolt->splashDamage = 0; |
| 794 | | bolt->splashRadius = 0; |
| | 793 | bolt->splashDamage = LEVEL3_BOUNCEBALL_DMG; |
| | 794 | bolt->splashRadius = LEVEL3_BOUNCEBALL_RADIUS; |
| 795 | 795 | bolt->methodOfDeath = MOD_LEVEL3_BOUNCEBALL; |
| 796 | 796 | bolt->splashMethodOfDeath = MOD_LEVEL3_BOUNCEBALL; |
-
|
r77
|
r78
|
|
| 1169 | 1169 | int damage; |
| 1170 | 1170 | vec3_t mins, maxs; |
| | 1171 | int payload; |
| | 1172 | |
| | 1173 | if( ent->client->pmext.pouncePayload <= 0 ) |
| | 1174 | return qfalse; |
| | 1175 | |
| | 1176 | // in case the goon lands on his target, he get's one shot after landing |
| | 1177 | payload = ent->client->pmext.pouncePayload; |
| | 1178 | if( !( ent->client->ps.pm_flags & PMF_CHARGE ) ) |
| | 1179 | ent->client->pmext.pouncePayload = 0; |
| 1171 | 1180 | |
| 1172 | 1181 | VectorSet( mins, -LEVEL3_POUNCE_WIDTH, -LEVEL3_POUNCE_WIDTH, -LEVEL3_POUNCE_WIDTH ); |
| 1173 | 1182 | VectorSet( maxs, LEVEL3_POUNCE_WIDTH, LEVEL3_POUNCE_WIDTH, LEVEL3_POUNCE_WIDTH ); |
| 1174 | | |
| 1175 | | if( ent->client->ps.groundEntityNum != ENTITYNUM_NONE ) |
| 1176 | | { |
| 1177 | | ent->client->allowedToPounce = qfalse; |
| 1178 | | ent->client->pmext.pouncePayload = 0; |
| 1179 | | } |
| 1180 | | |
| 1181 | | if( !ent->client->allowedToPounce ) |
| 1182 | | return qfalse; |
| 1183 | 1183 | |
| 1184 | 1184 | if( ent->client->ps.weaponTime ) |
| … |
… |
|
| 1212 | 1212 | tent->s.eventParm = DirToByte( tr.plane.normal ); |
| 1213 | 1213 | tent->s.weapon = ent->s.weapon; |
| 1214 | | tent->s.generic1 = ent->s.generic1; //weaponMode |
| | 1214 | tent->s.generic1 = WPM_SECONDARY; |
| 1215 | 1215 | } |
| 1216 | 1216 | |
| … |
… |
|
| 1218 | 1218 | return qfalse; |
| 1219 | 1219 | |
| 1220 | | damage = (int)( ( (float)ent->client->pmext.pouncePayload |
| 1221 | | / (float)LEVEL3_POUNCE_SPEED ) * LEVEL3_POUNCE_DMG ); |
| | 1220 | damage = (int)( ( (float)payload / (float)LEVEL3_POUNCE_SPEED ) |
| | 1221 | * LEVEL3_POUNCE_DMG ); |
| 1222 | 1222 | |
| 1223 | 1223 | ent->client->pmext.pouncePayload = 0; |
| 1224 | 1224 | |
| 1225 | 1225 | G_Damage( traceEnt, ent, ent, forward, tr.endpos, damage, |
| 1226 | | DAMAGE_NO_KNOCKBACK|DAMAGE_NO_LOCDAMAGE, MOD_LEVEL3_POUNCE ); |
| 1227 | | |
| 1228 | | ent->client->allowedToPounce = qfalse; |
| | 1226 | DAMAGE_NO_LOCDAMAGE, MOD_LEVEL3_POUNCE ); |
| | 1227 | |
| | 1228 | ent->client->ps.weaponTime += LEVEL3_POUNCE_TIME; |
| 1229 | 1229 | |
| 1230 | 1230 | return qtrue; |
| … |
… |
|
| 1408 | 1408 | break; |
| 1409 | 1409 | case WP_ALEVEL3: |
| | 1410 | meleeAttack( ent, LEVEL3_CLAW_RANGE, LEVEL3_CLAW_WIDTH, LEVEL3_CLAW_DMG, MOD_LEVEL3_CLAW ); |
| | 1411 | break; |
| 1410 | 1412 | case WP_ALEVEL3_UPG: |
| 1411 | | meleeAttack( ent, LEVEL3_CLAW_RANGE, LEVEL3_CLAW_WIDTH, LEVEL3_CLAW_DMG, MOD_LEVEL3_CLAW ); |
| | 1413 | meleeAttack( ent, LEVEL3_CLAW_UPG_RANGE, LEVEL3_CLAW_WIDTH, LEVEL3_CLAW_DMG, MOD_LEVEL3_CLAW ); |
| 1412 | 1414 | break; |
| 1413 | 1415 | case WP_ALEVEL2: |
-
|
r77
|
r78
|
|
| 88 | 88 | |
| 89 | 89 | #define LEVEL3_CLAW_DMG ADM(80) |
| 90 | | #define LEVEL3_CLAW_RANGE 96.0f |
| 91 | | #define LEVEL3_CLAW_WIDTH 16.0f |
| | 90 | #define LEVEL3_CLAW_RANGE 72.0f |
| | 91 | #define LEVEL3_CLAW_UPG_RANGE 96.0f |
| | 92 | #define LEVEL3_CLAW_WIDTH 12.0f |
| 92 | 93 | #define LEVEL3_CLAW_REPEAT 700 |
| 93 | 94 | #define LEVEL3_CLAW_K_SCALE 1.0f |
| … |
… |
|
| 101 | 102 | #define LEVEL3_POUNCE_SPEED_MOD 0.75f |
| 102 | 103 | #define LEVEL3_POUNCE_CHARGE_TIME 700 |
| | 104 | #define LEVEL3_POUNCE_CHARGE_MIN 400 |
| 103 | 105 | #define LEVEL3_POUNCE_TIME 400 |
| 104 | 106 | #define LEVEL3_BOUNCEBALL_DMG ADM(110) |
| 105 | 107 | #define LEVEL3_BOUNCEBALL_REPEAT 1000 |
| 106 | 108 | #define LEVEL3_BOUNCEBALL_SPEED 1000.0f |
| | 109 | #define LEVEL3_BOUNCEBALL_RADIUS 30 |
| 107 | 110 | |
| 108 | 111 | #define LEVEL4_CLAW_DMG ADM(100) |