(SubgameEntity ent, GameExportsImpl gameExports)
| 1062 | * =============== |
| 1063 | */ |
| 1064 | public static void ChangeWeapon(SubgameEntity ent, GameExportsImpl gameExports) { |
| 1065 | int i; |
| 1066 | |
| 1067 | gclient_t client = ent.getClient(); |
| 1068 | if (client.grenade_time != 0) { |
| 1069 | client.grenade_time = gameExports.level.time; |
| 1070 | client.weapon_sound = 0; |
| 1071 | weapon_grenade_fire(ent, false, gameExports); |
| 1072 | client.grenade_time = 0; |
| 1073 | } |
| 1074 | |
| 1075 | client.pers.lastweapon = client.pers.weapon; |
| 1076 | client.pers.weapon = client.newweapon; |
| 1077 | client.newweapon = null; |
| 1078 | client.machinegun_shots = 0; |
| 1079 | |
| 1080 | // set visible model |
| 1081 | if (ent.s.modelindex == 255) { |
| 1082 | if (client.pers.weapon != null) |
| 1083 | i = ((client.pers.weapon.weapmodel & 0xff) << 8); |
| 1084 | else |
| 1085 | i = 0; |
| 1086 | ent.s.skinnum = (ent.index - 1) | i; |
| 1087 | } |
| 1088 | |
| 1089 | if (client.pers.weapon != null |
| 1090 | && client.pers.weapon.ammo != null) |
| 1091 | |
| 1092 | client.ammo_index = GameItems |
| 1093 | .FindItem(client.pers.weapon.ammo, gameExports).index; |
| 1094 | else |
| 1095 | client.ammo_index = 0; |
| 1096 | |
| 1097 | if (client.pers.weapon == null) { // dead |
| 1098 | client.getPlayerState().gunindex = 0; |
| 1099 | return; |
| 1100 | } |
| 1101 | |
| 1102 | client.weaponstate = WeaponStates.WEAPON_ACTIVATING; |
| 1103 | client.getPlayerState().gunframe = 0; |
| 1104 | client.getPlayerState().gunindex = gameExports.gameImports |
| 1105 | .modelindex(client.pers.weapon.view_model); |
| 1106 | |
| 1107 | client.anim_priority = Defines.ANIM_PAIN; |
| 1108 | if ((client.getPlayerState().pmove.pm_flags & Defines.PMF_DUCKED) != 0) { |
| 1109 | ent.s.frame = M_Player.FRAME_crpain1; |
| 1110 | client.anim_end = M_Player.FRAME_crpain4; |
| 1111 | } else { |
| 1112 | ent.s.frame = M_Player.FRAME_pain301; |
| 1113 | client.anim_end = M_Player.FRAME_pain304; |
| 1114 | |
| 1115 | } |
| 1116 | } |
| 1117 | |
| 1118 | /* |
| 1119 | * ================= |
no test coverage detected