‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
gib.gsh
Go to the documentation of this file.
1 #define GET_GIB_DATA(entity,field) (isdefined(entity.gib_data)?entity.gib_data.field:entity.field)
2 
3 // Server side only
4 #define GIB_HAT_MODEL(entity) GET_GIB_DATA(entity,hatmodel)
5 #define GIB_HEAD_MODEL(entity) GET_GIB_DATA(entity,head)
6 
7 // Server side only
8 #define GIB_TORSO_UNDAMAGED_MODEL(entity) GET_GIB_DATA(entity,torsoDmg1)
9 #define GIB_TORSO_RIGHT_ARM_GONE_MODEL(entity) GET_GIB_DATA(entity,torsoDmg2)
10 #define GIB_TORSO_LEFT_ARM_GONE_MODEL(entity) GET_GIB_DATA(entity,torsoDmg3)
11 #define GIB_TORSO_GUTS_GONE_MODEL(entity) GET_GIB_DATA(entity,torsoDmg4)
12 #define GIB_TORSO_HEAD_GONE_MODEL(entity) GET_GIB_DATA(entity,torsoDmg5)
13 
14 // Server side only
15 #define GIB_LEGS_UNDAMAGED_MODEL(entity) GET_GIB_DATA(entity,legDmg1)
16 #define GIB_LEGS_RIGHT_LEG_GONE_MODEL(entity) GET_GIB_DATA(entity,legDmg2)
17 #define GIB_LEGS_LEFT_LEG_GONE_MODEL(entity) GET_GIB_DATA(entity,legDmg3)
18 #define GIB_LEGS_NO_LEGS_MODEL(entity) GET_GIB_DATA(entity,legDmg4)
19 
20 #define GIB_UNDAMAGED_FLAG 0
21 #define GIB_TOGGLE_GIB_MODEL_FLAG 1
22 #define GIB_ANNIHILATE_FLAG 2
23 #define GIB_HEAD_HAT_FLAG 4
24 #define GIB_TORSO_HEAD_FLAG 8
25 #define GIB_TORSO_RIGHT_ARM_FLAG 16
26 #define GIB_TORSO_LEFT_ARM_FLAG 32
27 #define GIB_TORSO_GUTS_FLAG 64
28 #define GIB_LEGS_RIGHT_LEG_FLAG 128
29 #define GIB_LEGS_LEFT_LEG_FLAG 256
30 #define GIB_LEGS_BOTH_LEGS_FLAG (GIB_LEGS_RIGHT_LEG_FLAG+GIB_LEGS_LEFT_LEG_FLAG)
31 
32 #define GIB_FLAG_BITS 9
33 #define GIB_DIR_BITS 3
34 #define GIB_SCALE_BITS 3
35 
36 #define GIB_CLIENTFIELD "gib_state"
37 // 7 Damage states and 1 toggle bit to determine if gib models should be spawned on the client.
38 #define GIB_CLIENTFIELD_BITS_ACTOR (GIB_FLAG_BITS)
39 #define GIB_CLIENTFIELD_BITS_PLAYER (GIB_FLAG_BITS+GIB_DIR_BITS+GIB_SCALE_BITS)
40 #define GIB_CLIENTFIELD_TYPE "int"
41 
42 #define GIB_FLAG_STRIPPED(gib_state) ( gib_state & ( ( 1 << GIB_FLAG_BITS ) - 1 ) )
43 #define GET_GIB_DIR_BITS(gib_state) ( ( gib_state >> GIB_FLAG_BITS ) & ( ( 1 << GIB_DIR_BITS ) - 1 ) )
44 #define GET_GIB_SCALE_BITS(gib_state) ( ( gib_state >> ( GIB_FLAG_BITS + GIB_DIR_BITS ) ) & ( ( 1 << GIB_SCALE_BITS ) - 1 ) )
45 
46 // Less than GIB_TORSO_RIGHT_ARM_FLAG
47 #define IS_BODY_UNDAMAGED(gib_state) (gib_state < GIB_TORSO_RIGHT_ARM_FLAG)
48 #define IS_GIBBED(gib_state,gib_flag) (gib_state & gib_flag)
49 #define IS_UNDAMAGED(gib_state) (gib_state == 0)
50 #define GET_GIB_FLAG(old_gib_state,current_gib_state) (old_gib_state ^ current_gib_state)
51 #define SET_GIBBED(gib_state,gib_flag) (gib_state | GIB_FLAG_STRIPPED(gib_flag))
52 #define SET_GIBBED_PLAYER(gib_state,gib_flag,yawbits) (GIB_FLAG_STRIPPED(gib_state|gib_flag) + ( yawbits << GIB_FLAG_BITS ) )
53 #define SHOULD_SPAWN_GIBS(gib_state) (!(gib_state & GIB_TOGGLE_GIB_MODEL_FLAG))
54 
55 // Client/Server scriptbundle
56 #define GET_GIB_BUNDLE(_gib_def) struct::get_script_bundle("gibcharacterdef",_gib_def)
57 #define GET_GIB_BUNDLES struct::get_script_bundles("gibcharacterdef")