raze-gles/polymer/eduke32/package/sdk/samples/weapons.con.sample

1714 lines
39 KiB
Text
Raw Normal View History

// Note: This file has been directly converted from the EDuke32
// C source code to CON code, without any fixes or improvements.
// Further changes to player.c may or may not be reflected here.
/*
gamevar currentweapon 0 0 // (system) (pointer)
gamevar gs 0 0 // (system) (pointer)
gamevar looking_arc 0 0 // (system) (pointer)
gamevar gun_pos 0 0 // (system) (pointer)
gamevar weapon_xoffset 0 0 // (system) (pointer)
gamevar weaponcount 0 0 // (system) (pointer)
gamevar looking_angSR1 0 0 // (system) (pointer)
gamevar xdim 0 0 // (system) (pointer) (read only)
gamevar ydim 0 0 // (system) (pointer) (read only)
gamevar windowx1 0 0 // (system) (pointer) (read only)
gamevar windowx2 0 0 // (system) (pointer) (read only)
gamevar windowy1 0 0 // (system) (pointer) (read only)
gamevar windowy2 0 0 // (system) (pointer) (read only)
*/
gamevar hud_tilenum 0 1
gamevar hud_x 0 1
gamevar hud_y 0 1
gamevar hud_scale 65536 1
gamevar hud_angle 0 1
gamevar hud_shade 0 1
gamevar hud_pal 0 1
gamevar hud_orientation 0 1
gamevar hud_fistsign 0 1
gamevar hud_totaltime 0 1
gamevar hud_shadef 0 1
gamevar hud_shadef_crystal 0 1
gamevar hud_palf 0 1
// It is unfortunate that we need so many temporary gamevars.
gamevar hud_temp 0 1
gamevar hud_temp2 0 1
gamevar hud_temp3 0 1
gamevar hud_temp4 0 1
// The following temporary gamevars are internal to the G_Draw subroutines.
gamevar hud_int_temp 0 1
gamevar hud_int_temp2 0 1
gamevar hud_int_x 0 1
gamevar hud_int_y 0 1
gamevar hud_int_scale 0 1
gamevar hud_int_angle 0 1
gamevar hud_int_orientation 0 1
gamevar weapon_pos 0 1
gamevar weaponscale 0 1
gamevar playerid 0 1
// define ROTATESPRITE_MAX 2048
// preliminary functions
state G_DrawTilePal
setvarvar hud_int_angle hud_angle
setvarvar hud_int_orientation hud_orientation
ifvarand hud_orientation 4
addvar hud_int_angle 1024
orvar hud_int_orientation 2
rotatesprite hud_x hud_y hud_scale hud_int_angle hud_tilenum hud_shade hud_pal hud_int_orientation windowx1 windowy1 windowx2 windowy2
ends
state G_DrawTileScaled
setvarvar hud_int_x hud_x
setvarvar hud_int_y hud_y
setvarvar hud_int_scale hud_scale
setvarvar hud_int_angle hud_angle
setvarvar hud_int_orientation hud_orientation
shiftvarl hud_int_x 16
shiftvarl hud_int_y 16
setvar hud_int_temp 12582912 // 192<<16
switch currentweapon
case DEVISTATOR_WEAPON
case TRIPBOMB_WEAPON
setvar hud_int_temp 10485760 // 160<<16
break
default
ifvarand hud_orientation 262144
{
setvar hud_int_temp 10485760 // 160<<16
xorvar hud_int_orientation 262144
}
break
endswitch
ifvarand hud_orientation 4
addvar hud_int_angle 1024
/*
ifvarg rendermode 2
ifvarn usemodels 0
ifhasmodel hud_tilenum hud_pal
{
setvar hud_int_temp2 14680064 // 224<<16
mulvarvar hud_int_temp2 weaponscale
divvar hud_int_temp2 100
addvar hud_int_y 14680064 // 224<<16
subvarvar hud_int_y hud_int_temp2
}
*/
mulvarvar hud_int_x weaponscale
divvar hud_int_x 100
setvarvar hud_int_temp2 hud_int_temp
mulvarvar hud_int_temp2 weaponscale
divvar hud_int_temp2 100
subvarvar hud_int_temp hud_int_temp2
addvarvar hud_int_x hud_int_temp
mulvarvar hud_int_y weaponscale
divvar hud_int_y 100
setvar hud_int_temp 13107200 // 200<<16
setvarvar hud_int_temp2 hud_int_temp
mulvarvar hud_int_temp2 weaponscale
divvar hud_int_temp2 100
subvarvar hud_int_temp hud_int_temp2
addvarvar hud_int_y hud_int_temp
mulvarvar hud_int_scale weaponscale
divvar hud_int_scale 100
orvar hud_int_orientation 2050 // 2|2048
rotatesprite hud_int_x hud_int_y hud_int_scale hud_int_angle hud_tilenum hud_shade hud_pal hud_int_orientation windowx1 windowy1 windowx2 windowy2
ends
state G_DrawWeaponTile
// basic fading between player weapon shades
ifvarvarn hud_shade hud_shadef
{
setvar hud_int_temp 0
ifvare hud_pal 0 setvar hud_int_temp 1
ifvarvare hud_pal hud_palf setvar hud_int_temp 1
ifvare hud_int_temp 1
{
setvarvar hud_int_temp hud_shade
subvarvar hud_int_temp hud_shadef
setvarvar hud_int_temp2 hud_int_temp
shiftvarr hud_int_temp 2
addvarvar hud_shadef hud_int_temp
ifvare hud_int_temp 0
{
shiftvarr hud_int_temp2 1
addvarvar hud_shadef hud_int_temp2
ifvare hud_int_temp2 0
setvarvar hud_shadef hud_shade
}
}
}
else
setvarvar hud_shadef hud_shade
setvarvar hud_palf hud_pal
setvarvar hud_shade hud_shadef
state G_DrawTileScaled
ends
state G_DrawWeaponTile_crystal
// basic fading between player weapon shades
ifvarvarn hud_shade hud_shadef_crystal
{
setvarvar hud_int_temp hud_shade
subvarvar hud_int_temp hud_shadef_crystal
setvarvar hud_int_temp2 hud_int_temp
shiftvarr hud_int_temp 2
addvarvar hud_shadef_crystal hud_int_temp
ifvare hud_int_temp 0
{
shiftvarr hud_int_temp2 1
addvarvar hud_shadef_crystal hud_int_temp2
ifvare hud_int_temp2 0
setvarvar hud_shadef_crystal hud_shade
}
}
else
setvarvar hud_shadef_crystal hud_shade
setvarvar hud_shade hud_shadef_crystal
state G_DrawTileScaled
ends
// helper states
state reset_hud_weapon_x_coordinate
setvarvar hud_x weapon_xoffset
subvarvar hud_x looking_angSR1
ends
state reset_hud_weapon_y_coordinate
setvarvar hud_y looking_arc
subvarvar hud_y gun_pos
ends
state reset_hud_weapon_coordinates
state reset_hud_weapon_x_coordinate
state reset_hud_weapon_y_coordinate
ends
state determine_animation
getuserdef[THISACTOR].pause_on hud_temp
ifvarn hud_temp 0
setvar hud_temp 1
ifvarand player[THISACTOR].gm 1 // MODE_MENU
orvar hud_temp 1
getactor[playerid].pal hud_int_temp
ifvare hud_int_temp 1
orvar hud_temp 1
ends
// other EVENT_DISPLAYWEAPON code
state draw_shrunk_fists // Shrunk Running Fists
// common calculations
state reset_hud_weapon_x_coordinate
setvarvar hud_temp3 looking_arc
ifvare player[THISACTOR].jetpack_on 0
{
getactor[playerid].xvel hud_temp2
shiftvarr hud_temp2 3
addvar hud_temp3 32
subvarvar hud_temp3 hud_temp2
addvarvar hud_fistsign hud_temp2
}
// common calculations continued
setvarvar hud_temp2 hud_fistsign
sin hud_temp2 hud_temp2
setvarvar hud_temp4 hud_temp2
shiftvarr hud_temp2 10
shiftvarr hud_temp4 8
ifvarl hud_temp4 0
mulvar hud_temp4 -1
// right fist
guniqhudid 101
addvarvar hud_x hud_temp2
addvar hud_x 250
setvarvar hud_y hud_temp3
addvar hud_y 258
subvarvar hud_y hud_temp4
setvar hud_tilenum FIST
state G_DrawTilePal
// cleanup
subvar hud_x 250
// left fist
guniqhudid 102
subvarvar hud_x hud_temp2
addvar hud_x 40
setvarvar hud_y hud_temp3
addvar hud_y 200
addvarvar hud_y hud_temp4
orvar hud_orientation 4
state G_DrawTilePal
// cleanup
setvar hud_orientation 0
setvar hud_angle 0
guniqhudid 0
ends
state draw_quick_kick // Quick Kick
setvar hud_temp 14
subvarvar hud_temp player[THISACTOR].quick_kick
setvar hud_temp2 0
ifvarn hud_temp 14 setvar hud_temp2 1
ifvarn player[THISACTOR].last_quick_kick 0 setvar hud_temp2 1
ifvare hud_temp2 1
{
getplayer[THISACTOR].hudpal hud_pal
ifvare hud_pal 0
getplayer[THISACTOR].palookup hud_pal
guniqhudid 100
// common calculations
state reset_hud_weapon_coordinates
setvar hud_tilenum KNEE
setvar hud_orientation 262148 // o|4|262144
setvar hud_temp3 0
ifvarg hud_temp 5
ifvarl hud_temp 13
{
addvar hud_x 144 // 160-16
addvar hud_y 214
addvar hud_tilenum 1
state G_DrawTileScaled
setvar hud_temp3 1
}
ifvare hud_temp3 0
{
addvar hud_x 80
addvar hud_y 250
state G_DrawTileScaled
}
}
ends
// weapon code
state draw_kick // KNEE_WEAPON:
ifvarg weaponcount 0
{
guniqhudid currentweapon
state reset_hud_weapon_coordinates
ifvare hud_pal 0
getplayer[THISACTOR].palookup hud_pal
setvar hud_tilenum KNEE
setvar hud_temp3 0
ifvarg weaponcount 4
ifvarl weaponcount 10
{
addvar hud_x 160
addvar hud_y 214
addvar hud_tilenum 1
state G_DrawTileScaled
setvar hud_temp3 1
}
ifvare hud_temp3 0
{
addvar hud_x 220
addvar hud_y 250
state G_DrawTileScaled
}
}
ends
state draw_tripbomb // TRIPBOMB_WEAPON:
state reset_hud_weapon_coordinates
addvar hud_x 8
addvar hud_y 10
ifvarg weaponcount 6
{
setvarvar hud_temp weaponcount
shiftvarl hud_temp 3
addvarvar hud_y hud_temp
}
else ifvarl weaponcount 4
{
setvarvar hud_temp currentweapon
shiftvarl hud_temp 2
guniqhudid hud_temp
addvar hud_x 142
addvar hud_y 234
setvar hud_tilenum HANDHOLDINGLASER
addvar hud_tilenum 3
state G_DrawWeaponTile
// undo
subvar hud_x 142
subvar hud_y 234
}
// common to both hands
addvar hud_y 249
setvarvar hud_tilenum weaponcount
shiftvarr hud_tilenum 2
addvar hud_tilenum HANDHOLDINGLASER
// left hand
guniqhudid currentweapon
addvar hud_x 130
state G_DrawWeaponTile
// right hand
setvarvar hud_temp3 currentweapon
shiftvarl hud_temp3 1
guniqhudid hud_temp3
/*
// absolute method
subvar hud_x 130 // undo
addvar hud_x 152
*/
// relative method
addvar hud_x 22
orvar hud_orientation 4
state G_DrawWeaponTile
ifvarand hud_orientation 4
xorvar hud_orientation 4
guniqhudid 0
ends
state draw_rpg // RPG_WEAPON:
setvarvar hud_x weapon_xoffset
setvarvar hud_y looking_arc
shiftvarl hud_y 1
subvarvar hud_y gun_pos
setvarvar hud_temp weaponcount
shiftvarl hud_temp 7
addvar hud_temp 768
sin hud_temp hud_temp
shiftvarr hud_temp 11
subvarvar hud_x hud_temp
subvarvar hud_y hud_temp
orvar hud_orientation 512
addvar hud_x 164
addvar hud_y 176
ifvarg weaponcount 0
ifvarl weaponcount 8
{
setvarvar hud_tilenum weaponcount
shiftvarr hud_tilenum 1
addvar hud_tilenum RPGGUN
state G_DrawWeaponTile
}
setvar hud_tilenum RPGGUN
state G_DrawWeaponTile
ifvarand hud_orientation 512
xorvar hud_orientation 512
ends
state draw_shotgun // SHOTGUN_WEAPON:
state reset_hud_weapon_coordinates
subvar hud_x 8
switch weaponcount
case 1
case 2
setvarvar hud_temp4 currentweapon
shiftvarl hud_temp4 1
guniqhudid hud_temp4
addvar hud_x 168
addvar hud_y 201
setvar hud_shade -128
setvar hud_tilenum SHOTGUN
addvar hud_tilenum 2
state G_DrawWeaponTile
subvar hud_x 168
subvar hud_y 201
setvarvar hud_shade gs
case 0
case 6
case 7
case 8
guniqhudid currentweapon
addvar hud_x 146
addvar hud_y 202
setvar hud_tilenum SHOTGUN
state G_DrawWeaponTile
guniqhudid 0
break
case 3
case 4
case 5
case 9
case 10
case 11
case 12
ifvarg weaponcount 1
ifvarl weaponcount 5
{
addvar hud_y 40
addvar hud_x 20
setvarvar hud_temp4 currentweapon
shiftvarl hud_temp4 1
guniqhudid hud_temp4
addvar hud_x 178
addvar hud_y 194
setvar hud_shade -128
setvarvar hud_tilenum weaponcount
subvar hud_tilenum 1
shiftvarr hud_tilenum 1
addvar hud_tilenum SHOTGUN
addvar hud_tilenum 1
state G_DrawWeaponTile
subvar hud_x 178
subvar hud_y 194
setvarvar hud_shade gs
}
guniqhudid currentweapon
addvar hud_x 158
addvar hud_y 220
setvar hud_tilenum SHOTGUN
addvar hud_tilenum 3
state G_DrawWeaponTile
guniqhudid 0
break
case 13
case 14
case 15
case 28
case 29
case 30
guniqhudid currentweapon
addvar hud_x 198 // 32 + 166
addvar hud_y 210
setvar hud_tilenum SHOTGUN
addvar hud_tilenum 4
state G_DrawWeaponTile
guniqhudid 0
break
case 16
case 17
case 18
case 19
case 24
case 25
case 26
case 27
guniqhudid currentweapon
addvar hud_x 234 // 64 + 170
addvar hud_y 196
setvar hud_tilenum SHOTGUN
addvar hud_tilenum 5
state G_DrawWeaponTile
break
case 20
case 21
case 22
case 23
guniqhudid currentweapon
addvar hud_x 240 // 64 + 176
addvar hud_y 196
setvar hud_tilenum SHOTGUN
addvar hud_tilenum 6
state G_DrawWeaponTile
break
endswitch
ends
state draw_chaingun // CHAINGUN_WEAPON:
// hud_temp4 = FIREDELAY
state reset_hud_weapon_coordinates
ifvarg weaponcount 0
{
setvarvar hud_temp weaponcount
shiftvarl hud_temp 7
sin hud_temp hud_temp
shiftvarr hud_temp 12
addvarvar hud_y hud_temp
state determine_animation
ifvarn hud_temp 1
{
displayrand hud_temp
andvar hud_temp 3
mulvar hud_temp -1
addvar hud_temp 1
addvarvar hud_x hud_temp
}
}
// base
addvar hud_x 168
addvar hud_y 260
setvar hud_tilenum CHAINGUN
state G_DrawWeaponTile
subvar hud_x 168
subvar hud_y 260
switch weaponcount
case 0
addvar hud_x 178
addvar hud_y 233
addvar hud_tilenum 1 // relative
state G_DrawWeaponTile
break
default
state determine_animation
ifvarvarg weaponcount hud_temp4
ifvarvarl weaponcount hud_totaltime
{
// muzzleflash 1
ifvarn hud_temp 1
{
displayrand hud_temp3
andvar hud_temp3 7
}
else
setvar hud_temp3 0
addvar hud_x 136 // -4+140
addvarvar hud_x hud_temp3
setvarvar hud_temp2 weaponcount
shiftvarr hud_temp2 1
addvarvar hud_y hud_temp3
subvarvar hud_y hud_temp2
addvar hud_y 208
setvarvar hud_tilenum weaponcount
subvar hud_tilenum 4
divvar hud_tilenum 5
addvar hud_tilenum CHAINGUN
addvar hud_tilenum 5
state G_DrawWeaponTile
// cleanup
subvarvar hud_x hud_temp3
subvarvar hud_y hud_temp3
// muzzleflash 3
ifvarn hud_temp 1
{
displayrand hud_temp3
andvar hud_temp3 7
}
addvar hud_x 44 // relative
addvarvar hud_x hud_temp3
addvarvar hud_y hud_temp3
state G_DrawWeaponTile
// cleanup
subvar hud_x 180 // -4+140 + 44
subvar hud_y 208
subvarvar hud_x hud_temp3
subvarvar hud_y hud_temp3
addvarvar hud_y hud_temp2
}
subvar hud_totaltime 4
ifvarvarl weaponcount hud_totaltime
{
// muzzleflash 2
ifvarn hud_temp 1
{
displayrand hud_temp3
andvar hud_temp3 7
}
else
setvar hud_temp3 0
setvarvar hud_temp2 weaponcount
shiftvarr hud_temp2 1
addvarvar hud_x hud_temp3
addvar hud_x 158 // -4+162
addvarvar hud_y hud_temp3
subvarvar hud_y hud_temp2
addvar hud_y 208
setvarvar hud_tilenum weaponcount
subvar hud_tilenum 2
divvar hud_tilenum 5
addvar hud_tilenum CHAINGUN
addvar hud_tilenum 5
state G_DrawWeaponTile
// cleanup
subvarvar hud_x hud_temp3
subvar hud_x 158
subvarvar hud_y hud_temp3
addvarvar hud_y hud_temp2
subvar hud_y 208
// barrels (hot)
addvar hud_x 178
addvar hud_y 233
setvar hud_tilenum CHAINGUN
addvar hud_tilenum 1
addvarvar hud_tilenum hud_temp2
state G_DrawWeaponTile
}
else
{
// barrels
addvar hud_x 178
addvar hud_y 233
setvar hud_tilenum CHAINGUN
addvar hud_tilenum 1
state G_DrawWeaponTile
}
break
endswitch
ends
state draw_pistol // PISTOL_WEAPON:
// hud_temp4 = FIREDELAY
// hud_temp3 = RELOAD
state reset_hud_weapon_y_coordinate
setvar hud_tilenum FIRSTGUN
addvar hud_totaltime 1
ifvarvarl weaponcount hud_totaltime
{
setvar hud_x 183 // 195-12
addvarvar hud_x weapon_xoffset
subvarvar hud_x looking_angSR1
addvar hud_y 244
ifvarvare weaponcount hud_temp4
subvar hud_x 3
ifvarl weaponcount 3
addvarvar hud_tilenum weaponcount
setvar hud_orientation 2
guniqhudid currentweapon
state G_DrawWeaponTile
guniqhudid 0
}
else
{
orvar hud_orientation 512
subvarvar hud_temp3 weaponcount
ifvarg hud_temp3 17
{
guniqhudid currentweapon
setvar hud_x 194
subvarvar hud_x looking_angSR1
addvar hud_y 230
addvar hud_tilenum 4
state G_DrawWeaponTile
guniqhudid 0
}
else ifvarg hud_temp3 12
{
addvar hud_tilenum 6
setvarvar hud_temp weaponcount
shiftvarl hud_temp 3
setvar hud_x 244
subvarvar hud_x hud_temp
subvarvar hud_x looking_angSR1
setvarvar hud_temp2 weaponcount
shiftvarl hud_temp2 4
addvar hud_y 130
addvarvar hud_y hud_temp2
state G_DrawWeaponTile
subvar hud_y 130
subvarvar hud_y hud_temp2
subvar hud_tilenum 6
guniqhudid currentweapon
setvar hud_x 224
subvarvar hud_x looking_angSR1
addvar hud_y 220
addvar hud_tilenum 5
state G_DrawWeaponTile
guniqhudid 0
}
else ifvarg hud_temp3 7
{
addvar hud_tilenum 6
setvarvar hud_temp weaponcount
shiftvarl hud_temp 1
setvar hud_x 124
addvarvar hud_x hud_temp
subvarvar hud_x looking_angSR1
setvarvar hud_temp2 weaponcount
shiftvarl hud_temp2 3
addvar hud_y 430
subvarvar hud_y hud_temp2
state G_DrawWeaponTile
subvar hud_y 430
addvarvar hud_y hud_temp2
subvar hud_tilenum 6
guniqhudid currentweapon
setvar hud_x 224
subvarvar hud_x looking_angSR1
addvar hud_y 220
addvar hud_tilenum 5
state G_DrawWeaponTile
guniqhudid 0
}
else ifvarg hud_temp3 4
{
setvar hud_x 184
subvarvar hud_x looking_angSR1
addvar hud_y 235
addvar hud_tilenum 8
state G_DrawWeaponTile
subvar hud_y 235
subvar hud_tilenum 8
guniqhudid currentweapon
setvar hud_x 224
subvarvar hud_x looking_angSR1
addvar hud_y 210
addvar hud_tilenum 5
state G_DrawWeaponTile
guniqhudid 0
}
else ifvarg hud_temp3 2
{
setvar hud_x 164
subvarvar hud_x looking_angSR1
addvar hud_y 245
addvar hud_tilenum 8
state G_DrawWeaponTile
subvar hud_y 245
subvar hud_tilenum 8
guniqhudid currentweapon
setvar hud_x 224
subvarvar hud_x looking_angSR1
addvar hud_y 220
addvar hud_tilenum 5
state G_DrawWeaponTile
guniqhudid 0
}
else ifvarg hud_temp3 0
{
guniqhudid currentweapon
setvar hud_x 194
subvarvar hud_x looking_angSR1
addvar hud_y 235
addvar hud_tilenum 5
state G_DrawWeaponTile
guniqhudid 0
}
}
ends
state draw_pipebomb // HANDBOMB_WEAPON:
state reset_hud_weapon_coordinates
guniqhudid currentweapon
setvar hud_tilenum HANDTHROW
ifvarn weaponcount 0
{
ifvarvarl weaponcount hud_totaltime
{
ifvarl weaponcount 7
{
setvarvar hud_temp weaponcount
mulvar hud_temp 10
addvarvar hud_y hud_temp // D
}
else ifvarl weaponcount 12
{
setvarvar hud_temp weaponcount
subvar hud_temp 10
mulvar hud_temp 20
subvarvar hud_y hud_temp // U
}
else ifvarl weaponcount 20
{
setvarvar hud_temp weaponcount
subvar hud_temp 14
mulvar hud_temp 9
addvarvar hud_y hud_temp // D
}
addvar hud_x 190
addvar hud_y 250
switch weaponcount
/*
case 0
case 1
case 2
case 3
case 4
addvar hud_tilenum 0
break
*/
case 5
case 6
case 7
case 8
case 9
case 10
case 11
addvar hud_tilenum 1
break
case 12
case 13
case 14
case 15
case 16
case 17
case 18
case 19
case 20
addvar hud_tilenum 2
break
endswitch
state G_DrawWeaponTile
}
}
else
{
addvar hud_x 190
addvar hud_y 260
state G_DrawWeaponTile
}
guniqhudid 0
ends
state draw_detonator // HANDREMOTE_WEAPON:
state reset_hud_weapon_coordinates
guniqhudid currentweapon
addvar hud_x 102 // -48+150
addvar hud_y 258
setvar hud_tilenum HANDREMOTE
switch weaponcount
/*
case 0
case 6
case 7
case 8
case 9
case 10
addvar hud_tilenum 0
break
*/
case 1
case 2
case 4
case 5
addvar hud_tilenum 1
break
case 3
addvar hud_tilenum 2
break
endswitch
state G_DrawWeaponTile
guniqhudid 0
ends
state draw_devastator // DEVISTATOR_WEAPON:
state reset_hud_weapon_coordinates
// for guniqhudid
setvarvar hud_temp4 currentweapon
shiftvarl hud_temp4 1
setvar hud_tilenum DEVISTATOR
setvar hud_temp -1 // flag
ifvarg weaponcount 0
{
addvar hud_totaltime 1
ifvarvarl weaponcount hud_totaltime
{
setvar hud_temp 0
switch weaponcount
default
addlogvar weaponcount // debug
break
/*
case 0
case 6
setvar hud_temp 0
break
*/
case 1
case 5
setvar hud_temp 4
break
case 2
case 4
setvar hud_temp 12
break
case 3
setvar hud_temp 24
break
endswitch
setvarvar hud_temp2 weaponcount
shiftvarr hud_temp2 2
// sign function:
ifvare hud_temp2 0
setvar hud_temp3 0
else ifvarg hud_temp2 0
setvar hud_temp3 1
else ifvarl hud_temp2 0
setvar hud_temp3 -1
ifvarn player[THISACTOR].hbomb_hold_delay 0
{
guniqhudid currentweapon
setvarvar hud_temp2 hud_temp
shiftvarr hud_temp2 1
addvarvar hud_x hud_temp2
addvar hud_x 268
addvarvar hud_y hud_temp
addvar hud_y 238
addvarvar hud_tilenum hud_temp3
setvar hud_shade -32
state G_DrawWeaponTile
// cleanup
/*
subvar hud_x 268
subvarvar hud_x hud_temp2
subvar hud_y 238
subvarvar hud_y hud_temp
*/
state reset_hud_weapon_coordinates
subvarvar hud_tilenum hud_temp3
setvarvar hud_shade gs
guniqhudid hud_temp4
addvar hud_x 30
addvar hud_y 240
orvar hud_orientation 4
state G_DrawWeaponTile
ifvarand hud_orientation 4
xorvar hud_orientation 4
guniqhudid 0
}
else
{
guniqhudid hud_temp4
addvar hud_x 30
setvarvar hud_temp2 hud_temp
shiftvarr hud_temp2 1
subvarvar hud_x hud_temp2
addvar hud_y 240
addvarvar hud_y hud_temp
addvarvar hud_tilenum hud_temp3
setvar hud_shade -32
orvar hud_orientation 4
state G_DrawWeaponTile
// cleanup
/*
subvar hud_x 30
addvarvar hud_x hud_temp2
subvar hud_y 240
subvarvar hud_y hud_temp
*/
state reset_hud_weapon_coordinates
subvarvar hud_tilenum hud_temp3
setvarvar hud_shade gs
ifvarand hud_orientation 4
xorvar hud_orientation 4
guniqhudid currentweapon
addvar hud_x 268
addvar hud_y 238
state G_DrawWeaponTile
guniqhudid 0
}
break
}
}
ifvare hud_temp -1
{
guniqhudid currentweapon
addvar hud_x 268
addvar hud_y 238
state G_DrawWeaponTile
subvar hud_x 268
subvar hud_y 238
guniqhudid hud_temp4
addvar hud_x 30
addvar hud_y 240
orvar hud_orientation 4
state G_DrawWeaponTile
ifvarand hud_orientation 4
xorvar hud_orientation 4
guniqhudid 0
}
ends
state draw_freezer // FREEZE_WEAPON:
state reset_hud_weapon_coordinates
setvar hud_tilenum FREEZE
orvar hud_orientation 512
setvar hud_temp3 0
ifvarg weaponcount 0
{
addvar hud_totaltime 1
ifvarvarl weaponcount hud_totaltime
{
state determine_animation
ifvarn hud_temp 1
{
displayrand hud_temp
andvar hud_temp 3
addvarvar hud_x hud_temp
displayrand hud_temp
andvar hud_temp 3
addvarvar hud_y hud_temp
}
guniqhudid 0
addvar hud_x 210
addvar hud_y 277 // 16 + 261
addvar hud_tilenum 2
setvar hud_shade -32
state G_DrawWeaponTile
guniqhudid currentweapon
subvar hud_y 26 // relative
setvarvar hud_temp weaponcount
modvar hud_temp 6
divvar hud_temp 2
addvar hud_tilenum 1
addvarvar hud_tilenum hud_temp
state G_DrawWeaponTile
guniqhudid 0
setvar hud_temp3 1
}
}
ifvare hud_temp3 0
{
guniqhudid currentweapon
addvar hud_x 210
addvar hud_y 261
state G_DrawWeaponTile
guniqhudid 0
}
ifvarand hud_orientation 512
xorvar hud_orientation 512
ends
state draw_expander // GROW_WEAPON:
state reset_hud_weapon_coordinates
addvar hud_x 28
addvar hud_y 18
setvarvar hud_temp4 hud_pal
setvar hud_pal 2
setvarvar hud_temp3 currentweapon
shiftvarl hud_temp3 1
setvar hud_temp2 0
ifvarg weaponcount 0
{
ifvarvarl weaponcount hud_totaltime
{
state determine_animation
ifvarn hud_temp 1
{
displayrand hud_temp
andvar hud_temp 3
addvarvar hud_x hud_temp
displayrand hud_temp
andvar hud_temp 3
subvarvar hud_y hud_temp
}
addvar hud_x 184
addvar hud_y 240
setvarvar hud_tilenum weaponcount
andvar hud_tilenum 3
addvar hud_tilenum SHRINKER
addvar hud_tilenum 3
setvar hud_shade -32
guniqhudid hud_temp3
state G_DrawWeaponTile_crystal
guniqhudid currentweapon
addvar hud_x 4
setvar hud_tilenum SHRINKER
subvar hud_tilenum 1
setvarvar hud_shade gs
setvarvar hud_pal hud_temp4
state G_DrawWeaponTile
guniqhudid 0
setvar hud_temp2 1
}
}
ifvare hud_temp2 0
{
addvar hud_x 184
addvar hud_y 240
setvar hud_tilenum SHRINKER
addvar hud_tilenum 2
getplayer[THISACTOR].random_club_frame hud_shade
sin hud_shade hud_shade
shiftvarr hud_shade 10
mulvar hud_shade -1
addvar hud_shade 16
guniqhudid hud_temp3
state G_DrawWeaponTile_crystal
guniqhudid currentweapon
addvar hud_x 4
setvar hud_tilenum SHRINKER
subvar hud_tilenum 2
setvarvar hud_shade gs
setvarvar hud_pal hud_temp4
state G_DrawWeaponTile
guniqhudid 0
}
ends
state draw_shrinker // SHRINKER_WEAPON:
state reset_hud_weapon_coordinates
addvar hud_x 28
addvar hud_y 18
setvarvar hud_temp4 hud_pal
setvar hud_pal 0
setvarvar hud_temp3 currentweapon
shiftvarl hud_temp3 1
setvar hud_temp2 0
ifvarg weaponcount 0
{
ifvarvarl weaponcount hud_totaltime
{
state determine_animation
ifvarn hud_temp 1
{
displayrand hud_temp
andvar hud_temp 3
addvarvar hud_x hud_temp
displayrand hud_temp
andvar hud_temp 3
subvarvar hud_y hud_temp
}
addvar hud_x 184
addvar hud_y 240
setvarvar hud_tilenum weaponcount
andvar hud_tilenum 3
addvar hud_tilenum SHRINKER
addvar hud_tilenum 3
setvar hud_shade -32
guniqhudid hud_temp3
state G_DrawWeaponTile_crystal
guniqhudid currentweapon
addvar hud_x 4
setvar hud_tilenum SHRINKER
addvar hud_tilenum 1
setvarvar hud_shade gs
setvarvar hud_pal hud_temp4
state G_DrawWeaponTile
guniqhudid 0
setvar hud_temp2 1
}
}
ifvare hud_temp2 0
{
addvar hud_x 184
addvar hud_y 240
setvar hud_tilenum SHRINKER
addvar hud_tilenum 2
getplayer[THISACTOR].random_club_frame hud_shade
sin hud_shade hud_shade
shiftvarr hud_shade 10
mulvar hud_shade -1
addvar hud_shade 16
guniqhudid hud_temp3
state G_DrawWeaponTile_crystal
guniqhudid currentweapon
addvar hud_x 4
setvar hud_tilenum SHRINKER
setvarvar hud_shade gs
setvarvar hud_pal hud_temp4
state G_DrawWeaponTile
guniqhudid 0
}
ends
// framework
onevent EVENT_DISPLAYWEAPON // P_DisplayWeapon
getplayer[THISACTOR].weapon_pos weapon_pos
getuserdef[THISACTOR].weaponscale weaponscale
getplayer[THISACTOR].i playerid
getuserdef[THISACTOR].drawweapon hud_temp
ifvare hud_temp 2 // weapon icons
{
setvar hud_tilenum -1
switch currentweapon
case PISTOL_WEAPON
setvar hud_tilenum FIRSTGUNSPRITE
break
case CHAINGUN_WEAPON
setvar hud_tilenum CHAINGUNSPRITE
break
case RPG_WEAPON
setvar hud_tilenum RPGSPRITE
break
case FREEZE_WEAPON
setvar hud_tilenum FREEZESPRITE
break
case SHRINKER_WEAPON
setvar hud_tilenum SHRINKERSPRITE
break
case GROW_WEAPON
setvar hud_tilenum GROWSPRITEICON
break
case DEVISTATOR_WEAPON
setvar hud_tilenum DEVISTATORSPRITE
break
case TRIPBOMB_WEAPON
setvar hud_tilenum TRIPBOMBSPRITE
break
case HANDREMOTE_WEAPON
case HANDBOMB_WEAPON
setvar hud_tilenum HEAVYHBOMB
break
case SHOTGUN_WEAPON
setvar hud_tilenum SHOTGUNSPRITE
break
case KNEE_WEAPON
break
default
addlogvar currentweapon
break
endswitch
ifvarn hud_tilenum -1
{
setvar hud_x 160
setvarvar hud_y weapon_pos
mulvarvar hud_y weapon_pos
addvar hud_y 180
setvar hud_scale 65536
getuserdef[THISACTOR].statusbarscale hud_temp2
mulvarvar hud_scale hud_temp2
divvar hud_scale 100
rotatesprite hud_x hud_y hud_scale 0 hud_tilenum 0 0 2 windowx1 windowy1 windowx2 windowy2
}
setvar RETURN -1
}
ifvarn hud_temp 1 break // If we are not displaying the actual HUD weapons, stop processing.
// these gamevars can get changed in the states up above, so reset them now.
setvar hud_scale 65536
setvar hud_orientation 0
setvar hud_angle 0
setvarvar hud_shade gs
state draw_quick_kick
// cleanup
setvar hud_orientation 0
setvar hud_angle 0
guniqhudid 0
getplayer[THISACTOR].hudpal hud_pal
getactor[playerid].xrepeat hud_temp
ifvarl hud_temp 40
state draw_shrunk_fists
else
{
switch currentweapon
case KNEE_WEAPON
setvarvar hud_totaltime WEAPON0_TOTALTIME
state draw_kick
break
case TRIPBOMB_WEAPON
setvarvar hud_totaltime WEAPON8_TOTALTIME
state draw_tripbomb
break
case RPG_WEAPON
setvarvar hud_totaltime WEAPON4_TOTALTIME
state draw_rpg
break
case SHOTGUN_WEAPON
setvarvar hud_totaltime WEAPON2_TOTALTIME
state draw_shotgun
break
case CHAINGUN_WEAPON
setvarvar hud_temp4 WEAPON3_FIREDELAY
setvarvar hud_totaltime WEAPON3_TOTALTIME
state draw_chaingun
break
case PISTOL_WEAPON
setvarvar hud_temp3 WEAPON1_RELOAD
setvarvar hud_temp4 WEAPON1_FIREDELAY
setvarvar hud_totaltime WEAPON1_TOTALTIME
state draw_pistol
break
case HANDBOMB_WEAPON
setvarvar hud_totaltime WEAPON5_TOTALTIME
state draw_pipebomb
break
case HANDREMOTE_WEAPON
setvarvar hud_totaltime WEAPON10_TOTALTIME
state draw_detonator
break
case DEVISTATOR_WEAPON
setvarvar hud_totaltime WEAPON7_TOTALTIME
state draw_devastator
break
case FREEZE_WEAPON
setvarvar hud_totaltime WEAPON9_TOTALTIME
state draw_freezer
break
case GROW_WEAPON
setvarvar hud_totaltime WEAPON11_TOTALTIME
state draw_expander
break
case SHRINKER_WEAPON
setvarvar hud_totaltime WEAPON6_TOTALTIME
state draw_shrinker
break
default
addlogvar currentweapon
break
endswitch
// cleanup
setvar hud_orientation 0
setvar hud_angle 0
guniqhudid 0
}
setvar RETURN -1
endevent