Merge branch 'devel' into experimental
24
Readme.md
|
|
@ -12,7 +12,7 @@ This mod requires GZDoom 4.1 or later.
|
||||||
- Redeemer (slot 0)
|
- Redeemer (slot 0)
|
||||||
- 6 Degrees of Freedom movement with manual tilt (reload/zoom buttons)
|
- 6 Degrees of Freedom movement with manual tilt (reload/zoom buttons)
|
||||||
- GES Biorifle (slot 3)
|
- GES Biorifle (slot 3)
|
||||||
- Pulsegun (slot 5) (with beta animations)
|
- Pulsegun (slot 5) (with optional beta reload)
|
||||||
- Health
|
- Health
|
||||||
- Big Keg O' Health (soulsphere)
|
- Big Keg O' Health (soulsphere)
|
||||||
- Beta Super Health (medkit)
|
- Beta Super Health (medkit)
|
||||||
|
|
@ -31,12 +31,16 @@ This mod requires GZDoom 4.1 or later.
|
||||||
- Computer Map (computer area map)
|
- Computer Map (computer area map)
|
||||||
- Searchlight (light amplification visor)
|
- Searchlight (light amplification visor)
|
||||||
- Enhanced Shock Rifle (slot 4, limited ammo, invulnerability sphere)
|
- Enhanced Shock Rifle (slot 4, limited ammo, invulnerability sphere)
|
||||||
|
- Instagib DM mode
|
||||||
- UT HUD
|
- UT HUD
|
||||||
- Impact Hammer (slot 1)
|
- Impact Hammer (slot 1)
|
||||||
- Chainsaw (slot 1)
|
- Chainsaw (slot 1)
|
||||||
|
- Option to make chainsaw use ammo (random drop from enemies killed without it)
|
||||||
- Translocator (slot 1)
|
- Translocator (slot 1)
|
||||||
|
- Option to make it use regenerating ammo like in UT2k4
|
||||||
- Enforcer (slot 2)
|
- Enforcer (slot 2)
|
||||||
- Dual Enforcers (slot 2)
|
- Dual Enforcers (slot 2)
|
||||||
|
- Restored reloading (optional)
|
||||||
- Ripper (slot 6)
|
- Ripper (slot 6)
|
||||||
- Jump Boots (radsuit, has "iron boots" powerup effect to compensate)
|
- Jump Boots (radsuit, has "iron boots" powerup effect to compensate)
|
||||||
- Minigun (slot 7)
|
- Minigun (slot 7)
|
||||||
|
|
@ -48,22 +52,22 @@ This mod requires GZDoom 4.1 or later.
|
||||||
- Visual recoil affecting aim (improved A_Swing from Soundless Mound, can be
|
- Visual recoil affecting aim (improved A_Swing from Soundless Mound, can be
|
||||||
toggled)
|
toggled)
|
||||||
- UT-like weapon dropping style
|
- UT-like weapon dropping style
|
||||||
- UT player classes (sound only, no models yet)
|
- UT player classes
|
||||||
- Heretic compatibility
|
- Heretic compatibility
|
||||||
- Spanish localization
|
- Spanish localization
|
||||||
|
- UT gore system (toggleable)
|
||||||
|
|
||||||
## In progress
|
## In progress
|
||||||
|
|
||||||
- General polishing, bugfixing and rebalancing
|
- General polishing, bugfixing and rebalancing
|
||||||
- Add some more effects
|
- Add some more effects
|
||||||
- Lava/Slime footstep sounds?
|
- Lava/Slime footstep sounds?
|
||||||
- UT gore system (toggleable)
|
- French, Italian and German localizations (I'll need help for these)
|
||||||
- French localization
|
|
||||||
- Italian localization
|
|
||||||
|
|
||||||
## Ideas
|
## Ideas
|
||||||
|
|
||||||
- Chainsaw balancing (maybe give it ammo?)
|
- Figure out some alternative invincibility item. Kinda like how I improvised
|
||||||
|
the backpack replacement.
|
||||||
|
|
||||||
## Future plans
|
## Future plans
|
||||||
|
|
||||||
|
|
@ -72,14 +76,14 @@ This mod requires GZDoom 4.1 or later.
|
||||||
- Recenter the backpack mesh (it was a complete hack job to begin with)
|
- Recenter the backpack mesh (it was a complete hack job to begin with)
|
||||||
- Add ammo counters to Pulsegun, Minigun, Flak Cannon and Rocket Launcher once
|
- Add ammo counters to Pulsegun, Minigun, Flak Cannon and Rocket Launcher once
|
||||||
scripted textures are implemented
|
scripted textures are implemented
|
||||||
- Add player models once GZDoom gets a well deserved model animation system
|
- Redo player models once GZDoom gets a well deserved model animation system
|
||||||
overhaul (at the moment this would require a monumental amount of work in
|
overhaul (mainly to clean up the current, messy implementation of this)
|
||||||
the current state-tied system)
|
|
||||||
- Add weapon attachment support to player models when that is also added in
|
- Add weapon attachment support to player models when that is also added in
|
||||||
|
(at the moment all player models have an integrated placeholder weapon)
|
||||||
- Unreal 1 weapons mod and maybe also a monsters mod
|
- Unreal 1 weapons mod and maybe also a monsters mod
|
||||||
- Port some of my UT weapon mods (and maybe also some of my personal faves by
|
- Port some of my UT weapon mods (and maybe also some of my personal faves by
|
||||||
others, such as Psi Weapon Dreams)
|
others, such as Psi Weapon Dreams)
|
||||||
- Hexen compatibility ???
|
- Hexen/Strife compatibility ???
|
||||||
- Relics?
|
- Relics?
|
||||||
|
|
||||||
## Known bugs
|
## Known bugs
|
||||||
|
|
|
||||||
BIN
brightmaps/boss3.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
brightmaps/boss4.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,9 +0,0 @@
|
||||||
GameInfo
|
|
||||||
{
|
|
||||||
AddEventHandlers = "RedeemerHUDHandler", "UTMainHandler"
|
|
||||||
PlayerClasses = "UTPlayerHereticCompatTMale1", "UTPlayerHereticCompatTMale2", "UTPlayerHereticCompatTFemale1", "UTPlayerHereticCompatTFemale2", "UTPlayerHereticCompatTBoss"
|
|
||||||
StatusBarClass = "UTHud"
|
|
||||||
BackpackType = "UTBackpack"
|
|
||||||
BorderFlat = "TEMPBG"
|
|
||||||
Border = 0,0,"","","","","","","",""
|
|
||||||
}
|
|
||||||
12
gldefs.txt
|
|
@ -27,6 +27,18 @@ HardwareShader Texture "models/bossheadT.png"
|
||||||
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
||||||
Texture "brighttex" "brightmaps/bossheadT.png"
|
Texture "brighttex" "brightmaps/bossheadT.png"
|
||||||
}
|
}
|
||||||
|
Brightmap Texture "models/bossgibT.png"
|
||||||
|
{
|
||||||
|
Map "brightmaps/bossheadT.png"
|
||||||
|
}
|
||||||
|
Brightmap Texture "models/boss3.png"
|
||||||
|
{
|
||||||
|
Map "brightmaps/boss3.png"
|
||||||
|
}
|
||||||
|
Brightmap Texture "models/boss4.png"
|
||||||
|
{
|
||||||
|
Map "brightmaps/boss4.png"
|
||||||
|
}
|
||||||
HardwareShader Texture "models/JBRifle2.png"
|
HardwareShader Texture "models/JBRifle2.png"
|
||||||
{
|
{
|
||||||
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
||||||
|
|
|
||||||
13
keyconf.txt
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
addkeysection "$FLAK_TAUNTS" DoomTournament
|
||||||
|
addmenukey "$FLAK_TAUNT4" taunt4
|
||||||
|
addmenukey "$FLAK_TAUNT1" taunt1
|
||||||
|
addmenukey "$FLAK_TAUNT2" taunt2
|
||||||
|
addmenukey "$FLAK_TAUNT3" taunt3
|
||||||
|
alias taunt4 "netevent uttaunt 4"
|
||||||
|
alias taunt1 "netevent uttaunt 1"
|
||||||
|
alias taunt2 "netevent uttaunt 2"
|
||||||
|
alias taunt3 "netevent uttaunt 3"
|
||||||
|
defaultbind H taunt4
|
||||||
|
defaultbind J taunt1
|
||||||
|
defaultbind K taunt2
|
||||||
|
defaultbind L taunt3
|
||||||
10
language.txt
|
|
@ -217,6 +217,11 @@ FLAK_UCORPS = "[WIP] Corpses take damage";
|
||||||
FLAK_DTEST = "Edit Kinsie's test map";
|
FLAK_DTEST = "Edit Kinsie's test map";
|
||||||
FLAK_FSTRENGTH = "Screen flash strength";
|
FLAK_FSTRENGTH = "Screen flash strength";
|
||||||
FLAK_SAWAMMO = "Chainsaw uses ammo";
|
FLAK_SAWAMMO = "Chainsaw uses ammo";
|
||||||
|
FLAK_TAUNTS = "Taunts";
|
||||||
|
FLAK_TAUNT1 = "Victory 1";
|
||||||
|
FLAK_TAUNT2 = "Victory 2";
|
||||||
|
FLAK_TAUNT3 = "Wave";
|
||||||
|
FLAK_TAUNT4 = "Pelvic Thrust";
|
||||||
|
|
||||||
[es esm esn esg esc esa esd esv eso esr ess esf esl esy esz esb ese esh esi esu]
|
[es esm esn esg esc esa esd esv eso esr ess esf esl esy esz esb ese esh esi esu]
|
||||||
/* Obituaries */
|
/* Obituaries */
|
||||||
|
|
@ -421,6 +426,11 @@ FLAK_UCORPS = "[WIP] Los cadáveres reciben daño";
|
||||||
FLAK_DTEST = "Editar mapa de pruebas de Kinsie";
|
FLAK_DTEST = "Editar mapa de pruebas de Kinsie";
|
||||||
FLAK_FSTRENGTH = "Intensidad de destellos en pantalla";
|
FLAK_FSTRENGTH = "Intensidad de destellos en pantalla";
|
||||||
FLAK_SAWAMMO = "La motosierra usa combustible";
|
FLAK_SAWAMMO = "La motosierra usa combustible";
|
||||||
|
FLAK_TAUNTS = "Provocaciones";
|
||||||
|
FLAK_TAUNT1 = "Victoria 1";
|
||||||
|
FLAK_TAUNT2 = "Victoria 2";
|
||||||
|
FLAK_TAUNT3 = "Adiós";
|
||||||
|
FLAK_TAUNT4 = "Movimiento de pelvis";
|
||||||
|
|
||||||
[fr]
|
[fr]
|
||||||
|
|
||||||
|
|
|
||||||
308
modeldef.boss
Normal file
|
|
@ -0,0 +1,308 @@
|
||||||
|
Model "UTPlayerTBoss"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "Boss_d.3d"
|
||||||
|
SurfaceSkin 0 0 "boss1.png"
|
||||||
|
SurfaceSkin 0 1 "boss2.png"
|
||||||
|
SurfaceSkin 0 2 "boss3.png"
|
||||||
|
SurfaceSkin 0 3 "boss4.png"
|
||||||
|
SurfaceSkin 0 5 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset 0 -5 29
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
IGNORETRANSLATION // I'll figure out eventually how to make color changes work, but for now this is it
|
||||||
|
// Still
|
||||||
|
FrameIndex PLAY A 0 373
|
||||||
|
FrameIndex PLAY B 0 374
|
||||||
|
FrameIndex PLAY C 0 375
|
||||||
|
FrameIndex PLAY D 0 376
|
||||||
|
FrameIndex PLAY E 0 377
|
||||||
|
FrameIndex PLAY F 0 378
|
||||||
|
FrameIndex PLAY G 0 379
|
||||||
|
// Still (Air)
|
||||||
|
FrameIndex PLYA A 0 91
|
||||||
|
// Land
|
||||||
|
FrameIndex PLYL A 0 93
|
||||||
|
// Still (Swim)
|
||||||
|
FrameIndex PLYS A 0 235
|
||||||
|
FrameIndex PLYS B 0 237
|
||||||
|
FrameIndex PLYS C 0 239
|
||||||
|
FrameIndex PLYS D 0 241
|
||||||
|
FrameIndex PLYS E 0 243
|
||||||
|
FrameIndex PLYS F 0 245
|
||||||
|
FrameIndex PLYS G 0 247
|
||||||
|
// Run
|
||||||
|
FrameIndex PLAY H 0 137
|
||||||
|
FrameIndex PLAY I 0 139
|
||||||
|
FrameIndex PLAY J 0 141
|
||||||
|
FrameIndex PLAY K 0 143
|
||||||
|
FrameIndex PLAY L 0 145
|
||||||
|
// Run (Swim)
|
||||||
|
FrameIndex PLYS H 0 205
|
||||||
|
FrameIndex PLYS I 0 208
|
||||||
|
FrameIndex PLYS J 0 211
|
||||||
|
FrameIndex PLYS K 0 214
|
||||||
|
FrameIndex PLYS L 0 217
|
||||||
|
// Fire (Loop)
|
||||||
|
FrameIndex PLAY R 0 177
|
||||||
|
FrameIndex PLAY S 0 179
|
||||||
|
FrameIndex PLAY T 0 181
|
||||||
|
FrameIndex PLAY U 0 183
|
||||||
|
FrameIndex PLAY V 0 185
|
||||||
|
// Fire (Single)
|
||||||
|
FrameIndex PLAY M 0 187
|
||||||
|
FrameIndex PLAY N 0 189
|
||||||
|
FrameIndex PLAY O 0 191
|
||||||
|
FrameIndex PLAY P 0 193
|
||||||
|
FrameIndex PLAY Q 0 195
|
||||||
|
// Pain
|
||||||
|
FrameIndex PLAY W 0 0 // gut
|
||||||
|
FrameIndex PLAY X 0 90 // head
|
||||||
|
FrameIndex PLAY Y 0 95 // left
|
||||||
|
FrameIndex PLAY Z 0 136 // right
|
||||||
|
// Reload
|
||||||
|
FrameIndex PLYR A 0 400
|
||||||
|
FrameIndex PLYR B 0 401
|
||||||
|
FrameIndex PLYR C 0 402
|
||||||
|
FrameIndex PLYR D 0 403
|
||||||
|
FrameIndex PLYR E 0 404
|
||||||
|
FrameIndex PLYR F 0 405
|
||||||
|
FrameIndex PLYR G 0 406
|
||||||
|
FrameIndex PLYR H 0 407
|
||||||
|
// Crouch
|
||||||
|
FrameIndex PLYC A 0 60
|
||||||
|
FrameIndex PLYC B 0 63
|
||||||
|
FrameIndex PLYC C 0 66
|
||||||
|
FrameIndex PLYC D 0 69
|
||||||
|
FrameIndex PLYC E 0 72
|
||||||
|
// Turn
|
||||||
|
FrameIndex PLYT A 0 298
|
||||||
|
FrameIndex PLYT B 0 299
|
||||||
|
// Dead1 (Backflip)
|
||||||
|
FrameIndex PLD1 A 0 525
|
||||||
|
FrameIndex PLD1 B 0 526
|
||||||
|
FrameIndex PLD1 C 0 527
|
||||||
|
FrameIndex PLD1 D 0 528
|
||||||
|
FrameIndex PLD1 E 0 529
|
||||||
|
FrameIndex PLD1 F 0 530
|
||||||
|
FrameIndex PLD1 G 0 531
|
||||||
|
FrameIndex PLD1 H 0 532
|
||||||
|
FrameIndex PLD1 I 0 533
|
||||||
|
FrameIndex PLD1 J 0 534
|
||||||
|
FrameIndex PLD1 K 0 535
|
||||||
|
FrameIndex PLD1 L 0 536
|
||||||
|
FrameIndex PLD1 M 0 537
|
||||||
|
// Dead2 (Falling back)
|
||||||
|
FrameIndex PLD2 A 0 538
|
||||||
|
FrameIndex PLD2 B 0 539
|
||||||
|
FrameIndex PLD2 C 0 540
|
||||||
|
FrameIndex PLD2 D 0 541
|
||||||
|
FrameIndex PLD2 E 0 542
|
||||||
|
FrameIndex PLD2 F 0 543
|
||||||
|
FrameIndex PLD2 G 0 544
|
||||||
|
FrameIndex PLD2 H 0 545
|
||||||
|
FrameIndex PLD2 I 0 546
|
||||||
|
FrameIndex PLD2 J 0 547
|
||||||
|
FrameIndex PLD2 K 0 548
|
||||||
|
FrameIndex PLD2 L 0 549
|
||||||
|
FrameIndex PLD2 M 0 550
|
||||||
|
FrameIndex PLD2 N 0 551
|
||||||
|
FrameIndex PLD2 O 0 552
|
||||||
|
FrameIndex PLD2 P 0 553
|
||||||
|
// Dead3 (Falling forward)
|
||||||
|
FrameIndex PLD3 A 0 554
|
||||||
|
FrameIndex PLD3 B 0 555
|
||||||
|
FrameIndex PLD3 C 0 556
|
||||||
|
FrameIndex PLD3 D 0 557
|
||||||
|
FrameIndex PLD3 E 0 558
|
||||||
|
FrameIndex PLD3 F 0 559
|
||||||
|
FrameIndex PLD3 G 0 560
|
||||||
|
FrameIndex PLD3 H 0 561
|
||||||
|
FrameIndex PLD3 I 0 562
|
||||||
|
FrameIndex PLD3 J 0 563
|
||||||
|
FrameIndex PLD3 K 0 564
|
||||||
|
FrameIndex PLD3 L 0 565
|
||||||
|
FrameIndex PLD3 M 0 566
|
||||||
|
// Dead4 (Decapitate)
|
||||||
|
FrameIndex PLD4 A 0 567
|
||||||
|
FrameIndex PLD4 B 0 568
|
||||||
|
FrameIndex PLD4 C 0 569
|
||||||
|
FrameIndex PLD4 D 0 570
|
||||||
|
FrameIndex PLD4 E 0 571
|
||||||
|
FrameIndex PLD4 F 0 572
|
||||||
|
FrameIndex PLD4 G 0 573
|
||||||
|
FrameIndex PLD4 H 0 574
|
||||||
|
FrameIndex PLD4 I 0 575
|
||||||
|
FrameIndex PLD4 J 0 576
|
||||||
|
FrameIndex PLD4 K 0 577
|
||||||
|
FrameIndex PLD4 L 0 578
|
||||||
|
FrameIndex PLD4 M 0 579
|
||||||
|
FrameIndex PLD4 N 0 580
|
||||||
|
FrameIndex PLD4 O 0 581
|
||||||
|
FrameIndex PLD4 P 0 582
|
||||||
|
// Dead7 (Headshot)
|
||||||
|
FrameIndex PLD7 A 0 583
|
||||||
|
FrameIndex PLD7 B 0 584
|
||||||
|
FrameIndex PLD7 C 0 585
|
||||||
|
FrameIndex PLD7 D 0 586
|
||||||
|
FrameIndex PLD7 E 0 587
|
||||||
|
FrameIndex PLD7 F 0 588
|
||||||
|
FrameIndex PLD7 G 0 589
|
||||||
|
FrameIndex PLD7 H 0 590
|
||||||
|
FrameIndex PLD7 I 0 591
|
||||||
|
FrameIndex PLD7 J 0 592
|
||||||
|
FrameIndex PLD7 K 0 593
|
||||||
|
FrameIndex PLD7 L 0 594
|
||||||
|
FrameIndex PLD7 M 0 595
|
||||||
|
FrameIndex PLD7 N 0 596
|
||||||
|
FrameIndex PLD7 O 0 597
|
||||||
|
FrameIndex PLD7 P 0 598
|
||||||
|
FrameIndex PLD7 Q 0 599
|
||||||
|
FrameIndex PLD7 R 0 600
|
||||||
|
FrameIndex PLD7 S 0 601
|
||||||
|
FrameIndex PLD7 T 0 602
|
||||||
|
FrameIndex PLD7 U 0 603
|
||||||
|
// Dead8 (Stomach)
|
||||||
|
FrameIndex PLD8 A 0 604
|
||||||
|
FrameIndex PLD8 B 0 605
|
||||||
|
FrameIndex PLD8 C 0 606
|
||||||
|
FrameIndex PLD8 D 0 607
|
||||||
|
FrameIndex PLD8 E 0 608
|
||||||
|
FrameIndex PLD8 F 0 609
|
||||||
|
FrameIndex PLD8 G 0 610
|
||||||
|
FrameIndex PLD8 H 0 611
|
||||||
|
FrameIndex PLD8 I 0 612
|
||||||
|
FrameIndex PLD8 J 0 613
|
||||||
|
FrameIndex PLD8 K 0 614
|
||||||
|
FrameIndex PLD8 L 0 615
|
||||||
|
FrameIndex PLD8 M 0 616
|
||||||
|
FrameIndex PLD8 N 0 617
|
||||||
|
FrameIndex PLD8 O 0 618
|
||||||
|
FrameIndex PLD8 P 0 619
|
||||||
|
FrameIndex PLD8 Q 0 620
|
||||||
|
FrameIndex PLD8 R 0 621
|
||||||
|
// Dead9 (Zapped)
|
||||||
|
FrameIndex PLD9 A 0 622
|
||||||
|
FrameIndex PLD9 B 0 623
|
||||||
|
FrameIndex PLD9 C 0 624
|
||||||
|
FrameIndex PLD9 D 0 625
|
||||||
|
FrameIndex PLD9 E 0 626
|
||||||
|
FrameIndex PLD9 F 0 627
|
||||||
|
FrameIndex PLD9 G 0 628
|
||||||
|
FrameIndex PLD9 H 0 629
|
||||||
|
FrameIndex PLD9 I 0 630
|
||||||
|
FrameIndex PLD9 J 0 631
|
||||||
|
FrameIndex PLD9 K 0 632
|
||||||
|
FrameIndex PLD9 L 0 633
|
||||||
|
FrameIndex PLD9 M 0 634
|
||||||
|
FrameIndex PLD9 N 0 635
|
||||||
|
FrameIndex PLD9 O 0 636
|
||||||
|
FrameIndex PLD9 P 0 637
|
||||||
|
FrameIndex PLD9 Q 0 638
|
||||||
|
FrameIndex PLD9 R 0 639
|
||||||
|
FrameIndex PLD9 S 0 640
|
||||||
|
FrameIndex PLD9 T 0 641
|
||||||
|
//
|
||||||
|
FrameIndex PD9B A 0 642
|
||||||
|
FrameIndex PD9B B 0 643
|
||||||
|
FrameIndex PD9B C 0 644
|
||||||
|
FrameIndex PD9B D 0 645
|
||||||
|
FrameIndex PD9B E 0 646
|
||||||
|
FrameIndex PD9B F 0 647
|
||||||
|
FrameIndex PD9B G 0 648
|
||||||
|
FrameIndex PD9B H 0 649
|
||||||
|
FrameIndex PD9B I 0 650
|
||||||
|
FrameIndex PD9B J 0 651
|
||||||
|
// Dead11 (Spinning)
|
||||||
|
FrameIndex PD11 A 0 652
|
||||||
|
FrameIndex PD11 B 0 653
|
||||||
|
FrameIndex PD11 C 0 654
|
||||||
|
FrameIndex PD11 D 0 655
|
||||||
|
FrameIndex PD11 E 0 656
|
||||||
|
FrameIndex PD11 F 0 657
|
||||||
|
FrameIndex PD11 G 0 658
|
||||||
|
FrameIndex PD11 H 0 659
|
||||||
|
FrameIndex PD11 I 0 660
|
||||||
|
FrameIndex PD11 J 0 661
|
||||||
|
FrameIndex PD11 K 0 662
|
||||||
|
FrameIndex PD11 L 0 663
|
||||||
|
FrameIndex PD11 M 0 664
|
||||||
|
FrameIndex PD11 N 0 665
|
||||||
|
FrameIndex PD11 O 0 666
|
||||||
|
FrameIndex PD11 P 0 667
|
||||||
|
FrameIndex PD11 Q 0 668
|
||||||
|
FrameIndex PD11 R 0 669
|
||||||
|
// Taunt1
|
||||||
|
FrameIndex PLT1 A 0 5
|
||||||
|
FrameIndex PLT1 B 0 6
|
||||||
|
FrameIndex PLT1 C 0 7
|
||||||
|
FrameIndex PLT1 D 0 8
|
||||||
|
FrameIndex PLT1 E 0 9
|
||||||
|
FrameIndex PLT1 F 0 10
|
||||||
|
FrameIndex PLT1 G 0 11
|
||||||
|
FrameIndex PLT1 H 0 12
|
||||||
|
FrameIndex PLT1 I 0 13
|
||||||
|
FrameIndex PLT1 J 0 14
|
||||||
|
FrameIndex PLT1 K 0 15
|
||||||
|
FrameIndex PLT1 L 0 16
|
||||||
|
FrameIndex PLT1 M 0 17
|
||||||
|
FrameIndex PLT1 N 0 18
|
||||||
|
FrameIndex PLT1 O 0 19
|
||||||
|
FrameIndex PLT1 P 0 20
|
||||||
|
FrameIndex PLT1 Q 0 21
|
||||||
|
FrameIndex PLT1 R 0 22
|
||||||
|
FrameIndex PLT1 S 0 23
|
||||||
|
FrameIndex PLT1 T 0 24
|
||||||
|
// Victory
|
||||||
|
FrameIndex PLT2 A 0 265
|
||||||
|
FrameIndex PLT2 B 0 266
|
||||||
|
FrameIndex PLT2 C 0 267
|
||||||
|
FrameIndex PLT2 D 0 268
|
||||||
|
FrameIndex PLT2 E 0 269
|
||||||
|
FrameIndex PLT2 F 0 270
|
||||||
|
FrameIndex PLT2 G 0 271
|
||||||
|
FrameIndex PLT2 H 0 272
|
||||||
|
FrameIndex PLT2 I 0 273
|
||||||
|
FrameIndex PLT2 J 0 274
|
||||||
|
FrameIndex PLT2 K 0 275
|
||||||
|
FrameIndex PLT2 L 0 276
|
||||||
|
FrameIndex PLT2 M 0 277
|
||||||
|
FrameIndex PLT2 N 0 278
|
||||||
|
FrameIndex PLT2 O 0 279
|
||||||
|
FrameIndex PLT2 P 0 280
|
||||||
|
FrameIndex PLT2 Q 0 281
|
||||||
|
FrameIndex PLT2 R 0 282
|
||||||
|
// Wave
|
||||||
|
FrameIndex PLT3 A 0 448
|
||||||
|
FrameIndex PLT3 B 0 449
|
||||||
|
FrameIndex PLT3 C 0 450
|
||||||
|
FrameIndex PLT3 D 0 451
|
||||||
|
FrameIndex PLT3 E 0 452
|
||||||
|
FrameIndex PLT3 F 0 453
|
||||||
|
FrameIndex PLT3 G 0 454
|
||||||
|
FrameIndex PLT3 H 0 455
|
||||||
|
FrameIndex PLT3 I 0 456
|
||||||
|
FrameIndex PLT3 J 0 457
|
||||||
|
FrameIndex PLT3 K 0 458
|
||||||
|
FrameIndex PLT3 L 0 459
|
||||||
|
FrameIndex PLT3 M 0 460
|
||||||
|
FrameIndex PLT3 N 0 461
|
||||||
|
FrameIndex PLT3 O 0 462
|
||||||
|
// Thrust
|
||||||
|
FrameIndex PLT4 A 0 486
|
||||||
|
FrameIndex PLT4 B 0 487
|
||||||
|
FrameIndex PLT4 C 0 488
|
||||||
|
FrameIndex PLT4 D 0 489
|
||||||
|
FrameIndex PLT4 E 0 490
|
||||||
|
FrameIndex PLT4 F 0 491
|
||||||
|
FrameIndex PLT4 G 0 492
|
||||||
|
FrameIndex PLT4 H 0 493
|
||||||
|
FrameIndex PLT4 I 0 494
|
||||||
|
FrameIndex PLT4 J 0 495
|
||||||
|
FrameIndex PLT4 K 0 496
|
||||||
|
FrameIndex PLT4 L 0 497
|
||||||
|
FrameIndex PLT4 M 0 498
|
||||||
|
FrameIndex PLT4 N 0 499
|
||||||
|
FrameIndex PLT4 O 0 500
|
||||||
|
}
|
||||||
308
modeldef.commando
Normal file
|
|
@ -0,0 +1,308 @@
|
||||||
|
Model "UTPlayerTMale1"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "Commando_d.3d"
|
||||||
|
SurfaceSkin 0 0 "cmdo1.png"
|
||||||
|
SurfaceSkin 0 1 "cmdo2.png"
|
||||||
|
SurfaceSkin 0 2 "cmdo3.png"
|
||||||
|
SurfaceSkin 0 3 "cmdo4.png"
|
||||||
|
SurfaceSkin 0 5 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset 0 -5 29
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
IGNORETRANSLATION // I'll figure out eventually how to make color changes work, but for now this is it
|
||||||
|
// Still
|
||||||
|
FrameIndex PLAY A 0 373
|
||||||
|
FrameIndex PLAY B 0 374
|
||||||
|
FrameIndex PLAY C 0 375
|
||||||
|
FrameIndex PLAY D 0 376
|
||||||
|
FrameIndex PLAY E 0 377
|
||||||
|
FrameIndex PLAY F 0 378
|
||||||
|
FrameIndex PLAY G 0 379
|
||||||
|
// Still (Air)
|
||||||
|
FrameIndex PLYA A 0 91
|
||||||
|
// Land
|
||||||
|
FrameIndex PLYL A 0 93
|
||||||
|
// Still (Swim)
|
||||||
|
FrameIndex PLYS A 0 235
|
||||||
|
FrameIndex PLYS B 0 237
|
||||||
|
FrameIndex PLYS C 0 239
|
||||||
|
FrameIndex PLYS D 0 241
|
||||||
|
FrameIndex PLYS E 0 243
|
||||||
|
FrameIndex PLYS F 0 245
|
||||||
|
FrameIndex PLYS G 0 247
|
||||||
|
// Run
|
||||||
|
FrameIndex PLAY H 0 137
|
||||||
|
FrameIndex PLAY I 0 139
|
||||||
|
FrameIndex PLAY J 0 141
|
||||||
|
FrameIndex PLAY K 0 143
|
||||||
|
FrameIndex PLAY L 0 145
|
||||||
|
// Run (Swim)
|
||||||
|
FrameIndex PLYS H 0 205
|
||||||
|
FrameIndex PLYS I 0 208
|
||||||
|
FrameIndex PLYS J 0 211
|
||||||
|
FrameIndex PLYS K 0 214
|
||||||
|
FrameIndex PLYS L 0 217
|
||||||
|
// Fire (Loop)
|
||||||
|
FrameIndex PLAY R 0 177
|
||||||
|
FrameIndex PLAY S 0 179
|
||||||
|
FrameIndex PLAY T 0 181
|
||||||
|
FrameIndex PLAY U 0 183
|
||||||
|
FrameIndex PLAY V 0 185
|
||||||
|
// Fire (Single)
|
||||||
|
FrameIndex PLAY M 0 187
|
||||||
|
FrameIndex PLAY N 0 189
|
||||||
|
FrameIndex PLAY O 0 191
|
||||||
|
FrameIndex PLAY P 0 193
|
||||||
|
FrameIndex PLAY Q 0 195
|
||||||
|
// Pain
|
||||||
|
FrameIndex PLAY W 0 0 // gut
|
||||||
|
FrameIndex PLAY X 0 90 // head
|
||||||
|
FrameIndex PLAY Y 0 95 // left
|
||||||
|
FrameIndex PLAY Z 0 136 // right
|
||||||
|
// Reload
|
||||||
|
FrameIndex PLYR A 0 400
|
||||||
|
FrameIndex PLYR B 0 401
|
||||||
|
FrameIndex PLYR C 0 402
|
||||||
|
FrameIndex PLYR D 0 403
|
||||||
|
FrameIndex PLYR E 0 404
|
||||||
|
FrameIndex PLYR F 0 405
|
||||||
|
FrameIndex PLYR G 0 406
|
||||||
|
FrameIndex PLYR H 0 407
|
||||||
|
// Crouch
|
||||||
|
FrameIndex PLYC A 0 60
|
||||||
|
FrameIndex PLYC B 0 63
|
||||||
|
FrameIndex PLYC C 0 66
|
||||||
|
FrameIndex PLYC D 0 69
|
||||||
|
FrameIndex PLYC E 0 72
|
||||||
|
// Turn
|
||||||
|
FrameIndex PLYT A 0 298
|
||||||
|
FrameIndex PLYT B 0 299
|
||||||
|
// Dead1 (Backflip)
|
||||||
|
FrameIndex PLD1 A 0 525
|
||||||
|
FrameIndex PLD1 B 0 526
|
||||||
|
FrameIndex PLD1 C 0 527
|
||||||
|
FrameIndex PLD1 D 0 528
|
||||||
|
FrameIndex PLD1 E 0 529
|
||||||
|
FrameIndex PLD1 F 0 530
|
||||||
|
FrameIndex PLD1 G 0 531
|
||||||
|
FrameIndex PLD1 H 0 532
|
||||||
|
FrameIndex PLD1 I 0 533
|
||||||
|
FrameIndex PLD1 J 0 534
|
||||||
|
FrameIndex PLD1 K 0 535
|
||||||
|
FrameIndex PLD1 L 0 536
|
||||||
|
FrameIndex PLD1 M 0 537
|
||||||
|
// Dead2 (Falling back)
|
||||||
|
FrameIndex PLD2 A 0 538
|
||||||
|
FrameIndex PLD2 B 0 539
|
||||||
|
FrameIndex PLD2 C 0 540
|
||||||
|
FrameIndex PLD2 D 0 541
|
||||||
|
FrameIndex PLD2 E 0 542
|
||||||
|
FrameIndex PLD2 F 0 543
|
||||||
|
FrameIndex PLD2 G 0 544
|
||||||
|
FrameIndex PLD2 H 0 545
|
||||||
|
FrameIndex PLD2 I 0 546
|
||||||
|
FrameIndex PLD2 J 0 547
|
||||||
|
FrameIndex PLD2 K 0 548
|
||||||
|
FrameIndex PLD2 L 0 549
|
||||||
|
FrameIndex PLD2 M 0 550
|
||||||
|
FrameIndex PLD2 N 0 551
|
||||||
|
FrameIndex PLD2 O 0 552
|
||||||
|
FrameIndex PLD2 P 0 553
|
||||||
|
// Dead3 (Falling forward)
|
||||||
|
FrameIndex PLD3 A 0 554
|
||||||
|
FrameIndex PLD3 B 0 555
|
||||||
|
FrameIndex PLD3 C 0 556
|
||||||
|
FrameIndex PLD3 D 0 557
|
||||||
|
FrameIndex PLD3 E 0 558
|
||||||
|
FrameIndex PLD3 F 0 559
|
||||||
|
FrameIndex PLD3 G 0 560
|
||||||
|
FrameIndex PLD3 H 0 561
|
||||||
|
FrameIndex PLD3 I 0 562
|
||||||
|
FrameIndex PLD3 J 0 563
|
||||||
|
FrameIndex PLD3 K 0 564
|
||||||
|
FrameIndex PLD3 L 0 565
|
||||||
|
FrameIndex PLD3 M 0 566
|
||||||
|
// Dead4 (Decapitate)
|
||||||
|
FrameIndex PLD4 A 0 567
|
||||||
|
FrameIndex PLD4 B 0 568
|
||||||
|
FrameIndex PLD4 C 0 569
|
||||||
|
FrameIndex PLD4 D 0 570
|
||||||
|
FrameIndex PLD4 E 0 571
|
||||||
|
FrameIndex PLD4 F 0 572
|
||||||
|
FrameIndex PLD4 G 0 573
|
||||||
|
FrameIndex PLD4 H 0 574
|
||||||
|
FrameIndex PLD4 I 0 575
|
||||||
|
FrameIndex PLD4 J 0 576
|
||||||
|
FrameIndex PLD4 K 0 577
|
||||||
|
FrameIndex PLD4 L 0 578
|
||||||
|
FrameIndex PLD4 M 0 579
|
||||||
|
FrameIndex PLD4 N 0 580
|
||||||
|
FrameIndex PLD4 O 0 581
|
||||||
|
FrameIndex PLD4 P 0 582
|
||||||
|
// Dead7 (Headshot)
|
||||||
|
FrameIndex PLD7 A 0 583
|
||||||
|
FrameIndex PLD7 B 0 584
|
||||||
|
FrameIndex PLD7 C 0 585
|
||||||
|
FrameIndex PLD7 D 0 586
|
||||||
|
FrameIndex PLD7 E 0 587
|
||||||
|
FrameIndex PLD7 F 0 588
|
||||||
|
FrameIndex PLD7 G 0 589
|
||||||
|
FrameIndex PLD7 H 0 590
|
||||||
|
FrameIndex PLD7 I 0 591
|
||||||
|
FrameIndex PLD7 J 0 592
|
||||||
|
FrameIndex PLD7 K 0 593
|
||||||
|
FrameIndex PLD7 L 0 594
|
||||||
|
FrameIndex PLD7 M 0 595
|
||||||
|
FrameIndex PLD7 N 0 596
|
||||||
|
FrameIndex PLD7 O 0 597
|
||||||
|
FrameIndex PLD7 P 0 598
|
||||||
|
FrameIndex PLD7 Q 0 599
|
||||||
|
FrameIndex PLD7 R 0 600
|
||||||
|
FrameIndex PLD7 S 0 601
|
||||||
|
FrameIndex PLD7 T 0 602
|
||||||
|
FrameIndex PLD7 U 0 603
|
||||||
|
// Dead8 (Stomach)
|
||||||
|
FrameIndex PLD8 A 0 604
|
||||||
|
FrameIndex PLD8 B 0 605
|
||||||
|
FrameIndex PLD8 C 0 606
|
||||||
|
FrameIndex PLD8 D 0 607
|
||||||
|
FrameIndex PLD8 E 0 608
|
||||||
|
FrameIndex PLD8 F 0 609
|
||||||
|
FrameIndex PLD8 G 0 610
|
||||||
|
FrameIndex PLD8 H 0 611
|
||||||
|
FrameIndex PLD8 I 0 612
|
||||||
|
FrameIndex PLD8 J 0 613
|
||||||
|
FrameIndex PLD8 K 0 614
|
||||||
|
FrameIndex PLD8 L 0 615
|
||||||
|
FrameIndex PLD8 M 0 616
|
||||||
|
FrameIndex PLD8 N 0 617
|
||||||
|
FrameIndex PLD8 O 0 618
|
||||||
|
FrameIndex PLD8 P 0 619
|
||||||
|
FrameIndex PLD8 Q 0 620
|
||||||
|
FrameIndex PLD8 R 0 621
|
||||||
|
// Dead9 (Zapped)
|
||||||
|
FrameIndex PLD9 A 0 622
|
||||||
|
FrameIndex PLD9 B 0 623
|
||||||
|
FrameIndex PLD9 C 0 624
|
||||||
|
FrameIndex PLD9 D 0 625
|
||||||
|
FrameIndex PLD9 E 0 626
|
||||||
|
FrameIndex PLD9 F 0 627
|
||||||
|
FrameIndex PLD9 G 0 628
|
||||||
|
FrameIndex PLD9 H 0 629
|
||||||
|
FrameIndex PLD9 I 0 630
|
||||||
|
FrameIndex PLD9 J 0 631
|
||||||
|
FrameIndex PLD9 K 0 632
|
||||||
|
FrameIndex PLD9 L 0 633
|
||||||
|
FrameIndex PLD9 M 0 634
|
||||||
|
FrameIndex PLD9 N 0 635
|
||||||
|
FrameIndex PLD9 O 0 636
|
||||||
|
FrameIndex PLD9 P 0 637
|
||||||
|
FrameIndex PLD9 Q 0 638
|
||||||
|
FrameIndex PLD9 R 0 639
|
||||||
|
FrameIndex PLD9 S 0 640
|
||||||
|
FrameIndex PLD9 T 0 641
|
||||||
|
//
|
||||||
|
FrameIndex PD9B A 0 642
|
||||||
|
FrameIndex PD9B B 0 643
|
||||||
|
FrameIndex PD9B C 0 644
|
||||||
|
FrameIndex PD9B D 0 645
|
||||||
|
FrameIndex PD9B E 0 646
|
||||||
|
FrameIndex PD9B F 0 647
|
||||||
|
FrameIndex PD9B G 0 648
|
||||||
|
FrameIndex PD9B H 0 649
|
||||||
|
FrameIndex PD9B I 0 650
|
||||||
|
FrameIndex PD9B J 0 651
|
||||||
|
// Dead11 (Spinning)
|
||||||
|
FrameIndex PD11 A 0 652
|
||||||
|
FrameIndex PD11 B 0 653
|
||||||
|
FrameIndex PD11 C 0 654
|
||||||
|
FrameIndex PD11 D 0 655
|
||||||
|
FrameIndex PD11 E 0 656
|
||||||
|
FrameIndex PD11 F 0 657
|
||||||
|
FrameIndex PD11 G 0 658
|
||||||
|
FrameIndex PD11 H 0 659
|
||||||
|
FrameIndex PD11 I 0 660
|
||||||
|
FrameIndex PD11 J 0 661
|
||||||
|
FrameIndex PD11 K 0 662
|
||||||
|
FrameIndex PD11 L 0 663
|
||||||
|
FrameIndex PD11 M 0 664
|
||||||
|
FrameIndex PD11 N 0 665
|
||||||
|
FrameIndex PD11 O 0 666
|
||||||
|
FrameIndex PD11 P 0 667
|
||||||
|
FrameIndex PD11 Q 0 668
|
||||||
|
FrameIndex PD11 R 0 669
|
||||||
|
// Taunt1
|
||||||
|
FrameIndex PLT1 A 0 5
|
||||||
|
FrameIndex PLT1 B 0 6
|
||||||
|
FrameIndex PLT1 C 0 7
|
||||||
|
FrameIndex PLT1 D 0 8
|
||||||
|
FrameIndex PLT1 E 0 9
|
||||||
|
FrameIndex PLT1 F 0 10
|
||||||
|
FrameIndex PLT1 G 0 11
|
||||||
|
FrameIndex PLT1 H 0 12
|
||||||
|
FrameIndex PLT1 I 0 13
|
||||||
|
FrameIndex PLT1 J 0 14
|
||||||
|
FrameIndex PLT1 K 0 15
|
||||||
|
FrameIndex PLT1 L 0 16
|
||||||
|
FrameIndex PLT1 M 0 17
|
||||||
|
FrameIndex PLT1 N 0 18
|
||||||
|
FrameIndex PLT1 O 0 19
|
||||||
|
FrameIndex PLT1 P 0 20
|
||||||
|
FrameIndex PLT1 Q 0 21
|
||||||
|
FrameIndex PLT1 R 0 22
|
||||||
|
FrameIndex PLT1 S 0 23
|
||||||
|
FrameIndex PLT1 T 0 24
|
||||||
|
// Victory
|
||||||
|
FrameIndex PLT2 A 0 265
|
||||||
|
FrameIndex PLT2 B 0 266
|
||||||
|
FrameIndex PLT2 C 0 267
|
||||||
|
FrameIndex PLT2 D 0 268
|
||||||
|
FrameIndex PLT2 E 0 269
|
||||||
|
FrameIndex PLT2 F 0 270
|
||||||
|
FrameIndex PLT2 G 0 271
|
||||||
|
FrameIndex PLT2 H 0 272
|
||||||
|
FrameIndex PLT2 I 0 273
|
||||||
|
FrameIndex PLT2 J 0 274
|
||||||
|
FrameIndex PLT2 K 0 275
|
||||||
|
FrameIndex PLT2 L 0 276
|
||||||
|
FrameIndex PLT2 M 0 277
|
||||||
|
FrameIndex PLT2 N 0 278
|
||||||
|
FrameIndex PLT2 O 0 279
|
||||||
|
FrameIndex PLT2 P 0 280
|
||||||
|
FrameIndex PLT2 Q 0 281
|
||||||
|
FrameIndex PLT2 R 0 282
|
||||||
|
// Wave
|
||||||
|
FrameIndex PLT3 A 0 448
|
||||||
|
FrameIndex PLT3 B 0 449
|
||||||
|
FrameIndex PLT3 C 0 450
|
||||||
|
FrameIndex PLT3 D 0 451
|
||||||
|
FrameIndex PLT3 E 0 452
|
||||||
|
FrameIndex PLT3 F 0 453
|
||||||
|
FrameIndex PLT3 G 0 454
|
||||||
|
FrameIndex PLT3 H 0 455
|
||||||
|
FrameIndex PLT3 I 0 456
|
||||||
|
FrameIndex PLT3 J 0 457
|
||||||
|
FrameIndex PLT3 K 0 458
|
||||||
|
FrameIndex PLT3 L 0 459
|
||||||
|
FrameIndex PLT3 M 0 460
|
||||||
|
FrameIndex PLT3 N 0 461
|
||||||
|
FrameIndex PLT3 O 0 462
|
||||||
|
// Thrust
|
||||||
|
FrameIndex PLT4 A 0 486
|
||||||
|
FrameIndex PLT4 B 0 487
|
||||||
|
FrameIndex PLT4 C 0 488
|
||||||
|
FrameIndex PLT4 D 0 489
|
||||||
|
FrameIndex PLT4 E 0 490
|
||||||
|
FrameIndex PLT4 F 0 491
|
||||||
|
FrameIndex PLT4 G 0 492
|
||||||
|
FrameIndex PLT4 H 0 493
|
||||||
|
FrameIndex PLT4 I 0 494
|
||||||
|
FrameIndex PLT4 J 0 495
|
||||||
|
FrameIndex PLT4 K 0 496
|
||||||
|
FrameIndex PLT4 L 0 497
|
||||||
|
FrameIndex PLT4 M 0 498
|
||||||
|
FrameIndex PLT4 N 0 499
|
||||||
|
FrameIndex PLT4 O 0 500
|
||||||
|
}
|
||||||
283
modeldef.fcommando
Normal file
|
|
@ -0,0 +1,283 @@
|
||||||
|
Model "UTPlayerTFemale1"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "FCommando_d.3d"
|
||||||
|
SurfaceSkin 0 0 "fcmd1.png"
|
||||||
|
SurfaceSkin 0 1 "fcmd2.png"
|
||||||
|
SurfaceSkin 0 2 "fcmd4.png"
|
||||||
|
SurfaceSkin 0 4 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset -3 3 36
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
IGNORETRANSLATION // I'll figure out eventually how to make color changes work, but for now this is it
|
||||||
|
// Still
|
||||||
|
FrameIndex PLAY A 0 359
|
||||||
|
FrameIndex PLAY B 0 360
|
||||||
|
FrameIndex PLAY C 0 361
|
||||||
|
FrameIndex PLAY D 0 362
|
||||||
|
FrameIndex PLAY E 0 363
|
||||||
|
FrameIndex PLAY F 0 364
|
||||||
|
FrameIndex PLAY G 0 365
|
||||||
|
// Still (Air)
|
||||||
|
FrameIndex PLYA A 0 84
|
||||||
|
// Land
|
||||||
|
FrameIndex PLYL A 0 86
|
||||||
|
// Still (Swim)
|
||||||
|
FrameIndex PLYS A 0 229
|
||||||
|
FrameIndex PLYS B 0 231
|
||||||
|
FrameIndex PLYS C 0 233
|
||||||
|
FrameIndex PLYS D 0 235
|
||||||
|
FrameIndex PLYS E 0 237
|
||||||
|
FrameIndex PLYS F 0 239
|
||||||
|
FrameIndex PLYS G 0 241
|
||||||
|
// Run
|
||||||
|
FrameIndex PLAY H 0 125
|
||||||
|
FrameIndex PLAY I 0 127
|
||||||
|
FrameIndex PLAY J 0 129
|
||||||
|
FrameIndex PLAY K 0 131
|
||||||
|
FrameIndex PLAY L 0 133
|
||||||
|
// Run (Swim)
|
||||||
|
FrameIndex PLYS H 0 193
|
||||||
|
FrameIndex PLYS I 0 196
|
||||||
|
FrameIndex PLYS J 0 199
|
||||||
|
FrameIndex PLYS K 0 202
|
||||||
|
FrameIndex PLYS L 0 205
|
||||||
|
// Fire (Loop)
|
||||||
|
FrameIndex PLAY R 0 165
|
||||||
|
FrameIndex PLAY S 0 167
|
||||||
|
FrameIndex PLAY T 0 169
|
||||||
|
FrameIndex PLAY U 0 171
|
||||||
|
FrameIndex PLAY V 0 173
|
||||||
|
// Fire (Single)
|
||||||
|
FrameIndex PLAY M 0 175
|
||||||
|
FrameIndex PLAY N 0 177
|
||||||
|
FrameIndex PLAY O 0 179
|
||||||
|
FrameIndex PLAY P 0 181
|
||||||
|
FrameIndex PLAY Q 0 183
|
||||||
|
// Pain
|
||||||
|
FrameIndex PLAY W 0 0 // gut
|
||||||
|
FrameIndex PLAY X 0 83 // head
|
||||||
|
FrameIndex PLAY Y 0 88 // left
|
||||||
|
FrameIndex PLAY Z 0 124 // right
|
||||||
|
// Reload
|
||||||
|
FrameIndex PLYR A 0 386
|
||||||
|
FrameIndex PLYR B 0 387
|
||||||
|
FrameIndex PLYR C 0 388
|
||||||
|
FrameIndex PLYR D 0 389
|
||||||
|
FrameIndex PLYR E 0 390
|
||||||
|
FrameIndex PLYR F 0 391
|
||||||
|
// Crouch
|
||||||
|
FrameIndex PLYC A 0 53
|
||||||
|
FrameIndex PLYC B 0 56
|
||||||
|
FrameIndex PLYC C 0 59
|
||||||
|
FrameIndex PLYC D 0 62
|
||||||
|
FrameIndex PLYC E 0 75
|
||||||
|
// Turn
|
||||||
|
FrameIndex PLYT A 0 284
|
||||||
|
FrameIndex PLYT B 0 285
|
||||||
|
// Dead1 (Stomach)
|
||||||
|
FrameIndex PLD1 A 0 573
|
||||||
|
FrameIndex PLD1 B 0 574
|
||||||
|
FrameIndex PLD1 C 0 575
|
||||||
|
FrameIndex PLD1 D 0 576
|
||||||
|
FrameIndex PLD1 E 0 577
|
||||||
|
FrameIndex PLD1 F 0 578
|
||||||
|
FrameIndex PLD1 G 0 579
|
||||||
|
FrameIndex PLD1 H 0 580
|
||||||
|
FrameIndex PLD1 I 0 581
|
||||||
|
FrameIndex PLD1 J 0 582
|
||||||
|
FrameIndex PLD1 K 0 583
|
||||||
|
FrameIndex PLD1 L 0 584
|
||||||
|
FrameIndex PLD1 M 0 585
|
||||||
|
FrameIndex PLD1 N 0 586
|
||||||
|
FrameIndex PLD1 O 0 587
|
||||||
|
FrameIndex PLD1 P 0 588
|
||||||
|
FrameIndex PLD1 Q 0 589
|
||||||
|
FrameIndex PLD1 R 0 590
|
||||||
|
FrameIndex PLD1 S 0 591
|
||||||
|
FrameIndex PLD1 T 0 592
|
||||||
|
FrameIndex PLD1 U 0 593
|
||||||
|
FrameIndex PLD1 V 0 594
|
||||||
|
FrameIndex PLD1 W 0 595
|
||||||
|
// Dead2 (Spin back)
|
||||||
|
FrameIndex PLD2 A 0 515
|
||||||
|
FrameIndex PLD2 B 0 516
|
||||||
|
FrameIndex PLD2 C 0 517
|
||||||
|
FrameIndex PLD2 D 0 518
|
||||||
|
FrameIndex PLD2 E 0 519
|
||||||
|
FrameIndex PLD2 F 0 520
|
||||||
|
FrameIndex PLD2 G 0 521
|
||||||
|
FrameIndex PLD2 H 0 522
|
||||||
|
FrameIndex PLD2 I 0 523
|
||||||
|
FrameIndex PLD2 J 0 524
|
||||||
|
FrameIndex PLD2 K 0 525
|
||||||
|
FrameIndex PLD2 L 0 526
|
||||||
|
FrameIndex PLD2 M 0 527
|
||||||
|
FrameIndex PLD2 N 0 528
|
||||||
|
FrameIndex PLD2 O 0 529
|
||||||
|
FrameIndex PLD2 P 0 530
|
||||||
|
FrameIndex PLD2 Q 0 531
|
||||||
|
FrameIndex PLD2 R 0 532
|
||||||
|
// Dead3 (Fall back)
|
||||||
|
FrameIndex PLD3 A 0 533
|
||||||
|
FrameIndex PLD3 B 0 534
|
||||||
|
FrameIndex PLD3 C 0 535
|
||||||
|
FrameIndex PLD3 D 0 536
|
||||||
|
FrameIndex PLD3 E 0 537
|
||||||
|
FrameIndex PLD3 F 0 538
|
||||||
|
FrameIndex PLD3 G 0 539
|
||||||
|
FrameIndex PLD3 H 0 540
|
||||||
|
FrameIndex PLD3 I 0 541
|
||||||
|
FrameIndex PLD3 J 0 542
|
||||||
|
FrameIndex PLD3 K 0 543
|
||||||
|
FrameIndex PLD3 L 0 544
|
||||||
|
FrameIndex PLD3 M 0 545
|
||||||
|
FrameIndex PLD3 N 0 546
|
||||||
|
FrameIndex PLD3 O 0 547
|
||||||
|
FrameIndex PLD3 P 0 548
|
||||||
|
// Dead4 (Fall forward)
|
||||||
|
FrameIndex PLD4 A 0 549
|
||||||
|
FrameIndex PLD4 B 0 550
|
||||||
|
FrameIndex PLD4 C 0 551
|
||||||
|
FrameIndex PLD4 D 0 552
|
||||||
|
FrameIndex PLD4 E 0 553
|
||||||
|
FrameIndex PLD4 F 0 554
|
||||||
|
FrameIndex PLD4 G 0 555
|
||||||
|
FrameIndex PLD4 H 0 556
|
||||||
|
FrameIndex PLD4 I 0 557
|
||||||
|
FrameIndex PLD4 J 0 558
|
||||||
|
FrameIndex PLD4 K 0 559
|
||||||
|
FrameIndex PLD4 L 0 560
|
||||||
|
FrameIndex PLD4 M 0 561
|
||||||
|
// Dead5 (Leg blown)
|
||||||
|
FrameIndex PLD5 A 0 596
|
||||||
|
FrameIndex PLD5 B 0 597
|
||||||
|
FrameIndex PLD5 C 0 598
|
||||||
|
FrameIndex PLD5 D 0 599
|
||||||
|
FrameIndex PLD5 E 0 600
|
||||||
|
FrameIndex PLD5 F 0 601
|
||||||
|
FrameIndex PLD5 G 0 602
|
||||||
|
FrameIndex PLD5 H 0 603
|
||||||
|
FrameIndex PLD5 I 0 604
|
||||||
|
FrameIndex PLD5 J 0 605
|
||||||
|
FrameIndex PLD5 K 0 606
|
||||||
|
FrameIndex PLD5 L 0 607
|
||||||
|
FrameIndex PLD5 M 0 608
|
||||||
|
// Dead6 (Decapitate)
|
||||||
|
FrameIndex PLD6 A 0 562
|
||||||
|
FrameIndex PLD6 B 0 563
|
||||||
|
FrameIndex PLD6 C 0 564
|
||||||
|
FrameIndex PLD6 D 0 565
|
||||||
|
FrameIndex PLD6 E 0 566
|
||||||
|
FrameIndex PLD6 F 0 567
|
||||||
|
FrameIndex PLD6 G 0 568
|
||||||
|
FrameIndex PLD6 H 0 569
|
||||||
|
FrameIndex PLD6 I 0 570
|
||||||
|
FrameIndex PLD6 J 0 571
|
||||||
|
FrameIndex PLD6 K 0 572
|
||||||
|
// Dead7 (Turn and fall)
|
||||||
|
FrameIndex PLD7 A 0 640
|
||||||
|
FrameIndex PLD7 B 0 641
|
||||||
|
FrameIndex PLD7 C 0 642
|
||||||
|
FrameIndex PLD7 D 0 643
|
||||||
|
FrameIndex PLD7 E 0 644
|
||||||
|
FrameIndex PLD7 F 0 645
|
||||||
|
FrameIndex PLD7 G 0 646
|
||||||
|
FrameIndex PLD7 H 0 647
|
||||||
|
FrameIndex PLD7 I 0 648
|
||||||
|
FrameIndex PLD7 J 0 649
|
||||||
|
FrameIndex PLD7 K 0 650
|
||||||
|
// Dead9 (Zapped)
|
||||||
|
FrameIndex PLD9 A 0 609
|
||||||
|
FrameIndex PLD9 B 0 610
|
||||||
|
FrameIndex PLD9 C 0 611
|
||||||
|
FrameIndex PLD9 D 0 612
|
||||||
|
FrameIndex PLD9 E 0 613
|
||||||
|
FrameIndex PLD9 F 0 614
|
||||||
|
FrameIndex PLD9 G 0 615
|
||||||
|
FrameIndex PLD9 H 0 616
|
||||||
|
FrameIndex PLD9 I 0 617
|
||||||
|
FrameIndex PLD9 J 0 618
|
||||||
|
FrameIndex PLD9 K 0 619
|
||||||
|
FrameIndex PLD9 L 0 620
|
||||||
|
FrameIndex PLD9 M 0 621
|
||||||
|
FrameIndex PLD9 N 0 622
|
||||||
|
FrameIndex PLD9 O 0 623
|
||||||
|
FrameIndex PLD9 P 0 624
|
||||||
|
FrameIndex PLD9 Q 0 625
|
||||||
|
FrameIndex PLD9 R 0 626
|
||||||
|
FrameIndex PLD9 S 0 627
|
||||||
|
FrameIndex PLD9 T 0 628
|
||||||
|
//
|
||||||
|
FrameIndex PD9B A 0 629
|
||||||
|
FrameIndex PD9B B 0 630
|
||||||
|
FrameIndex PD9B C 0 631
|
||||||
|
FrameIndex PD9B D 0 632
|
||||||
|
FrameIndex PD9B E 0 633
|
||||||
|
FrameIndex PD9B F 0 634
|
||||||
|
FrameIndex PD9B G 0 635
|
||||||
|
FrameIndex PD9B H 0 636
|
||||||
|
FrameIndex PD9B I 0 637
|
||||||
|
FrameIndex PD9B J 0 638
|
||||||
|
FrameIndex PD9B K 0 639
|
||||||
|
// Taunt1
|
||||||
|
FrameIndex PLT1 A 0 5
|
||||||
|
FrameIndex PLT1 B 0 6
|
||||||
|
FrameIndex PLT1 C 0 7
|
||||||
|
FrameIndex PLT1 D 0 8
|
||||||
|
FrameIndex PLT1 E 0 9
|
||||||
|
FrameIndex PLT1 F 0 10
|
||||||
|
FrameIndex PLT1 G 0 11
|
||||||
|
FrameIndex PLT1 H 0 12
|
||||||
|
FrameIndex PLT1 I 0 13
|
||||||
|
FrameIndex PLT1 J 0 14
|
||||||
|
FrameIndex PLT1 K 0 15
|
||||||
|
FrameIndex PLT1 L 0 16
|
||||||
|
FrameIndex PLT1 M 0 17
|
||||||
|
FrameIndex PLT1 N 0 18
|
||||||
|
FrameIndex PLT1 O 0 19
|
||||||
|
// Victory
|
||||||
|
FrameIndex PLT2 A 0 259
|
||||||
|
FrameIndex PLT2 B 0 260
|
||||||
|
FrameIndex PLT2 C 0 261
|
||||||
|
FrameIndex PLT2 D 0 262
|
||||||
|
FrameIndex PLT2 E 0 263
|
||||||
|
FrameIndex PLT2 F 0 264
|
||||||
|
FrameIndex PLT2 G 0 265
|
||||||
|
FrameIndex PLT2 H 0 266
|
||||||
|
FrameIndex PLT2 I 0 267
|
||||||
|
FrameIndex PLT2 J 0 268
|
||||||
|
// Wave
|
||||||
|
FrameIndex PLT3 A 0 427
|
||||||
|
FrameIndex PLT3 B 0 428
|
||||||
|
FrameIndex PLT3 C 0 429
|
||||||
|
FrameIndex PLT3 D 0 430
|
||||||
|
FrameIndex PLT3 E 0 431
|
||||||
|
FrameIndex PLT3 F 0 432
|
||||||
|
FrameIndex PLT3 G 0 433
|
||||||
|
FrameIndex PLT3 H 0 434
|
||||||
|
FrameIndex PLT3 I 0 435
|
||||||
|
FrameIndex PLT3 J 0 436
|
||||||
|
FrameIndex PLT3 K 0 437
|
||||||
|
FrameIndex PLT3 L 0 438
|
||||||
|
FrameIndex PLT3 M 0 439
|
||||||
|
FrameIndex PLT3 N 0 440
|
||||||
|
FrameIndex PLT3 O 0 441
|
||||||
|
// Thrust
|
||||||
|
FrameIndex PLT4 A 0 465
|
||||||
|
FrameIndex PLT4 B 0 466
|
||||||
|
FrameIndex PLT4 C 0 467
|
||||||
|
FrameIndex PLT4 D 0 468
|
||||||
|
FrameIndex PLT4 E 0 469
|
||||||
|
FrameIndex PLT4 F 0 470
|
||||||
|
FrameIndex PLT4 G 0 471
|
||||||
|
FrameIndex PLT4 H 0 472
|
||||||
|
FrameIndex PLT4 I 0 473
|
||||||
|
FrameIndex PLT4 J 0 474
|
||||||
|
FrameIndex PLT4 K 0 475
|
||||||
|
FrameIndex PLT4 L 0 476
|
||||||
|
FrameIndex PLT4 M 0 477
|
||||||
|
FrameIndex PLT4 N 0 478
|
||||||
|
FrameIndex PLT4 O 0 479
|
||||||
|
}
|
||||||
|
|
@ -130,7 +130,7 @@ Model "UTFemaleArm"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "femalearmm_d.3d"
|
Model 0 "femalearmm_d.3d"
|
||||||
Skin 0 "femalearmT.png"
|
Skin 0 "femalearmT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 1.5
|
Offset 0 0 1.5
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -145,7 +145,7 @@ Model "UTFemaleFoot"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "femalefootm_d.3d"
|
Model 0 "femalefootm_d.3d"
|
||||||
Skin 0 "femalefootT.png"
|
Skin 0 "femalefootT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 1.5
|
Offset 0 0 1.5
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -160,7 +160,7 @@ Model "UTFemaleTorso"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "femaletorsom_d.3d"
|
Model 0 "femaletorsom_d.3d"
|
||||||
Skin 0 "femaletorsoT.png"
|
Skin 0 "femaletorsoT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 4
|
Offset 0 0 4
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -175,7 +175,7 @@ Model "UTMaleArm"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "malearmm_d.3d"
|
Model 0 "malearmm_d.3d"
|
||||||
Skin 0 "malearmT.png"
|
Skin 0 "malearmT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 1.5
|
Offset 0 0 1.5
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -190,7 +190,7 @@ Model "UTMaleFoot"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "malefootm_d.3d"
|
Model 0 "malefootm_d.3d"
|
||||||
Skin 0 "malefootT.png"
|
Skin 0 "malefootT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 1.5
|
Offset 0 0 1.5
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -205,7 +205,7 @@ Model "UTMaleTorso"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "maletorsom_d.3d"
|
Model 0 "maletorsom_d.3d"
|
||||||
Skin 0 "maletorsoT.png"
|
Skin 0 "maletorsoT.png"
|
||||||
Scale 0.16 0.16 0.192
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 4
|
Offset 0 0 4
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
USEACTORROLL
|
USEACTORROLL
|
||||||
|
|
@ -215,12 +215,42 @@ Model "UTMaleTorso"
|
||||||
FrameIndex UGIB A 0 0
|
FrameIndex UGIB A 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model "UTBossArm"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "bossarmm_d.3d"
|
||||||
|
Skin 0 "bossgibT.png"
|
||||||
|
Scale 0.12 0.12 0.144
|
||||||
|
Offset 0 0 1.5
|
||||||
|
USEACTORPITCH
|
||||||
|
USEACTORROLL
|
||||||
|
USEROTATIONCENTER
|
||||||
|
Rotation-Center 0 0 1.5
|
||||||
|
|
||||||
|
FrameIndex UGIB A 0 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Model "UTBossFoot"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "bossthighm_d.3d"
|
||||||
|
Skin 0 "bossgibT.png"
|
||||||
|
Scale 0.12 0.12 0.144
|
||||||
|
Offset 0 0 1.5
|
||||||
|
USEACTORPITCH
|
||||||
|
USEACTORROLL
|
||||||
|
USEROTATIONCENTER
|
||||||
|
Rotation-Center 0 0 1.5
|
||||||
|
|
||||||
|
FrameIndex UGIB A 0 0
|
||||||
|
}
|
||||||
|
|
||||||
Model "UTHeadFemale"
|
Model "UTHeadFemale"
|
||||||
{
|
{
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "HeadFemaleM_d.3d"
|
Model 0 "HeadFemaleM_d.3d"
|
||||||
Skin 0 "FMT1.png"
|
Skin 0 "FMT1.png"
|
||||||
Scale 0.14 0.14 0.168
|
Scale 0.2 0.2 0.24
|
||||||
Offset 0 0 3
|
Offset 0 0 3
|
||||||
AngleOffset -90
|
AngleOffset -90
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
|
|
@ -236,7 +266,23 @@ Model "UTHeadMale"
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 0 "headmalem_d.3d"
|
Model 0 "headmalem_d.3d"
|
||||||
Skin 0 "MMT1.png"
|
Skin 0 "MMT1.png"
|
||||||
Scale 0.14 0.14 0.168
|
Scale 0.2 0.2 0.24
|
||||||
|
Offset 0 0 3
|
||||||
|
AngleOffset -90
|
||||||
|
USEACTORPITCH
|
||||||
|
USEACTORROLL
|
||||||
|
USEROTATIONCENTER
|
||||||
|
Rotation-Center 0 0 3
|
||||||
|
|
||||||
|
FrameIndex UGIB A 0 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Model "UTHeadBoss"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "bossheadm_d.3d"
|
||||||
|
Skin 0 "bossgibT.png"
|
||||||
|
Scale 0.07 0.07 0.084
|
||||||
Offset 0 0 3
|
Offset 0 0 3
|
||||||
AngleOffset -90
|
AngleOffset -90
|
||||||
USEACTORPITCH
|
USEACTORPITCH
|
||||||
|
|
|
||||||
284
modeldef.sgirl
Normal file
|
|
@ -0,0 +1,284 @@
|
||||||
|
Model "UTPlayerTFemale2"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "SGirl_d.3d"
|
||||||
|
SurfaceSkin 0 0 "army1.png"
|
||||||
|
SurfaceSkin 0 1 "army2.png"
|
||||||
|
SurfaceSkin 0 2 "army3.png"
|
||||||
|
SurfaceSkin 0 3 "army4.png"
|
||||||
|
SurfaceSkin 0 5 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset -3 3 36
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
IGNORETRANSLATION // I'll figure out eventually how to make color changes work, but for now this is it
|
||||||
|
// Still
|
||||||
|
FrameIndex PLAY A 0 359
|
||||||
|
FrameIndex PLAY B 0 360
|
||||||
|
FrameIndex PLAY C 0 361
|
||||||
|
FrameIndex PLAY D 0 362
|
||||||
|
FrameIndex PLAY E 0 363
|
||||||
|
FrameIndex PLAY F 0 364
|
||||||
|
FrameIndex PLAY G 0 365
|
||||||
|
// Still (Air)
|
||||||
|
FrameIndex PLYA A 0 84
|
||||||
|
// Land
|
||||||
|
FrameIndex PLYL A 0 86
|
||||||
|
// Still (Swim)
|
||||||
|
FrameIndex PLYS A 0 229
|
||||||
|
FrameIndex PLYS B 0 231
|
||||||
|
FrameIndex PLYS C 0 233
|
||||||
|
FrameIndex PLYS D 0 235
|
||||||
|
FrameIndex PLYS E 0 237
|
||||||
|
FrameIndex PLYS F 0 239
|
||||||
|
FrameIndex PLYS G 0 241
|
||||||
|
// Run
|
||||||
|
FrameIndex PLAY H 0 125
|
||||||
|
FrameIndex PLAY I 0 127
|
||||||
|
FrameIndex PLAY J 0 129
|
||||||
|
FrameIndex PLAY K 0 131
|
||||||
|
FrameIndex PLAY L 0 133
|
||||||
|
// Run (Swim)
|
||||||
|
FrameIndex PLYS H 0 193
|
||||||
|
FrameIndex PLYS I 0 196
|
||||||
|
FrameIndex PLYS J 0 199
|
||||||
|
FrameIndex PLYS K 0 202
|
||||||
|
FrameIndex PLYS L 0 205
|
||||||
|
// Fire (Loop)
|
||||||
|
FrameIndex PLAY R 0 165
|
||||||
|
FrameIndex PLAY S 0 167
|
||||||
|
FrameIndex PLAY T 0 169
|
||||||
|
FrameIndex PLAY U 0 171
|
||||||
|
FrameIndex PLAY V 0 173
|
||||||
|
// Fire (Single)
|
||||||
|
FrameIndex PLAY M 0 175
|
||||||
|
FrameIndex PLAY N 0 177
|
||||||
|
FrameIndex PLAY O 0 179
|
||||||
|
FrameIndex PLAY P 0 181
|
||||||
|
FrameIndex PLAY Q 0 183
|
||||||
|
// Pain
|
||||||
|
FrameIndex PLAY W 0 0 // gut
|
||||||
|
FrameIndex PLAY X 0 83 // head
|
||||||
|
FrameIndex PLAY Y 0 88 // left
|
||||||
|
FrameIndex PLAY Z 0 124 // right
|
||||||
|
// Reload
|
||||||
|
FrameIndex PLYR A 0 386
|
||||||
|
FrameIndex PLYR B 0 387
|
||||||
|
FrameIndex PLYR C 0 388
|
||||||
|
FrameIndex PLYR D 0 389
|
||||||
|
FrameIndex PLYR E 0 390
|
||||||
|
FrameIndex PLYR F 0 391
|
||||||
|
// Crouch
|
||||||
|
FrameIndex PLYC A 0 53
|
||||||
|
FrameIndex PLYC B 0 56
|
||||||
|
FrameIndex PLYC C 0 59
|
||||||
|
FrameIndex PLYC D 0 62
|
||||||
|
FrameIndex PLYC E 0 75
|
||||||
|
// Turn
|
||||||
|
FrameIndex PLYT A 0 284
|
||||||
|
FrameIndex PLYT B 0 285
|
||||||
|
// Dead1 (Stomach)
|
||||||
|
FrameIndex PLD1 A 0 573
|
||||||
|
FrameIndex PLD1 B 0 574
|
||||||
|
FrameIndex PLD1 C 0 575
|
||||||
|
FrameIndex PLD1 D 0 576
|
||||||
|
FrameIndex PLD1 E 0 577
|
||||||
|
FrameIndex PLD1 F 0 578
|
||||||
|
FrameIndex PLD1 G 0 579
|
||||||
|
FrameIndex PLD1 H 0 580
|
||||||
|
FrameIndex PLD1 I 0 581
|
||||||
|
FrameIndex PLD1 J 0 582
|
||||||
|
FrameIndex PLD1 K 0 583
|
||||||
|
FrameIndex PLD1 L 0 584
|
||||||
|
FrameIndex PLD1 M 0 585
|
||||||
|
FrameIndex PLD1 N 0 586
|
||||||
|
FrameIndex PLD1 O 0 587
|
||||||
|
FrameIndex PLD1 P 0 588
|
||||||
|
FrameIndex PLD1 Q 0 589
|
||||||
|
FrameIndex PLD1 R 0 590
|
||||||
|
FrameIndex PLD1 S 0 591
|
||||||
|
FrameIndex PLD1 T 0 592
|
||||||
|
FrameIndex PLD1 U 0 593
|
||||||
|
FrameIndex PLD1 V 0 594
|
||||||
|
FrameIndex PLD1 W 0 595
|
||||||
|
// Dead2 (Spin back)
|
||||||
|
FrameIndex PLD2 A 0 515
|
||||||
|
FrameIndex PLD2 B 0 516
|
||||||
|
FrameIndex PLD2 C 0 517
|
||||||
|
FrameIndex PLD2 D 0 518
|
||||||
|
FrameIndex PLD2 E 0 519
|
||||||
|
FrameIndex PLD2 F 0 520
|
||||||
|
FrameIndex PLD2 G 0 521
|
||||||
|
FrameIndex PLD2 H 0 522
|
||||||
|
FrameIndex PLD2 I 0 523
|
||||||
|
FrameIndex PLD2 J 0 524
|
||||||
|
FrameIndex PLD2 K 0 525
|
||||||
|
FrameIndex PLD2 L 0 526
|
||||||
|
FrameIndex PLD2 M 0 527
|
||||||
|
FrameIndex PLD2 N 0 528
|
||||||
|
FrameIndex PLD2 O 0 529
|
||||||
|
FrameIndex PLD2 P 0 530
|
||||||
|
FrameIndex PLD2 Q 0 531
|
||||||
|
FrameIndex PLD2 R 0 532
|
||||||
|
// Dead3 (Fall back)
|
||||||
|
FrameIndex PLD3 A 0 533
|
||||||
|
FrameIndex PLD3 B 0 534
|
||||||
|
FrameIndex PLD3 C 0 535
|
||||||
|
FrameIndex PLD3 D 0 536
|
||||||
|
FrameIndex PLD3 E 0 537
|
||||||
|
FrameIndex PLD3 F 0 538
|
||||||
|
FrameIndex PLD3 G 0 539
|
||||||
|
FrameIndex PLD3 H 0 540
|
||||||
|
FrameIndex PLD3 I 0 541
|
||||||
|
FrameIndex PLD3 J 0 542
|
||||||
|
FrameIndex PLD3 K 0 543
|
||||||
|
FrameIndex PLD3 L 0 544
|
||||||
|
FrameIndex PLD3 M 0 545
|
||||||
|
FrameIndex PLD3 N 0 546
|
||||||
|
FrameIndex PLD3 O 0 547
|
||||||
|
FrameIndex PLD3 P 0 548
|
||||||
|
// Dead4 (Fall forward)
|
||||||
|
FrameIndex PLD4 A 0 549
|
||||||
|
FrameIndex PLD4 B 0 550
|
||||||
|
FrameIndex PLD4 C 0 551
|
||||||
|
FrameIndex PLD4 D 0 552
|
||||||
|
FrameIndex PLD4 E 0 553
|
||||||
|
FrameIndex PLD4 F 0 554
|
||||||
|
FrameIndex PLD4 G 0 555
|
||||||
|
FrameIndex PLD4 H 0 556
|
||||||
|
FrameIndex PLD4 I 0 557
|
||||||
|
FrameIndex PLD4 J 0 558
|
||||||
|
FrameIndex PLD4 K 0 559
|
||||||
|
FrameIndex PLD4 L 0 560
|
||||||
|
FrameIndex PLD4 M 0 561
|
||||||
|
// Dead5 (Leg blown)
|
||||||
|
FrameIndex PLD5 A 0 596
|
||||||
|
FrameIndex PLD5 B 0 597
|
||||||
|
FrameIndex PLD5 C 0 598
|
||||||
|
FrameIndex PLD5 D 0 599
|
||||||
|
FrameIndex PLD5 E 0 600
|
||||||
|
FrameIndex PLD5 F 0 601
|
||||||
|
FrameIndex PLD5 G 0 602
|
||||||
|
FrameIndex PLD5 H 0 603
|
||||||
|
FrameIndex PLD5 I 0 604
|
||||||
|
FrameIndex PLD5 J 0 605
|
||||||
|
FrameIndex PLD5 K 0 606
|
||||||
|
FrameIndex PLD5 L 0 607
|
||||||
|
FrameIndex PLD5 M 0 608
|
||||||
|
// Dead6 (Decapitate)
|
||||||
|
FrameIndex PLD6 A 0 562
|
||||||
|
FrameIndex PLD6 B 0 563
|
||||||
|
FrameIndex PLD6 C 0 564
|
||||||
|
FrameIndex PLD6 D 0 565
|
||||||
|
FrameIndex PLD6 E 0 566
|
||||||
|
FrameIndex PLD6 F 0 567
|
||||||
|
FrameIndex PLD6 G 0 568
|
||||||
|
FrameIndex PLD6 H 0 569
|
||||||
|
FrameIndex PLD6 I 0 570
|
||||||
|
FrameIndex PLD6 J 0 571
|
||||||
|
FrameIndex PLD6 K 0 572
|
||||||
|
// Dead7 (Turn and fall)
|
||||||
|
FrameIndex PLD7 A 0 640
|
||||||
|
FrameIndex PLD7 B 0 641
|
||||||
|
FrameIndex PLD7 C 0 642
|
||||||
|
FrameIndex PLD7 D 0 643
|
||||||
|
FrameIndex PLD7 E 0 644
|
||||||
|
FrameIndex PLD7 F 0 645
|
||||||
|
FrameIndex PLD7 G 0 646
|
||||||
|
FrameIndex PLD7 H 0 647
|
||||||
|
FrameIndex PLD7 I 0 648
|
||||||
|
FrameIndex PLD7 J 0 649
|
||||||
|
FrameIndex PLD7 K 0 650
|
||||||
|
// Dead9 (Zapped)
|
||||||
|
FrameIndex PLD9 A 0 609
|
||||||
|
FrameIndex PLD9 B 0 610
|
||||||
|
FrameIndex PLD9 C 0 611
|
||||||
|
FrameIndex PLD9 D 0 612
|
||||||
|
FrameIndex PLD9 E 0 613
|
||||||
|
FrameIndex PLD9 F 0 614
|
||||||
|
FrameIndex PLD9 G 0 615
|
||||||
|
FrameIndex PLD9 H 0 616
|
||||||
|
FrameIndex PLD9 I 0 617
|
||||||
|
FrameIndex PLD9 J 0 618
|
||||||
|
FrameIndex PLD9 K 0 619
|
||||||
|
FrameIndex PLD9 L 0 620
|
||||||
|
FrameIndex PLD9 M 0 621
|
||||||
|
FrameIndex PLD9 N 0 622
|
||||||
|
FrameIndex PLD9 O 0 623
|
||||||
|
FrameIndex PLD9 P 0 624
|
||||||
|
FrameIndex PLD9 Q 0 625
|
||||||
|
FrameIndex PLD9 R 0 626
|
||||||
|
FrameIndex PLD9 S 0 627
|
||||||
|
FrameIndex PLD9 T 0 628
|
||||||
|
//
|
||||||
|
FrameIndex PD9B A 0 629
|
||||||
|
FrameIndex PD9B B 0 630
|
||||||
|
FrameIndex PD9B C 0 631
|
||||||
|
FrameIndex PD9B D 0 632
|
||||||
|
FrameIndex PD9B E 0 633
|
||||||
|
FrameIndex PD9B F 0 634
|
||||||
|
FrameIndex PD9B G 0 635
|
||||||
|
FrameIndex PD9B H 0 636
|
||||||
|
FrameIndex PD9B I 0 637
|
||||||
|
FrameIndex PD9B J 0 638
|
||||||
|
FrameIndex PD9B K 0 639
|
||||||
|
// Taunt1
|
||||||
|
FrameIndex PLT1 A 0 5
|
||||||
|
FrameIndex PLT1 B 0 6
|
||||||
|
FrameIndex PLT1 C 0 7
|
||||||
|
FrameIndex PLT1 D 0 8
|
||||||
|
FrameIndex PLT1 E 0 9
|
||||||
|
FrameIndex PLT1 F 0 10
|
||||||
|
FrameIndex PLT1 G 0 11
|
||||||
|
FrameIndex PLT1 H 0 12
|
||||||
|
FrameIndex PLT1 I 0 13
|
||||||
|
FrameIndex PLT1 J 0 14
|
||||||
|
FrameIndex PLT1 K 0 15
|
||||||
|
FrameIndex PLT1 L 0 16
|
||||||
|
FrameIndex PLT1 M 0 17
|
||||||
|
FrameIndex PLT1 N 0 18
|
||||||
|
FrameIndex PLT1 O 0 19
|
||||||
|
// Victory
|
||||||
|
FrameIndex PLT2 A 0 259
|
||||||
|
FrameIndex PLT2 B 0 260
|
||||||
|
FrameIndex PLT2 C 0 261
|
||||||
|
FrameIndex PLT2 D 0 262
|
||||||
|
FrameIndex PLT2 E 0 263
|
||||||
|
FrameIndex PLT2 F 0 264
|
||||||
|
FrameIndex PLT2 G 0 265
|
||||||
|
FrameIndex PLT2 H 0 266
|
||||||
|
FrameIndex PLT2 I 0 267
|
||||||
|
FrameIndex PLT2 J 0 268
|
||||||
|
// Wave
|
||||||
|
FrameIndex PLT3 A 0 427
|
||||||
|
FrameIndex PLT3 B 0 428
|
||||||
|
FrameIndex PLT3 C 0 429
|
||||||
|
FrameIndex PLT3 D 0 430
|
||||||
|
FrameIndex PLT3 E 0 431
|
||||||
|
FrameIndex PLT3 F 0 432
|
||||||
|
FrameIndex PLT3 G 0 433
|
||||||
|
FrameIndex PLT3 H 0 434
|
||||||
|
FrameIndex PLT3 I 0 435
|
||||||
|
FrameIndex PLT3 J 0 436
|
||||||
|
FrameIndex PLT3 K 0 437
|
||||||
|
FrameIndex PLT3 L 0 438
|
||||||
|
FrameIndex PLT3 M 0 439
|
||||||
|
FrameIndex PLT3 N 0 440
|
||||||
|
FrameIndex PLT3 O 0 441
|
||||||
|
// Thrust
|
||||||
|
FrameIndex PLT4 A 0 465
|
||||||
|
FrameIndex PLT4 B 0 466
|
||||||
|
FrameIndex PLT4 C 0 467
|
||||||
|
FrameIndex PLT4 D 0 468
|
||||||
|
FrameIndex PLT4 E 0 469
|
||||||
|
FrameIndex PLT4 F 0 470
|
||||||
|
FrameIndex PLT4 G 0 471
|
||||||
|
FrameIndex PLT4 H 0 472
|
||||||
|
FrameIndex PLT4 I 0 473
|
||||||
|
FrameIndex PLT4 J 0 474
|
||||||
|
FrameIndex PLT4 K 0 475
|
||||||
|
FrameIndex PLT4 L 0 476
|
||||||
|
FrameIndex PLT4 M 0 477
|
||||||
|
FrameIndex PLT4 N 0 478
|
||||||
|
FrameIndex PLT4 O 0 479
|
||||||
|
}
|
||||||
325
modeldef.soldier
Normal file
|
|
@ -0,0 +1,325 @@
|
||||||
|
Model "UTPlayerTMale2"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "Soldier_d.3d"
|
||||||
|
SurfaceSkin 0 0 "sldr1.png"
|
||||||
|
SurfaceSkin 0 1 "sldr2.png"
|
||||||
|
SurfaceSkin 0 2 "sldr3.png"
|
||||||
|
SurfaceSkin 0 3 "sldr4.png"
|
||||||
|
SurfaceSkin 0 5 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset 0 -5 29
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
IGNORETRANSLATION // I'll figure out eventually how to make color changes work, but for now this is it
|
||||||
|
// Still
|
||||||
|
FrameIndex PLAY A 0 373
|
||||||
|
FrameIndex PLAY B 0 374
|
||||||
|
FrameIndex PLAY C 0 375
|
||||||
|
FrameIndex PLAY D 0 376
|
||||||
|
FrameIndex PLAY E 0 377
|
||||||
|
FrameIndex PLAY F 0 378
|
||||||
|
FrameIndex PLAY G 0 379
|
||||||
|
// Still (Air)
|
||||||
|
FrameIndex PLYA A 0 91
|
||||||
|
// Land
|
||||||
|
FrameIndex PLYL A 0 93
|
||||||
|
// Still (Swim)
|
||||||
|
FrameIndex PLYS A 0 235
|
||||||
|
FrameIndex PLYS B 0 237
|
||||||
|
FrameIndex PLYS C 0 239
|
||||||
|
FrameIndex PLYS D 0 241
|
||||||
|
FrameIndex PLYS E 0 243
|
||||||
|
FrameIndex PLYS F 0 245
|
||||||
|
FrameIndex PLYS G 0 247
|
||||||
|
// Run
|
||||||
|
FrameIndex PLAY H 0 137
|
||||||
|
FrameIndex PLAY I 0 139
|
||||||
|
FrameIndex PLAY J 0 141
|
||||||
|
FrameIndex PLAY K 0 143
|
||||||
|
FrameIndex PLAY L 0 145
|
||||||
|
// Run (Swim)
|
||||||
|
FrameIndex PLYS H 0 205
|
||||||
|
FrameIndex PLYS I 0 208
|
||||||
|
FrameIndex PLYS J 0 211
|
||||||
|
FrameIndex PLYS K 0 214
|
||||||
|
FrameIndex PLYS L 0 217
|
||||||
|
// Fire (Loop)
|
||||||
|
FrameIndex PLAY R 0 177
|
||||||
|
FrameIndex PLAY S 0 179
|
||||||
|
FrameIndex PLAY T 0 181
|
||||||
|
FrameIndex PLAY U 0 183
|
||||||
|
FrameIndex PLAY V 0 185
|
||||||
|
// Fire (Single)
|
||||||
|
FrameIndex PLAY M 0 187
|
||||||
|
FrameIndex PLAY N 0 189
|
||||||
|
FrameIndex PLAY O 0 191
|
||||||
|
FrameIndex PLAY P 0 193
|
||||||
|
FrameIndex PLAY Q 0 195
|
||||||
|
// Pain
|
||||||
|
FrameIndex PLAY W 0 0 // gut
|
||||||
|
FrameIndex PLAY X 0 90 // head
|
||||||
|
FrameIndex PLAY Y 0 95 // left
|
||||||
|
FrameIndex PLAY Z 0 136 // right
|
||||||
|
// Reload
|
||||||
|
FrameIndex PLYR A 0 400
|
||||||
|
FrameIndex PLYR B 0 401
|
||||||
|
FrameIndex PLYR C 0 402
|
||||||
|
FrameIndex PLYR D 0 403
|
||||||
|
FrameIndex PLYR E 0 404
|
||||||
|
FrameIndex PLYR F 0 405
|
||||||
|
FrameIndex PLYR G 0 406
|
||||||
|
FrameIndex PLYR H 0 407
|
||||||
|
// Crouch
|
||||||
|
FrameIndex PLYC A 0 60
|
||||||
|
FrameIndex PLYC B 0 63
|
||||||
|
FrameIndex PLYC C 0 66
|
||||||
|
FrameIndex PLYC D 0 69
|
||||||
|
FrameIndex PLYC E 0 72
|
||||||
|
// Turn
|
||||||
|
FrameIndex PLYT A 0 298
|
||||||
|
FrameIndex PLYT B 0 299
|
||||||
|
// Dead1 (Backflip)
|
||||||
|
FrameIndex PLD1 A 0 525
|
||||||
|
FrameIndex PLD1 B 0 526
|
||||||
|
FrameIndex PLD1 C 0 527
|
||||||
|
FrameIndex PLD1 D 0 528
|
||||||
|
FrameIndex PLD1 E 0 529
|
||||||
|
FrameIndex PLD1 F 0 530
|
||||||
|
FrameIndex PLD1 G 0 531
|
||||||
|
FrameIndex PLD1 H 0 532
|
||||||
|
FrameIndex PLD1 I 0 533
|
||||||
|
FrameIndex PLD1 J 0 534
|
||||||
|
FrameIndex PLD1 K 0 535
|
||||||
|
FrameIndex PLD1 L 0 536
|
||||||
|
FrameIndex PLD1 M 0 537
|
||||||
|
// Dead2 (Falling back)
|
||||||
|
FrameIndex PLD2 A 0 538
|
||||||
|
FrameIndex PLD2 B 0 539
|
||||||
|
FrameIndex PLD2 C 0 540
|
||||||
|
FrameIndex PLD2 D 0 541
|
||||||
|
FrameIndex PLD2 E 0 542
|
||||||
|
FrameIndex PLD2 F 0 543
|
||||||
|
FrameIndex PLD2 G 0 544
|
||||||
|
FrameIndex PLD2 H 0 545
|
||||||
|
FrameIndex PLD2 I 0 546
|
||||||
|
FrameIndex PLD2 J 0 547
|
||||||
|
FrameIndex PLD2 K 0 548
|
||||||
|
FrameIndex PLD2 L 0 549
|
||||||
|
FrameIndex PLD2 M 0 550
|
||||||
|
FrameIndex PLD2 N 0 551
|
||||||
|
FrameIndex PLD2 O 0 552
|
||||||
|
FrameIndex PLD2 P 0 553
|
||||||
|
// Dead3 (Falling forward)
|
||||||
|
FrameIndex PLD3 A 0 554
|
||||||
|
FrameIndex PLD3 B 0 555
|
||||||
|
FrameIndex PLD3 C 0 556
|
||||||
|
FrameIndex PLD3 D 0 557
|
||||||
|
FrameIndex PLD3 E 0 558
|
||||||
|
FrameIndex PLD3 F 0 559
|
||||||
|
FrameIndex PLD3 G 0 560
|
||||||
|
FrameIndex PLD3 H 0 561
|
||||||
|
FrameIndex PLD3 I 0 562
|
||||||
|
FrameIndex PLD3 J 0 563
|
||||||
|
FrameIndex PLD3 K 0 564
|
||||||
|
FrameIndex PLD3 L 0 565
|
||||||
|
FrameIndex PLD3 M 0 566
|
||||||
|
// Dead4 (Decapitate)
|
||||||
|
FrameIndex PLD4 A 0 567
|
||||||
|
FrameIndex PLD4 B 0 568
|
||||||
|
FrameIndex PLD4 C 0 569
|
||||||
|
FrameIndex PLD4 D 0 570
|
||||||
|
FrameIndex PLD4 E 0 571
|
||||||
|
FrameIndex PLD4 F 0 572
|
||||||
|
FrameIndex PLD4 G 0 573
|
||||||
|
FrameIndex PLD4 H 0 574
|
||||||
|
FrameIndex PLD4 I 0 575
|
||||||
|
FrameIndex PLD4 J 0 576
|
||||||
|
FrameIndex PLD4 K 0 577
|
||||||
|
FrameIndex PLD4 L 0 578
|
||||||
|
FrameIndex PLD4 M 0 579
|
||||||
|
FrameIndex PLD4 N 0 580
|
||||||
|
FrameIndex PLD4 O 0 581
|
||||||
|
FrameIndex PLD4 P 0 582
|
||||||
|
// Dead7 (Headshot)
|
||||||
|
FrameIndex PLD7 A 0 583
|
||||||
|
FrameIndex PLD7 B 0 584
|
||||||
|
FrameIndex PLD7 C 0 585
|
||||||
|
FrameIndex PLD7 D 0 586
|
||||||
|
FrameIndex PLD7 E 0 587
|
||||||
|
FrameIndex PLD7 F 0 588
|
||||||
|
FrameIndex PLD7 G 0 589
|
||||||
|
FrameIndex PLD7 H 0 590
|
||||||
|
FrameIndex PLD7 I 0 591
|
||||||
|
FrameIndex PLD7 J 0 592
|
||||||
|
FrameIndex PLD7 K 0 593
|
||||||
|
FrameIndex PLD7 L 0 594
|
||||||
|
FrameIndex PLD7 M 0 595
|
||||||
|
FrameIndex PLD7 N 0 596
|
||||||
|
FrameIndex PLD7 O 0 597
|
||||||
|
FrameIndex PLD7 P 0 598
|
||||||
|
FrameIndex PLD7 Q 0 599
|
||||||
|
FrameIndex PLD7 R 0 600
|
||||||
|
FrameIndex PLD7 S 0 601
|
||||||
|
FrameIndex PLD7 T 0 602
|
||||||
|
FrameIndex PLD7 U 0 603
|
||||||
|
// Dead8 (Stomach)
|
||||||
|
FrameIndex PLD8 A 0 604
|
||||||
|
FrameIndex PLD8 B 0 605
|
||||||
|
FrameIndex PLD8 C 0 606
|
||||||
|
FrameIndex PLD8 D 0 607
|
||||||
|
FrameIndex PLD8 E 0 608
|
||||||
|
FrameIndex PLD8 F 0 609
|
||||||
|
FrameIndex PLD8 G 0 610
|
||||||
|
FrameIndex PLD8 H 0 611
|
||||||
|
FrameIndex PLD8 I 0 612
|
||||||
|
FrameIndex PLD8 J 0 613
|
||||||
|
FrameIndex PLD8 K 0 614
|
||||||
|
FrameIndex PLD8 L 0 615
|
||||||
|
FrameIndex PLD8 M 0 616
|
||||||
|
FrameIndex PLD8 N 0 617
|
||||||
|
FrameIndex PLD8 O 0 618
|
||||||
|
FrameIndex PLD8 P 0 619
|
||||||
|
FrameIndex PLD8 Q 0 620
|
||||||
|
FrameIndex PLD8 R 0 621
|
||||||
|
// Dead9 (Zapped)
|
||||||
|
FrameIndex PLD9 A 0 622
|
||||||
|
FrameIndex PLD9 B 0 623
|
||||||
|
FrameIndex PLD9 C 0 624
|
||||||
|
FrameIndex PLD9 D 0 625
|
||||||
|
FrameIndex PLD9 E 0 626
|
||||||
|
FrameIndex PLD9 F 0 627
|
||||||
|
FrameIndex PLD9 G 0 628
|
||||||
|
FrameIndex PLD9 H 0 629
|
||||||
|
FrameIndex PLD9 I 0 630
|
||||||
|
FrameIndex PLD9 J 0 631
|
||||||
|
FrameIndex PLD9 K 0 632
|
||||||
|
FrameIndex PLD9 L 0 633
|
||||||
|
FrameIndex PLD9 M 0 634
|
||||||
|
FrameIndex PLD9 N 0 635
|
||||||
|
FrameIndex PLD9 O 0 636
|
||||||
|
FrameIndex PLD9 P 0 637
|
||||||
|
FrameIndex PLD9 Q 0 638
|
||||||
|
FrameIndex PLD9 R 0 639
|
||||||
|
FrameIndex PLD9 S 0 640
|
||||||
|
FrameIndex PLD9 T 0 641
|
||||||
|
//
|
||||||
|
FrameIndex PD9B A 0 642
|
||||||
|
FrameIndex PD9B B 0 643
|
||||||
|
FrameIndex PD9B C 0 644
|
||||||
|
FrameIndex PD9B D 0 645
|
||||||
|
FrameIndex PD9B E 0 646
|
||||||
|
FrameIndex PD9B F 0 647
|
||||||
|
FrameIndex PD9B G 0 648
|
||||||
|
FrameIndex PD9B H 0 649
|
||||||
|
FrameIndex PD9B I 0 650
|
||||||
|
FrameIndex PD9B J 0 651
|
||||||
|
// Dead11 (Spinning)
|
||||||
|
FrameIndex PD11 A 0 652
|
||||||
|
FrameIndex PD11 B 0 653
|
||||||
|
FrameIndex PD11 C 0 654
|
||||||
|
FrameIndex PD11 D 0 655
|
||||||
|
FrameIndex PD11 E 0 656
|
||||||
|
FrameIndex PD11 F 0 657
|
||||||
|
FrameIndex PD11 G 0 658
|
||||||
|
FrameIndex PD11 H 0 659
|
||||||
|
FrameIndex PD11 I 0 660
|
||||||
|
FrameIndex PD11 J 0 661
|
||||||
|
FrameIndex PD11 K 0 662
|
||||||
|
FrameIndex PD11 L 0 663
|
||||||
|
FrameIndex PD11 M 0 664
|
||||||
|
FrameIndex PD11 N 0 665
|
||||||
|
FrameIndex PD11 O 0 666
|
||||||
|
FrameIndex PD11 P 0 667
|
||||||
|
FrameIndex PD11 Q 0 668
|
||||||
|
FrameIndex PD11 R 0 669
|
||||||
|
// Taunt1
|
||||||
|
FrameIndex PLT1 A 0 5
|
||||||
|
FrameIndex PLT1 B 0 6
|
||||||
|
FrameIndex PLT1 C 0 7
|
||||||
|
FrameIndex PLT1 D 0 8
|
||||||
|
FrameIndex PLT1 E 0 9
|
||||||
|
FrameIndex PLT1 F 0 10
|
||||||
|
FrameIndex PLT1 G 0 11
|
||||||
|
FrameIndex PLT1 H 0 12
|
||||||
|
FrameIndex PLT1 I 0 13
|
||||||
|
FrameIndex PLT1 J 0 14
|
||||||
|
FrameIndex PLT1 K 0 15
|
||||||
|
FrameIndex PLT1 L 0 16
|
||||||
|
FrameIndex PLT1 M 0 17
|
||||||
|
FrameIndex PLT1 N 0 18
|
||||||
|
FrameIndex PLT1 O 0 19
|
||||||
|
FrameIndex PLT1 P 0 20
|
||||||
|
FrameIndex PLT1 Q 0 21
|
||||||
|
FrameIndex PLT1 R 0 22
|
||||||
|
FrameIndex PLT1 S 0 23
|
||||||
|
FrameIndex PLT1 T 0 24
|
||||||
|
// Victory
|
||||||
|
FrameIndex PLT2 A 0 265
|
||||||
|
FrameIndex PLT2 B 0 266
|
||||||
|
FrameIndex PLT2 C 0 267
|
||||||
|
FrameIndex PLT2 D 0 268
|
||||||
|
FrameIndex PLT2 E 0 269
|
||||||
|
FrameIndex PLT2 F 0 270
|
||||||
|
FrameIndex PLT2 G 0 271
|
||||||
|
FrameIndex PLT2 H 0 272
|
||||||
|
FrameIndex PLT2 I 0 273
|
||||||
|
FrameIndex PLT2 J 0 274
|
||||||
|
FrameIndex PLT2 K 0 275
|
||||||
|
FrameIndex PLT2 L 0 276
|
||||||
|
FrameIndex PLT2 M 0 277
|
||||||
|
FrameIndex PLT2 N 0 278
|
||||||
|
FrameIndex PLT2 O 0 279
|
||||||
|
FrameIndex PLT2 P 0 280
|
||||||
|
FrameIndex PLT2 Q 0 281
|
||||||
|
FrameIndex PLT2 R 0 282
|
||||||
|
// Wave
|
||||||
|
FrameIndex PLT3 A 0 448
|
||||||
|
FrameIndex PLT3 B 0 449
|
||||||
|
FrameIndex PLT3 C 0 450
|
||||||
|
FrameIndex PLT3 D 0 451
|
||||||
|
FrameIndex PLT3 E 0 452
|
||||||
|
FrameIndex PLT3 F 0 453
|
||||||
|
FrameIndex PLT3 G 0 454
|
||||||
|
FrameIndex PLT3 H 0 455
|
||||||
|
FrameIndex PLT3 I 0 456
|
||||||
|
FrameIndex PLT3 J 0 457
|
||||||
|
FrameIndex PLT3 K 0 458
|
||||||
|
FrameIndex PLT3 L 0 459
|
||||||
|
FrameIndex PLT3 M 0 460
|
||||||
|
FrameIndex PLT3 N 0 461
|
||||||
|
FrameIndex PLT3 O 0 462
|
||||||
|
// Thrust
|
||||||
|
FrameIndex PLT4 A 0 486
|
||||||
|
FrameIndex PLT4 B 0 487
|
||||||
|
FrameIndex PLT4 C 0 488
|
||||||
|
FrameIndex PLT4 D 0 489
|
||||||
|
FrameIndex PLT4 E 0 490
|
||||||
|
FrameIndex PLT4 F 0 491
|
||||||
|
FrameIndex PLT4 G 0 492
|
||||||
|
FrameIndex PLT4 H 0 493
|
||||||
|
FrameIndex PLT4 I 0 494
|
||||||
|
FrameIndex PLT4 J 0 495
|
||||||
|
FrameIndex PLT4 K 0 496
|
||||||
|
FrameIndex PLT4 L 0 497
|
||||||
|
FrameIndex PLT4 M 0 498
|
||||||
|
FrameIndex PLT4 N 0 499
|
||||||
|
FrameIndex PLT4 O 0 500
|
||||||
|
}
|
||||||
|
|
||||||
|
// Will use Soldier model
|
||||||
|
Model "TranslocatorAfterimage"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "Soldier_d.3d"
|
||||||
|
SurfaceSkin 0 0 "sldr1.png"
|
||||||
|
SurfaceSkin 0 1 "sldr2.png"
|
||||||
|
SurfaceSkin 0 2 "sldr3.png"
|
||||||
|
SurfaceSkin 0 3 "sldr4.png"
|
||||||
|
SurfaceSkin 0 5 "GunPick1.png"
|
||||||
|
Scale 0.256 0.23 0.23
|
||||||
|
Offset 0 -5 29
|
||||||
|
RollOffset -90
|
||||||
|
AngleOffset -90
|
||||||
|
FrameIndex PLAY A 0 187
|
||||||
|
}
|
||||||
BIN
models/Boss_a.3d
Normal file
BIN
models/Boss_d.3d
Normal file
BIN
models/Commando_a.3d
Normal file
BIN
models/Commando_d.3d
Normal file
BIN
models/FCommando_a.3d
Normal file
BIN
models/FCommando_d.3d
Normal file
BIN
models/GunPick1.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
models/JPulse3rd_01.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
models/SGirl_a.3d
Normal file
BIN
models/SGirl_d.3d
Normal file
BIN
models/Soldier_a.3d
Normal file
BIN
models/Soldier_d.3d
Normal file
BIN
models/army1.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
models/army2.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
models/army3.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
models/army4.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
models/boss1.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
models/boss2.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
models/boss3.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
models/boss4.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
models/bossarmm_a.3d
Normal file
BIN
models/bossarmm_d.3d
Normal file
BIN
models/bossgibT.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
models/bossthighm_a.3d
Normal file
BIN
models/bossthighm_d.3d
Normal file
BIN
models/cmdo1.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
models/cmdo2.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
models/cmdo3.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
models/cmdo4.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
models/fcmd1.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
models/fcmd2.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
models/fcmd4.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
models/sldr1.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
models/sldr2.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
models/sldr3.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
models/sldr4.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
|
|
@ -42,7 +42,7 @@ $playeralias tmale1 neutral *pain50 ut/malepain3
|
||||||
$playeralias tmale1 neutral *pain25 ut/malepain4
|
$playeralias tmale1 neutral *pain25 ut/malepain4
|
||||||
$playeralias tmale1 neutral *grunt ut/malegrunt
|
$playeralias tmale1 neutral *grunt ut/malegrunt
|
||||||
$playeralias tmale1 neutral *land DSEMPTY
|
$playeralias tmale1 neutral *land DSEMPTY
|
||||||
$playeralias tmale1 neutral *uland ut/land1
|
$playeralias tmale1 neutral *uland ut/land
|
||||||
$playeralias tmale1 neutral *jump ut/malejump1
|
$playeralias tmale1 neutral *jump ut/malejump1
|
||||||
$playeralias tmale1 neutral *usefail ut/malehump1
|
$playeralias tmale1 neutral *usefail ut/malehump1
|
||||||
$playeralias tmale1 neutral *surface ut/malesurface
|
$playeralias tmale1 neutral *surface ut/malesurface
|
||||||
|
|
@ -166,6 +166,7 @@ ut/bossfootstep bfootstp
|
||||||
|
|
||||||
ut/playerfootstepwet lsplash
|
ut/playerfootstepwet lsplash
|
||||||
ut/wetsplash dsplash
|
ut/wetsplash dsplash
|
||||||
|
ut/wetsurface wtrexit1
|
||||||
|
|
||||||
// everything else
|
// everything else
|
||||||
|
|
||||||
|
|
@ -206,6 +207,7 @@ misc/gibp3 gibp4
|
||||||
misc/gibp4 gibp5
|
misc/gibp4 gibp5
|
||||||
misc/gibp5 gibp6
|
misc/gibp5 gibp6
|
||||||
$random misc/gibp { misc/gibp1 misc/gibp2 misc/gibp3 misc/gibp4 misc/gibp5 }
|
$random misc/gibp { misc/gibp1 misc/gibp2 misc/gibp3 misc/gibp4 misc/gibp5 }
|
||||||
|
misc/corpsefall thump
|
||||||
|
|
||||||
impact/select imppick
|
impact/select imppick
|
||||||
impact/pull impaltst
|
impact/pull impaltst
|
||||||
|
|
|
||||||
BIN
sounds/Thump.ogg
Normal file
BIN
sounds/WtrExit1.ogg
Normal file
|
|
@ -91,6 +91,7 @@ Class BioHitbox : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+NOBLOOD;
|
+NOBLOOD;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -823,6 +824,8 @@ Class BioRifle : UTWeapon
|
||||||
invoker.charge = min(5.1,invoker.charge+0.1);
|
invoker.charge = min(5.1,invoker.charge+0.1);
|
||||||
A_Overlay(-9999,null);
|
A_Overlay(-9999,null);
|
||||||
A_WeaponOffset(0,32); // fix sudden psprite lowering
|
A_WeaponOffset(0,32); // fix sudden psprite lowering
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayAttacking3();
|
||||||
}
|
}
|
||||||
BIOF A 2 A_BioFire(true);
|
BIOF A 2 A_BioFire(true);
|
||||||
BIOF BCDEFGHI 2;
|
BIOF BCDEFGHI 2;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ Class SawImpact : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -251,159 +251,3 @@ Class ActMedBox : UTActivatableHealth
|
||||||
Stop;
|
Stop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alternative player classes for compatibility with Heretic sprites
|
|
||||||
Class UTPlayerHereticCompat : UTPlayer
|
|
||||||
{
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.ColorRange 225, 240;
|
|
||||||
Player.Colorset 0, "Green", 225, 240, 238;
|
|
||||||
Player.Colorset 1, "Yellow", 114, 129, 127;
|
|
||||||
Player.Colorset 2, "Red", 145, 160, 158;
|
|
||||||
Player.Colorset 3, "Blue", 190, 205, 203;
|
|
||||||
Player.Colorset 4, "Brown", 67, 82, 80;
|
|
||||||
Player.Colorset 5, "Light Gray", 9, 24, 22;
|
|
||||||
Player.Colorset 6, "Light Brown", 74, 89, 87;
|
|
||||||
Player.Colorset 7, "Light Red", 150, 165, 163;
|
|
||||||
Player.Colorset 8, "Light Blue", 192, 207, 205;
|
|
||||||
Player.Colorset 9, "Beige", 95, 110, 108;
|
|
||||||
}
|
|
||||||
States
|
|
||||||
{
|
|
||||||
Spawn:
|
|
||||||
PLAY A -1;
|
|
||||||
Stop;
|
|
||||||
See:
|
|
||||||
PLAY ABCD 4;
|
|
||||||
Loop;
|
|
||||||
Melee:
|
|
||||||
Missile:
|
|
||||||
PLAY F 6 BRIGHT;
|
|
||||||
PLAY E 12;
|
|
||||||
Goto Spawn;
|
|
||||||
Pain:
|
|
||||||
PLAY G 4;
|
|
||||||
PLAY G 4 A_Pain;
|
|
||||||
Goto Spawn;
|
|
||||||
Death:
|
|
||||||
PLAY H 6 A_PlayerSkinCheck("AltSkinDeath");
|
|
||||||
PLAY I 6 A_PlayerScream;
|
|
||||||
PLAY JK 6;
|
|
||||||
PLAY L 6 A_NoBlocking;
|
|
||||||
PLAY MNO 6;
|
|
||||||
PLAY P -1;
|
|
||||||
Stop;
|
|
||||||
XDeath:
|
|
||||||
PLAY Q 0 A_PlayerSkinCheck("AltSkinXDeath");
|
|
||||||
PLAY Q 5 A_PlayerScream;
|
|
||||||
PLAY R 0 A_NoBlocking;
|
|
||||||
PLAY R 5 A_SkullPop;
|
|
||||||
PLAY STUVWX 5;
|
|
||||||
PLAY Y -1;
|
|
||||||
Stop;
|
|
||||||
Burn:
|
|
||||||
FDTH A 5 BRIGHT A_PlaySound("*burndeath");
|
|
||||||
FDTH B 4 BRIGHT;
|
|
||||||
FDTH C 5 BRIGHT;
|
|
||||||
FDTH D 4 BRIGHT A_PlayerScream;
|
|
||||||
FDTH E 5 BRIGHT;
|
|
||||||
FDTH F 4 BRIGHT;
|
|
||||||
FDTH G 5 BRIGHT A_PlaySound("*burndeath");
|
|
||||||
FDTH H 4 BRIGHT;
|
|
||||||
FDTH I 5 BRIGHT;
|
|
||||||
FDTH J 4 BRIGHT;
|
|
||||||
FDTH K 5 BRIGHT;
|
|
||||||
FDTH L 4 BRIGHT;
|
|
||||||
FDTH M 5 BRIGHT;
|
|
||||||
FDTH N 4 BRIGHT;
|
|
||||||
FDTH O 5 BRIGHT A_NoBlocking;
|
|
||||||
FDTH P 4 BRIGHT;
|
|
||||||
FDTH Q 5 BRIGHT;
|
|
||||||
FDTH R 4 BRIGHT;
|
|
||||||
ACLO E 35 A_CheckPlayerDone;
|
|
||||||
Wait;
|
|
||||||
AltSkinDeath:
|
|
||||||
PLAY H 10;
|
|
||||||
PLAY I 10 A_PlayerScream;
|
|
||||||
PLAY J 10 A_NoBlocking;
|
|
||||||
PLAY KLM 10;
|
|
||||||
PLAY N -1;
|
|
||||||
Stop;
|
|
||||||
AltSkinXDeath:
|
|
||||||
PLAY O 5;
|
|
||||||
PLAY P 5 A_XScream;
|
|
||||||
PLAY Q 5 A_NoBlocking;
|
|
||||||
PLAY RSTUV 5;
|
|
||||||
PLAY W -1;
|
|
||||||
Stop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Class UTPlayerHereticCompatTMale1 : UTPlayerHereticCompat
|
|
||||||
{
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.SoundClass "tmale1";
|
|
||||||
Player.DisplayName "$N_TMALE1";
|
|
||||||
Player.Portrait "Blake";
|
|
||||||
UTPlayer.VoiceType VOICE_MaleOne;
|
|
||||||
-NOMENU;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Class UTPlayerHereticCompatTMale2 : UTPlayerHereticCompat
|
|
||||||
{
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.SoundClass "tmale2";
|
|
||||||
Player.DisplayName "$N_TMALE2";
|
|
||||||
Player.Portrait "Brock";
|
|
||||||
UTPlayer.VoiceType VOICE_MaleTwo;
|
|
||||||
-NOMENU;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Class UTPlayerHereticCompatTFemale1 : UTPlayerHereticCompat
|
|
||||||
{
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.SoundClass "tfemale";
|
|
||||||
Player.DisplayName "$N_TFEMALE1";
|
|
||||||
Player.Portrait "Ivana";
|
|
||||||
UTPlayer.DollType DOLL_Female;
|
|
||||||
UTPlayer.VoiceType VOICE_FemaleOne;
|
|
||||||
-NOMENU;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Class UTPlayerHereticCompatTFemale2 : UTPlayerHereticCompat
|
|
||||||
{
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.SoundClass "tfemale";
|
|
||||||
Player.DisplayName "$N_TFEMALE2";
|
|
||||||
Player.Portrait "Lauren";
|
|
||||||
UTPlayer.DollType DOLL_Female;
|
|
||||||
UTPlayer.VoiceType VOICE_FemaleTwo;
|
|
||||||
-NOMENU;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Class UTPlayerHereticCompatTBoss : UTPlayerHereticCompat
|
|
||||||
{
|
|
||||||
transient CVar bossfootsteps;
|
|
||||||
Default
|
|
||||||
{
|
|
||||||
Player.SoundClass "tboss";
|
|
||||||
Player.DisplayName "$N_TBOSS";
|
|
||||||
Player.Portrait "Xan";
|
|
||||||
UTPlayer.DollType DOLL_Boss;
|
|
||||||
UTPlayer.VoiceType VOICE_Boss;
|
|
||||||
// should have NOBLOOD, but Xan did bleed in vanilla UT so...
|
|
||||||
// (this is what gave birth to the theory that Xan was actually Jerl Liandri himself)
|
|
||||||
-NOMENU;
|
|
||||||
}
|
|
||||||
override void PlayFootstep( double vol )
|
|
||||||
{
|
|
||||||
if ( !bossfootsteps ) bossfootsteps = CVar.GetCVar('flak_bossfootsteps',players[consoleplayer]);
|
|
||||||
if ( bossfootsteps.GetBool() ) A_PlaySound("ut/bossfootstep",CHAN_5,vol);
|
|
||||||
else Super.PlayFootstep(vol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -67,6 +67,7 @@ Class UTRocketTrail : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.7;
|
Scale 0.7;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
|
|
@ -359,6 +360,8 @@ Class UTRocketLauncher : UTWeapon
|
||||||
else A_PlaySound("utrl/fire",CHAN_WEAPON);
|
else A_PlaySound("utrl/fire",CHAN_WEAPON);
|
||||||
invoker.FireEffect();
|
invoker.FireEffect();
|
||||||
UTMainHandler.DoFlash(self,Color(64,255,0,0),1);
|
UTMainHandler.DoFlash(self,Color(64,255,0,0),1);
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayAttacking3();
|
||||||
A_AlertMonsters();
|
A_AlertMonsters();
|
||||||
A_QuakeEx(2+num,2+num,2+num,6+num,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1+num*0.05);
|
A_QuakeEx(2+num,2+num,2+num,6+num,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1+num*0.05);
|
||||||
for ( int i=0; i<num; i++ )
|
for ( int i=0; i<num; i++ )
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ Class BulletImpact : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.25;
|
Scale 0.25;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
|
|
@ -102,6 +103,7 @@ Class UTCasing : Actor
|
||||||
+THRUACTORS;
|
+THRUACTORS;
|
||||||
+USEBOUNCESTATE;
|
+USEBOUNCESTATE;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOTELEPORT;
|
||||||
Mass 1;
|
Mass 1;
|
||||||
Gravity 0.35;
|
Gravity 0.35;
|
||||||
BounceType "Hexen";
|
BounceType "Hexen";
|
||||||
|
|
@ -542,7 +544,12 @@ Class Enforcer : UTWeapon
|
||||||
}
|
}
|
||||||
ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
||||||
ENR2 AB 1;
|
ENR2 AB 1;
|
||||||
ENR2 B 30 A_PlaySound("enforcer/reload",CHAN_WEAPON);
|
ENR2 B 30
|
||||||
|
{
|
||||||
|
A_PlaySound("enforcer/reload",CHAN_WEAPON);
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayReloading();
|
||||||
|
}
|
||||||
ENFS A 0 A_PlaySound("enforcer/select",CHAN_WEAPON);
|
ENFS A 0 A_PlaySound("enforcer/select",CHAN_WEAPON);
|
||||||
Goto Ready;
|
Goto Ready;
|
||||||
LeftReload:
|
LeftReload:
|
||||||
|
|
@ -555,7 +562,12 @@ Class Enforcer : UTWeapon
|
||||||
}
|
}
|
||||||
2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
||||||
2NR2 AB 1;
|
2NR2 AB 1;
|
||||||
2NR2 B 30 A_PlaySound("enforcer/reload",CHAN_6);
|
2NR2 B 30
|
||||||
|
{
|
||||||
|
A_PlaySound("enforcer/reload",CHAN_6);
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayReloading();
|
||||||
|
}
|
||||||
2NFS A 0 A_PlaySound("enforcer/select",CHAN_6);
|
2NFS A 0 A_PlaySound("enforcer/select",CHAN_6);
|
||||||
Goto LeftReady;
|
Goto LeftReady;
|
||||||
Deselect:
|
Deselect:
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ Class ChunkTrail : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.2;
|
Scale 0.2;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
|
|
@ -387,6 +388,7 @@ Class SlugSmoke : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ Class HammerImpact : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -290,7 +291,12 @@ Class ImpactHammer : UTWeapon
|
||||||
IMPR A 0 A_ImpactRefire("Hold");
|
IMPR A 0 A_ImpactRefire("Hold");
|
||||||
Goto Release;
|
Goto Release;
|
||||||
Release:
|
Release:
|
||||||
IMPF A 0 A_FireBlast();
|
IMPF A 0
|
||||||
|
{
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayAttacking3();
|
||||||
|
A_FireBlast();
|
||||||
|
}
|
||||||
IMPF AABCCDEEFGGHIIJKKLMMNOOP 1;
|
IMPF AABCCDEEFGGHIIJKKLMMNOOP 1;
|
||||||
Goto Idle;
|
Goto Idle;
|
||||||
AltFire:
|
AltFire:
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ Class MinigunTracer : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -289,6 +289,7 @@ Class PulseBoltCap : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.3;
|
Scale 0.3;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
|
|
@ -327,6 +328,7 @@ Class PulseBoltHit : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.3;
|
Scale 0.3;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
|
|
@ -498,6 +500,7 @@ Class PulseBolt : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
@ -807,7 +810,12 @@ Class PulseGun : UTWeapon
|
||||||
Reload:
|
Reload:
|
||||||
PGNI A 1;
|
PGNI A 1;
|
||||||
PGNI A 0 A_JumpIf(invoker.clipcount >= Min(50,invoker.Ammo1.Amount),"Idle");
|
PGNI A 0 A_JumpIf(invoker.clipcount >= Min(50,invoker.Ammo1.Amount),"Idle");
|
||||||
PGNR A 1 A_Reloading();
|
PGNR A 1
|
||||||
|
{
|
||||||
|
A_Reloading();
|
||||||
|
if ( self is 'UTPlayer' )
|
||||||
|
UTPlayer(self).PlayReloading();
|
||||||
|
}
|
||||||
PGNR BCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
PGNR BCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
||||||
PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1;
|
PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1;
|
||||||
Goto Idle;
|
Goto Idle;
|
||||||
|
|
|
||||||
|
|
@ -142,13 +142,6 @@ Class Razor2 : Actor
|
||||||
}
|
}
|
||||||
Goto Spawn;
|
Goto Spawn;
|
||||||
Death:
|
Death:
|
||||||
TNT1 A 0
|
|
||||||
{
|
|
||||||
angle += 180;
|
|
||||||
pitch *= -1;
|
|
||||||
A_RazorHit();
|
|
||||||
}
|
|
||||||
XDeath:
|
|
||||||
TNT1 A 1 A_StopSound(CHAN_VOICE);
|
TNT1 A 1 A_StopSound(CHAN_VOICE);
|
||||||
Stop;
|
Stop;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ Class ShockRifleWave : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
@ -95,6 +96,7 @@ Class SuperShockRifleWave : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
@ -123,6 +125,7 @@ Class ShockBeamRing : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
@ -150,6 +153,7 @@ Class SuperShockBeamRing : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
@ -283,6 +287,7 @@ Class ShockBeam : Actor
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -516,6 +521,7 @@ Class SuperShockBeam : Actor
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+EXTREMEDEATH;
|
+EXTREMEDEATH;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -824,6 +830,7 @@ Class ShockHitbox : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ Class ModuleHitbox : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+NOBLOOD;
|
+NOBLOOD;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
||||||
{
|
{
|
||||||
|
|
@ -100,6 +101,7 @@ Class TranslocatorGlow : Actor
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
RenderStyle "AddShaded";
|
RenderStyle "AddShaded";
|
||||||
StencilColor "FFFFFF";
|
StencilColor "FFFFFF";
|
||||||
Scale 0.5;
|
Scale 0.5;
|
||||||
|
|
@ -265,8 +267,6 @@ Class TranslocatorAfterimage : Actor
|
||||||
angle = target.angle;
|
angle = target.angle;
|
||||||
pitch = target.pitch;
|
pitch = target.pitch;
|
||||||
roll = target.roll;
|
roll = target.roll;
|
||||||
sprite = target.sprite;
|
|
||||||
frame = target.frame;
|
|
||||||
vel = (FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5));
|
vel = (FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5));
|
||||||
}
|
}
|
||||||
action void A_Spread()
|
action void A_Spread()
|
||||||
|
|
@ -277,8 +277,8 @@ Class TranslocatorAfterimage : Actor
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
Spawn:
|
Spawn:
|
||||||
#### # 10 A_SetTics(Random[Transloc](20,50));
|
PLAY A 10 A_SetTics(Random[Transloc](20,50));
|
||||||
#### # 1 A_Spread();
|
PLAY A 1 A_Spread();
|
||||||
Wait;
|
Wait;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
Class UTPlayer : DoomPlayer
|
Class UTPlayer : DoomPlayer
|
||||||
{
|
{
|
||||||
bool lastground;
|
bool lastground;
|
||||||
|
int lastwaterlevel;
|
||||||
int lastgroundtic;
|
int lastgroundtic;
|
||||||
double lastvelz, prevvelz;
|
double lastvelz, prevvelz;
|
||||||
transient CVar footsteps;
|
transient CVar footsteps;
|
||||||
|
|
@ -11,6 +12,18 @@ Class UTPlayer : DoomPlayer
|
||||||
int last_tap_fm, last_tap_sm;
|
int last_tap_fm, last_tap_sm;
|
||||||
int last_jump_held;
|
int last_jump_held;
|
||||||
|
|
||||||
|
int tempslide;
|
||||||
|
double ssup;
|
||||||
|
int corpsetime;
|
||||||
|
bool headless, leglessR, leglessL, armlessR, armlessL, torsoless;
|
||||||
|
// these are gibber hints to disable spawning some parts
|
||||||
|
// headless: missing head
|
||||||
|
// leglessR: missing right leg
|
||||||
|
// leglessL: mising left leg
|
||||||
|
// armlessR: missing right arm
|
||||||
|
// armlessL: mising left arm
|
||||||
|
// torsoless: missing torso
|
||||||
|
|
||||||
int dolltype, voicetype;
|
int dolltype, voicetype;
|
||||||
|
|
||||||
Property DollType : dolltype;
|
Property DollType : dolltype;
|
||||||
|
|
@ -174,7 +187,7 @@ Class UTPlayer : DoomPlayer
|
||||||
let type = (class<Inventory>)(AllActorClasses[i]);
|
let type = (class<Inventory>)(AllActorClasses[i]);
|
||||||
if ( !type ) continue;
|
if ( !type ) continue;
|
||||||
let def = GetDefaultByType(type);
|
let def = GetDefaultByType(type);
|
||||||
if ( !(self is "UTPlayerHereticCompat")
|
if ( !(gameinfo.gametype&GAME_Raven)
|
||||||
&& ((type is "UTActivatable") || (type is "UTActivatableHealth")) )
|
&& ((type is "UTActivatable") || (type is "UTActivatableHealth")) )
|
||||||
continue; // don't give these outside of Heretic/Hexen
|
continue; // don't give these outside of Heretic/Hexen
|
||||||
if ( def.Icon.isValid() && (def.MaxAmount > 1) &&
|
if ( def.Icon.isValid() && (def.MaxAmount > 1) &&
|
||||||
|
|
@ -226,7 +239,7 @@ Class UTPlayer : DoomPlayer
|
||||||
bNOFRICTIONBOUNCE = false;
|
bNOFRICTIONBOUNCE = false;
|
||||||
}
|
}
|
||||||
if ( !footsteps ) footsteps = CVar.GetCVar('flak_footsteps',players[consoleplayer]);
|
if ( !footsteps ) footsteps = CVar.GetCVar('flak_footsteps',players[consoleplayer]);
|
||||||
if ( !footsteps.GetBool() ) return;
|
if ( !footsteps.GetBool() || (Health <= 0) ) return;
|
||||||
double ang = level.time/(20*TICRATE/35.)*360.;
|
double ang = level.time/(20*TICRATE/35.)*360.;
|
||||||
bool forcefootstep = false;
|
bool forcefootstep = false;
|
||||||
if ( player.onground && !bNoGravity && !lastground && (waterlevel < 2) )
|
if ( player.onground && !bNoGravity && !lastground && (waterlevel < 2) )
|
||||||
|
|
@ -237,9 +250,15 @@ Class UTPlayer : DoomPlayer
|
||||||
double vol = clamp((-lastvelz-8)*0.05,0.01,1.0);
|
double vol = clamp((-lastvelz-8)*0.05,0.01,1.0);
|
||||||
if ( ((waterlevel > 0) || GetFloorTerrain().IsLiquid) && !bOnMobj ) A_PlaySound("ut/wetsplash",CHAN_AUTO,vol);
|
if ( ((waterlevel > 0) || GetFloorTerrain().IsLiquid) && !bOnMobj ) A_PlaySound("ut/wetsplash",CHAN_AUTO,vol);
|
||||||
else A_PlaySound("*uland",CHAN_AUTO,vol);
|
else A_PlaySound("*uland",CHAN_AUTO,vol);
|
||||||
|
PlayLanding();
|
||||||
}
|
}
|
||||||
else forcefootstep = true;
|
else forcefootstep = true;
|
||||||
}
|
}
|
||||||
|
if ( tempslide )
|
||||||
|
{
|
||||||
|
tempslide = max(0,tempslide-1);
|
||||||
|
if ( !tempslide ) forcefootstep = true;
|
||||||
|
}
|
||||||
if ( forcefootstep || ((abs(sin(ang)) >= 1.0) && player.onground && lastground && (player.jumptics == 0) && (player.cmd.forwardmove || player.cmd.sidemove) && (waterlevel < 2)) )
|
if ( forcefootstep || ((abs(sin(ang)) >= 1.0) && player.onground && lastground && (player.jumptics == 0) && (player.cmd.forwardmove || player.cmd.sidemove) && (waterlevel < 2)) )
|
||||||
{
|
{
|
||||||
double vol = abs(vel.xy.length())*0.03;
|
double vol = abs(vel.xy.length())*0.03;
|
||||||
|
|
@ -247,10 +266,14 @@ Class UTPlayer : DoomPlayer
|
||||||
if ( (waterlevel > 0) || GetFloorTerrain().IsLiquid && !bOnMobj ) A_PlaySound("ut/playerfootstepwet",CHAN_5,vol);
|
if ( (waterlevel > 0) || GetFloorTerrain().IsLiquid && !bOnMobj ) A_PlaySound("ut/playerfootstepwet",CHAN_5,vol);
|
||||||
else PlayFootstep(vol);
|
else PlayFootstep(vol);
|
||||||
}
|
}
|
||||||
|
if ( (waterlevel >= 2) && (lastwaterlevel < 2) )
|
||||||
|
A_PlaySound("ut/wetsplash",CHAN_AUTO);
|
||||||
|
else if ( (waterlevel < 2) && (lastwaterlevel >= 2) )
|
||||||
|
A_PlaySound("ut/wetsurface",CHAN_AUTO);
|
||||||
lastground = player.onground;
|
lastground = player.onground;
|
||||||
lastvelz = prevvelz;
|
lastvelz = prevvelz;
|
||||||
prevvelz = vel.z;
|
prevvelz = vel.z;
|
||||||
// TODO exit/entry sounds for water
|
lastwaterlevel = waterlevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
double FrictionToUnreal()
|
double FrictionToUnreal()
|
||||||
|
|
@ -260,6 +283,89 @@ Class UTPlayer : DoomPlayer
|
||||||
return 734.2969*fin*fin-1485.0868*fin+750.7899;
|
return 734.2969*fin*fin-1485.0868*fin+750.7899;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void CalcHeight()
|
||||||
|
{
|
||||||
|
if ( !flak_utmovement || !player || (player.mo != self) )
|
||||||
|
{
|
||||||
|
Super.CalcHeight();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double angle, bob;
|
||||||
|
bool still = false;
|
||||||
|
// no bobbing while:
|
||||||
|
// - using noclip2 (equivalent to unreal's ghost cheat)
|
||||||
|
// - flying
|
||||||
|
// - swimming
|
||||||
|
// - falling
|
||||||
|
if ( !bNoGravity && player.onground && (waterlevel < 2) )
|
||||||
|
{
|
||||||
|
player.bob = player.Vel dot player.Vel;
|
||||||
|
if ( player.bob == 0 ) still = true;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.bob *= player.GetMoveBob();
|
||||||
|
if ( player.bob > MAXBOB ) player.bob = MAXBOB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// this still doesn't help because fly bob is hardcoded
|
||||||
|
player.bob = 0;
|
||||||
|
}
|
||||||
|
double defaultviewheight = ViewHeight+player.crouchviewdelta;
|
||||||
|
if ( player.cheats&CF_NOVELOCITY )
|
||||||
|
{
|
||||||
|
player.viewz = pos.z+defaultviewheight;
|
||||||
|
if ( player.viewz > ceilingz-4 ) player.viewz = ceilingz-4;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( still )
|
||||||
|
{
|
||||||
|
if ( player.health > 0 )
|
||||||
|
{
|
||||||
|
angle = Level.maptime/(120*TICRATE/35.)*360.;
|
||||||
|
bob = player.GetStillBob()*sin(angle);
|
||||||
|
}
|
||||||
|
else bob = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
angle = Level.maptime/(20*TICRATE/35.)*360.;
|
||||||
|
bob = player.bob*sin(angle)*((waterlevel>1)?0.25:0.5);
|
||||||
|
}
|
||||||
|
// move viewheight
|
||||||
|
if ( player.playerstate == PST_LIVE )
|
||||||
|
{
|
||||||
|
player.viewheight += player.deltaviewheight;
|
||||||
|
if ( player.viewheight > defaultviewheight )
|
||||||
|
{
|
||||||
|
player.viewheight = defaultviewheight;
|
||||||
|
player.deltaviewheight = 0;
|
||||||
|
}
|
||||||
|
else if ( player.viewheight < (defaultviewheight/2) )
|
||||||
|
{
|
||||||
|
player.viewheight = defaultviewheight/2;
|
||||||
|
if ( player.deltaviewheight <= 0 )
|
||||||
|
player.deltaviewheight = 1/65536.;
|
||||||
|
}
|
||||||
|
if ( player.deltaviewheight )
|
||||||
|
{
|
||||||
|
player.deltaviewheight += 0.25;
|
||||||
|
if ( !player.deltaviewheight )
|
||||||
|
player.deltaviewheight = 1/65536.;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( player.morphTics ) bob = 0;
|
||||||
|
player.viewz = pos.z+player.viewheight+(bob*clamp(ViewBob,0.,1.5)); // [SP] Allow DECORATE changes to view bobbing speed.
|
||||||
|
// handle smooth step down (hacky but looks ok)
|
||||||
|
player.viewz += ssup;
|
||||||
|
ssup = max(0,(ssup*0.7)-0.25);
|
||||||
|
if ( floorclip && (player.playerstate != PST_DEAD) && (pos.z <= floorz) )
|
||||||
|
player.viewz -= Floorclip;
|
||||||
|
if ( player.viewz > ceilingz-4 ) player.viewz = ceilingz-4;
|
||||||
|
if ( player.viewz < floorz+4 ) player.viewz = floorz+4;
|
||||||
|
}
|
||||||
|
|
||||||
override void MovePlayer()
|
override void MovePlayer()
|
||||||
{
|
{
|
||||||
if ( !flak_utmovement || !player || (player.mo != self) )
|
if ( !flak_utmovement || !player || (player.mo != self) )
|
||||||
|
|
@ -276,9 +382,14 @@ Class UTPlayer : DoomPlayer
|
||||||
}
|
}
|
||||||
else Angle += cmd.yaw*(360./65536.);
|
else Angle += cmd.yaw*(360./65536.);
|
||||||
player.onground = (pos.z <= floorz) || bOnMobj || bMBFBouncer || (player.cheats & CF_NOCLIP2);
|
player.onground = (pos.z <= floorz) || bOnMobj || bMBFBouncer || (player.cheats & CF_NOCLIP2);
|
||||||
|
// slant (aka steep slope) detection
|
||||||
|
// TODO make it 3d floor aware when the PR makes it in
|
||||||
|
if ( floorsector.floorplane.normal dot (0,0,1) < (46342./65536.) )
|
||||||
|
player.onground = false;
|
||||||
if ( player.onground ) lastgroundtic = gametic;
|
if ( player.onground ) lastgroundtic = gametic;
|
||||||
if ( !player.onground && !bNoGravity && (waterlevel < 2) && (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) && (vel.z < 0) )
|
if ( !player.onground && !bNoGravity && (waterlevel < 2) && (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) && (vel.z < 0) )
|
||||||
{
|
{
|
||||||
|
ssup = max(0,(pos.z-floorz));
|
||||||
SetOrigin(Vec2OffsetZ(0,0,floorz),true);
|
SetOrigin(Vec2OffsetZ(0,0,floorz),true);
|
||||||
player.onground = true;
|
player.onground = true;
|
||||||
}
|
}
|
||||||
|
|
@ -321,11 +432,20 @@ Class UTPlayer : DoomPlayer
|
||||||
last_sm = sm;
|
last_sm = sm;
|
||||||
if ( !bNoGravity && player.onground && (waterlevel < 2) )
|
if ( !bNoGravity && player.onground && (waterlevel < 2) )
|
||||||
{
|
{
|
||||||
if ( flak_tapdodge && (dodge.length() > 0) )
|
if ( flak_tapdodge && (dodge.length() > 0) && !tempslide )
|
||||||
{
|
{
|
||||||
if ( flak_doomspeed ) vel += dodge.unit()*(groundspeed_doomish*1.5)/TICRATE;
|
if ( level.IsJumpingAllowed() )
|
||||||
else vel += dodge.unit()*(groundspeed*1.5)/TICRATE;
|
{
|
||||||
vel.z += dodgez/TICRATE;
|
if ( flak_doomspeed ) vel += dodge.unit()*(groundspeed_doomish*1.5)/TICRATE;
|
||||||
|
else vel += dodge.unit()*(groundspeed*1.5)/TICRATE;
|
||||||
|
vel.z += dodgez/TICRATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( flak_doomspeed ) vel += dodge.unit()*(groundspeed_doomish*2.0)/TICRATE;
|
||||||
|
else vel += dodge.unit()*(groundspeed*2.0)/TICRATE;
|
||||||
|
tempslide = 8;
|
||||||
|
}
|
||||||
bOnMobj = false;
|
bOnMobj = false;
|
||||||
if ( !(player.cheats&CF_PREDICTING) )
|
if ( !(player.cheats&CF_PREDICTING) )
|
||||||
A_PlaySound("*jump",CHAN_BODY);
|
A_PlaySound("*jump",CHAN_BODY);
|
||||||
|
|
@ -339,12 +459,13 @@ Class UTPlayer : DoomPlayer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( flak_nowalkdrop )
|
if ( flak_nowalkdrop && !tempslide )
|
||||||
bNODROPOFF = ((acceleration.length() > double.epsilon) && (cmd.buttons&BT_SPEED));
|
bNODROPOFF = ((acceleration.length() > double.epsilon) && (cmd.buttons&BT_SPEED));
|
||||||
// Hook in Unreal physics
|
// Hook in Unreal physics
|
||||||
Vector2 dir = (0,0);
|
Vector2 dir = (0,0);
|
||||||
if ( vel.xy.length() > double.epsilon ) dir = vel.xy.unit();
|
if ( vel.xy.length() > double.epsilon ) dir = vel.xy.unit();
|
||||||
double doomfriction = clamp(GetFriction()/ORIG_FRICTION,0.0,1.0);
|
double doomfriction = clamp(GetFriction()/ORIG_FRICTION,0.0,1.0);
|
||||||
|
if ( tempslide ) friction *= 0;
|
||||||
if ( acceleration.length() <= double.epsilon )
|
if ( acceleration.length() <= double.epsilon )
|
||||||
{
|
{
|
||||||
Vector2 oldvel = vel.xy;
|
Vector2 oldvel = vel.xy;
|
||||||
|
|
@ -369,7 +490,8 @@ Class UTPlayer : DoomPlayer
|
||||||
if ( acceleration.length() <= double.epsilon ) PlayIdle();
|
if ( acceleration.length() <= double.epsilon ) PlayIdle();
|
||||||
else PlayRunning();
|
else PlayRunning();
|
||||||
}
|
}
|
||||||
player.vel = vel.xy;
|
if ( tempslide ) player.vel *= 0;
|
||||||
|
else player.vel = vel.xy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( !bNoGravity && (waterlevel < 2) )
|
else if ( !bNoGravity && (waterlevel < 2) )
|
||||||
|
|
@ -401,8 +523,9 @@ Class UTPlayer : DoomPlayer
|
||||||
if ( vel.length() > terminalvelocity/TICRATE ) vel = vel.unit()*(terminalvelocity/TICRATE);
|
if ( vel.length() > terminalvelocity/TICRATE ) vel = vel.unit()*(terminalvelocity/TICRATE);
|
||||||
player.vel *= 0;
|
player.vel *= 0;
|
||||||
player.jumptics = -2;
|
player.jumptics = -2;
|
||||||
|
if ( !(player.cheats & CF_PREDICTING) ) PlayIdle();
|
||||||
}
|
}
|
||||||
else if ( bFly || (player.cheats&CF_NOCLIP2) )
|
else if ( (bFly && bFlyCheat) || (player.cheats&CF_NOCLIP2) )
|
||||||
{
|
{
|
||||||
// fly cheat has infinite friction (player stops moving when movement keys are released)
|
// fly cheat has infinite friction (player stops moving when movement keys are released)
|
||||||
Vector3 dir = (0,0,0);
|
Vector3 dir = (0,0,0);
|
||||||
|
|
@ -455,8 +578,16 @@ Class UTPlayer : DoomPlayer
|
||||||
}
|
}
|
||||||
vel = vel+acceleration3/TICRATE;
|
vel = vel+acceleration3/TICRATE;
|
||||||
double maxvel;
|
double maxvel;
|
||||||
if ( flak_doomspeed ) maxvel = swimspeed_doomish/TICRATE;
|
if ( waterlevel < 2 ) // flying uses ground speed
|
||||||
else maxvel = swimspeed/TICRATE;
|
{
|
||||||
|
if ( flak_doomspeed ) maxvel = groundspeed_doomish/TICRATE;
|
||||||
|
else maxvel = groundspeed/TICRATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( flak_doomspeed ) maxvel = swimspeed_doomish/TICRATE;
|
||||||
|
else maxvel = swimspeed/TICRATE;
|
||||||
|
}
|
||||||
maxvel *= fs*doomfriction;
|
maxvel *= fs*doomfriction;
|
||||||
if ( vel.length() > maxvel ) vel = vel.unit()*maxvel;
|
if ( vel.length() > maxvel ) vel = vel.unit()*maxvel;
|
||||||
player.vel = vel.xy;
|
player.vel = vel.xy;
|
||||||
|
|
@ -595,6 +726,389 @@ Class UTPlayer : DoomPlayer
|
||||||
{
|
{
|
||||||
A_PlaySound("ut/playerfootstep",CHAN_5,vol);
|
A_PlaySound("ut/playerfootstep",CHAN_5,vol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void PlayIdle()
|
||||||
|
{
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) )
|
||||||
|
{
|
||||||
|
// Crouching
|
||||||
|
if ( !InStateSequence(CurState,FindState("SpawnCrouch")) )
|
||||||
|
SetStateLabel("SpawnCrouch");
|
||||||
|
}
|
||||||
|
else if ( !bNoGravity && player.onground && (waterlevel < 2) )
|
||||||
|
{
|
||||||
|
// Ground
|
||||||
|
if ( (player && (player.mo == self)) && player.cmd.yaw )
|
||||||
|
{
|
||||||
|
if ( InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Spawn")+1) )
|
||||||
|
SetStateLabel("Turn");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch")) )
|
||||||
|
SetStateLabel("Spawn");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( !bNoGravity && (waterlevel < 2) )
|
||||||
|
{
|
||||||
|
// Falling
|
||||||
|
if ( InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Spawn"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Turn")) )
|
||||||
|
SetStateLabel("SpawnAir");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Swimming
|
||||||
|
if ( InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Spawn"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Turn")) )
|
||||||
|
SetStateLabel("SpawnSwim");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override void PlayRunning()
|
||||||
|
{
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) )
|
||||||
|
{
|
||||||
|
// Crouching
|
||||||
|
if ( !InStateSequence(CurState,FindState("SeeCrouch")) )
|
||||||
|
SetStateLabel("SeeCrouch");
|
||||||
|
}
|
||||||
|
else if ( !bNoGravity && player.onground && (waterlevel < 2) )
|
||||||
|
{
|
||||||
|
// Ground
|
||||||
|
if ( InStateSequence(CurState,FindState("Spawn"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Turn")) )
|
||||||
|
SetStateLabel("See");
|
||||||
|
}
|
||||||
|
else if ( !bNoGravity && (waterlevel < 2) )
|
||||||
|
{
|
||||||
|
// Falling
|
||||||
|
if ( InStateSequence(CurState,FindState("Spawn"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Turn")) )
|
||||||
|
SetStateLabel("SeeAir");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Swimming
|
||||||
|
if ( InStateSequence(CurState,FindState("Spawn"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnSwim"))
|
||||||
|
|| InStateSequence(CurState,FindState("SpawnCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("See"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeAir"))
|
||||||
|
|| InStateSequence(CurState,FindState("SeeCrouch"))
|
||||||
|
|| InStateSequence(CurState,FindState("Turn")) )
|
||||||
|
SetStateLabel("SeeSwim");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override void PlayAttacking()
|
||||||
|
{
|
||||||
|
// no animation if crouched
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) ) return;
|
||||||
|
// check weapon type
|
||||||
|
if ( (player.ReadyWeapon is 'SniperRifle') && (player.buttons&BT_ALTATTACK) )
|
||||||
|
return;
|
||||||
|
if ( ((player.ReadyWeapon is 'BioRifle') && (player.buttons&BT_ALTATTACK))
|
||||||
|
|| (player.ReadyWeapon is 'UTRocketLauncher') )
|
||||||
|
{
|
||||||
|
if ( !InStateSequence(CurState,FindState("MissileRepStill")) )
|
||||||
|
SetStateLabel("MissileRepStill");
|
||||||
|
}
|
||||||
|
else if ( ((player.ReadyWeapon is 'ImpactHammer') && (player.buttons&BT_ATTACK))
|
||||||
|
|| ((player.ReadyWeapon is 'UTChainsaw') && (player.buttons&BT_ATTACK))
|
||||||
|
|| (player.ReadyWeapon is 'PulseGun')
|
||||||
|
|| (player.ReadyWeapon is 'Minigun') )
|
||||||
|
{
|
||||||
|
if ( !InStateSequence(CurState,FindState("MissileRep")) )
|
||||||
|
SetStateLabel("MissileRep");
|
||||||
|
}
|
||||||
|
else SetStateLabel("Missile");
|
||||||
|
}
|
||||||
|
|
||||||
|
override void PlayAttacking2()
|
||||||
|
{
|
||||||
|
PlayAttacking();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void PlayAttacking3()
|
||||||
|
{
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) ) return;
|
||||||
|
SetStateLabel("Missile");
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void PlayReloading()
|
||||||
|
{
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) ) return;
|
||||||
|
SetStateLabel("Reload");
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void PlayLanding()
|
||||||
|
{
|
||||||
|
if ( (player && (player.mo == self)) && (player.crouchdir == -1) ) return;
|
||||||
|
SetStateLabel("Landing");
|
||||||
|
}
|
||||||
|
|
||||||
|
void A_HeadPop()
|
||||||
|
{
|
||||||
|
headless = true;
|
||||||
|
Class<UTHead> hclass = "UTHeadMale";
|
||||||
|
if ( DollType == DOLL_Boss ) hclass = "UTHeadBoss";
|
||||||
|
else if ( DollType == DOLL_Female ) hclass = "UTHeadFemale";
|
||||||
|
let h = UTHead(Spawn(hclass,Vec3Offset(0,0,viewheight)));
|
||||||
|
if ( player )
|
||||||
|
{
|
||||||
|
h.headowner = player;
|
||||||
|
player.camera = h;
|
||||||
|
}
|
||||||
|
double ang = FRandom[Blod](0,360);
|
||||||
|
double pt = FRandom[Blod](-90,-30);
|
||||||
|
Vector3 dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
|
h.vel = vel*0.6+dir*FRandom[Blod](8.0,12.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void A_GibMe()
|
||||||
|
{
|
||||||
|
let a = Actor.Spawn("UTPlayerGibber",pos);
|
||||||
|
a.vel = vel;
|
||||||
|
a.Scale = Scale;
|
||||||
|
a.A_SetSize(radius,height);
|
||||||
|
UTGibber(a).Gibbed = self;
|
||||||
|
}
|
||||||
|
|
||||||
|
void A_DMFade()
|
||||||
|
{
|
||||||
|
if ( !deathmatch || player ) return;
|
||||||
|
corpsetime++;
|
||||||
|
if ( corpsetime > 350 ) A_FadeOut(0.03);
|
||||||
|
}
|
||||||
|
|
||||||
|
override double GetDeathHeight()
|
||||||
|
{
|
||||||
|
// no height reduction while still being zapped
|
||||||
|
if ( DamageType == 'Zapped' ) return height;
|
||||||
|
return Super.GetDeathHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
#### # 5;
|
||||||
|
PLAY ABCDEFG 8;
|
||||||
|
Goto Spawn+1;
|
||||||
|
Turn:
|
||||||
|
#### # 6;
|
||||||
|
PLYT A 0 A_JumpIf(!player||!player.cmd.yaw,"Spawn");
|
||||||
|
PLYT A 6;
|
||||||
|
PLYT A 0 A_JumpIf(!player||!player.cmd.yaw,"Spawn");
|
||||||
|
PLYT A 6;
|
||||||
|
PLYT B 0 A_JumpIf(!player||!player.cmd.yaw,"Spawn");
|
||||||
|
PLYT B 6;
|
||||||
|
PLYT B 0 A_JumpIf(!player||!player.cmd.yaw,"Spawn");
|
||||||
|
PLYT B 6;
|
||||||
|
Goto Turn+1;
|
||||||
|
SpawnAir:
|
||||||
|
#### # 5;
|
||||||
|
PLYA A 50;
|
||||||
|
PLYL A 50;
|
||||||
|
Goto SpawnAir+1;
|
||||||
|
SpawnSwim:
|
||||||
|
#### # 5;
|
||||||
|
PLYS ABCDEFG 6;
|
||||||
|
Goto SpawnSwim+1;
|
||||||
|
SpawnCrouch:
|
||||||
|
#### # 5;
|
||||||
|
PLYC A -1;
|
||||||
|
Wait;
|
||||||
|
See:
|
||||||
|
#### # 5;
|
||||||
|
PLAY HIJKL 4;
|
||||||
|
Goto See+1;
|
||||||
|
SeeAir:
|
||||||
|
#### # 5;
|
||||||
|
PLYA A 50;
|
||||||
|
PLYL A 50;
|
||||||
|
Goto SeeAir+1;
|
||||||
|
SeeSwim:
|
||||||
|
#### # 5;
|
||||||
|
PLYS HIJKL 4;
|
||||||
|
Goto SeeSwim+1;
|
||||||
|
SeeCrouch:
|
||||||
|
#### # 5;
|
||||||
|
PLYC ABCDE 4;
|
||||||
|
Goto SeeCrouch+1;
|
||||||
|
Missile:
|
||||||
|
#### # 2;
|
||||||
|
PLAY MNOPQA 3;
|
||||||
|
Goto Spawn;
|
||||||
|
MissileRep:
|
||||||
|
#### # 2;
|
||||||
|
PLAY R 2;
|
||||||
|
PLAY S 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
PLAY S 2;
|
||||||
|
PLAY T 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
PLAY T 2;
|
||||||
|
PLAY U 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
PLAY U 2;
|
||||||
|
PLAY V 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
PLAY V 2;
|
||||||
|
PLAY R 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
Goto MissileRep+1;
|
||||||
|
MissileRepStill:
|
||||||
|
#### # 2;
|
||||||
|
PLAY R 2;
|
||||||
|
PLAY R 0 A_JumpIf(!player||!(player.buttons&(BT_ATTACK|BT_ALTATTACK)),"Spawn");
|
||||||
|
Goto MissileRepStill+1;
|
||||||
|
Reload:
|
||||||
|
#### # 3;
|
||||||
|
PLYR ABCDEFGH 4;
|
||||||
|
Goto Spawn;
|
||||||
|
Landing:
|
||||||
|
#### # 4;
|
||||||
|
PLYL A 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Pain:
|
||||||
|
#### # 0 A_Jump(256,1,3,5,7);
|
||||||
|
#### # 2;
|
||||||
|
PLAY W 3 A_Pain();
|
||||||
|
Goto Spawn;
|
||||||
|
#### # 2;
|
||||||
|
PLAY Y 3 A_Pain();
|
||||||
|
Goto Spawn;
|
||||||
|
#### # 2;
|
||||||
|
PLAY Z 3 A_Pain();
|
||||||
|
Goto Spawn;
|
||||||
|
Pain.Decapitated:
|
||||||
|
#### # 2;
|
||||||
|
PLAY X 3 A_Pain();
|
||||||
|
Goto Spawn;
|
||||||
|
Death.Decapitated:
|
||||||
|
#### # 0 A_HeadPop();
|
||||||
|
PLD4 A 3 A_PlayerScream();
|
||||||
|
PLD4 B 3 A_NoBlocking();
|
||||||
|
PLD4 CDEFGHIJKLMNO 3;
|
||||||
|
PLD4 P 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death:
|
||||||
|
#### # 0 A_JumpIf(vel.length()>20,"Death11");
|
||||||
|
#### # 0 A_JumpIf(vel.length()>10,"Death1");
|
||||||
|
#### # 0 A_Jump(256,"Death2","Death3","Death7","Death8");
|
||||||
|
Death11:
|
||||||
|
#### # 3;
|
||||||
|
PD11 A 3 A_PlayerScream();
|
||||||
|
PD11 B 3 A_NoBlocking();
|
||||||
|
PD11 CDEFGHIJKLMNOPQ 3;
|
||||||
|
PD11 R 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death.Zapped:
|
||||||
|
#### # 3;
|
||||||
|
PLD9 A 3 A_PlayerScream();
|
||||||
|
PLD9 B 3 A_NoBlocking();
|
||||||
|
PLD9 CDEFGHIJKLMNOPQRST 2;
|
||||||
|
PD9B A 2 A_SetSize(-1,height*0.25); // reduce now
|
||||||
|
PD9B BCDEFGHI 2;
|
||||||
|
PD9B J 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death8:
|
||||||
|
#### # 3;
|
||||||
|
PLD8 A 3 A_PlayerScream();
|
||||||
|
PLD8 B 3 A_NoBlocking();
|
||||||
|
PLD8 CDEFGHIJKLMNOPQ 3;
|
||||||
|
PLD8 R 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death7:
|
||||||
|
#### # 3;
|
||||||
|
PLD7 A 3 A_PlayerScream();
|
||||||
|
PLD7 B 3 A_NoBlocking();
|
||||||
|
PLD7 CDEFGHIJKLMNOPQRST 3;
|
||||||
|
PLD7 U 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death3:
|
||||||
|
#### # 3;
|
||||||
|
PLD3 A 3 A_PlayerScream();
|
||||||
|
PLD3 B 3 A_NoBlocking();
|
||||||
|
PLD3 CDEFGHIJKL 3;
|
||||||
|
PLD3 M 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death2:
|
||||||
|
#### # 3;
|
||||||
|
PLD2 A 3 A_PlayerScream();
|
||||||
|
PLD2 B 3 A_NoBlocking();
|
||||||
|
PLD2 CDEFGHIJKLMNO 3;
|
||||||
|
PLD2 P 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death1:
|
||||||
|
#### # 3;
|
||||||
|
PLD1 A 3 A_PlayerScream();
|
||||||
|
PLD1 B 3 A_NoBlocking();
|
||||||
|
PLD1 CDEFGHIJKL 3;
|
||||||
|
PLD1 M 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
XDeath:
|
||||||
|
TNT1 A 350
|
||||||
|
{
|
||||||
|
A_XScream();
|
||||||
|
A_NoBlocking();
|
||||||
|
A_GibMe();
|
||||||
|
}
|
||||||
|
TNT1 A 1 A_CheckPlayerDone();
|
||||||
|
Wait;
|
||||||
|
Taunt1:
|
||||||
|
#### # 5;
|
||||||
|
PLT1 ABCDEFGHIJKLMNOPQRST 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Taunt2:
|
||||||
|
#### # 5;
|
||||||
|
PLT2 ABCDEFGHIJKLMNOPQR 4;
|
||||||
|
PLT2 R 8;
|
||||||
|
PLAY A 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Taunt3:
|
||||||
|
#### # 5;
|
||||||
|
PLT3 ABCDEFGHIJKLMNO 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Taunt4:
|
||||||
|
#### # 5;
|
||||||
|
PLT4 ABCDEFGHIJKLMNO 3;
|
||||||
|
Goto Spawn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// these only exist for sound
|
// these only exist for sound
|
||||||
|
|
@ -621,26 +1135,120 @@ Class UTPlayerTMale2 : UTPlayer
|
||||||
-NOMENU;
|
-NOMENU;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Class UTPlayerTFemale1 : UTPlayer
|
Class UTPlayerTFemale : UTPlayer
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
UTPlayer.DollType DOLL_Female;
|
||||||
|
}
|
||||||
|
|
||||||
|
void A_LegPop()
|
||||||
|
{
|
||||||
|
leglessR = true;
|
||||||
|
let a = Actor.Spawn("UTFemaleLegGibber",pos);
|
||||||
|
a.vel = vel;
|
||||||
|
a.Scale = Scale;
|
||||||
|
a.A_SetSize(radius,height);
|
||||||
|
UTGibber(a).Gibbed = self;
|
||||||
|
}
|
||||||
|
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Reload:
|
||||||
|
#### # 3;
|
||||||
|
PLYR ABCDEF 4;
|
||||||
|
Goto Spawn;
|
||||||
|
Taunt1:
|
||||||
|
#### # 5;
|
||||||
|
PLT1 ABCDEFGHIJKLMNO 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Taunt2:
|
||||||
|
#### # 5;
|
||||||
|
PLT2 ABCDEFGHIJ 6;
|
||||||
|
PLAY A 3;
|
||||||
|
Goto Spawn;
|
||||||
|
Death.Decapitated:
|
||||||
|
#### # 0 A_HeadPop();
|
||||||
|
PLD6 A 3 A_PlayerScream();
|
||||||
|
PLD6 B 3 A_NoBlocking();
|
||||||
|
PLD6 CDEFGHIJ 3;
|
||||||
|
PLD6 K 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death.Zapped:
|
||||||
|
#### # 3;
|
||||||
|
PLD9 A 3 A_PlayerScream();
|
||||||
|
PLD9 B 3 A_NoBlocking();
|
||||||
|
PLD9 CDEFGHIJKLMNOPQRST 2;
|
||||||
|
PD9B A 2 A_SetSize(-1,height*0.25); // reduce now
|
||||||
|
PD9B BCDEFGHIJ 2;
|
||||||
|
PD9B K 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death:
|
||||||
|
#### # 0 A_JumpIf(vel.length()>20,"Death5");
|
||||||
|
#### # 0 A_JumpIf(vel.length()>10,"Death2");
|
||||||
|
#### # 0 A_Jump(256,"Death1","Death3","Death4","Death7");
|
||||||
|
Death7:
|
||||||
|
#### # 3;
|
||||||
|
PLD7 A 3 A_PlayerScream();
|
||||||
|
PLD7 B 3 A_NoBlocking();
|
||||||
|
PLD7 CDEFGHIJ 3;
|
||||||
|
PLD7 K 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death5:
|
||||||
|
#### # 0 A_LegPop();
|
||||||
|
PLD5 A 3 A_PlayerScream();
|
||||||
|
PLD5 B 3 A_NoBlocking();
|
||||||
|
PLD5 CDEFGHIJKL 3;
|
||||||
|
PLD5 M 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death4:
|
||||||
|
#### # 3;
|
||||||
|
PLD4 A 3 A_PlayerScream();
|
||||||
|
PLD4 B 3 A_NoBlocking();
|
||||||
|
PLD4 CDEFGHIJKL 3;
|
||||||
|
PLD4 M 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death3:
|
||||||
|
#### # 3;
|
||||||
|
PLD3 A 3 A_PlayerScream();
|
||||||
|
PLD3 B 3 A_NoBlocking();
|
||||||
|
PLD3 CDEFGHIJKLMNO 3;
|
||||||
|
PLD3 P 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death2:
|
||||||
|
#### # 3;
|
||||||
|
PLD2 A 3 A_PlayerScream();
|
||||||
|
PLD2 B 3 A_NoBlocking();
|
||||||
|
PLD2 CDEFGHIJKLMNOPQ 3;
|
||||||
|
PLD2 R 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
Death1:
|
||||||
|
#### # 3;
|
||||||
|
PLD1 A 3 A_PlayerScream();
|
||||||
|
PLD1 B 3 A_NoBlocking();
|
||||||
|
PLD1 CDEFGHIJKLMNOPQRSTUV 3;
|
||||||
|
PLD1 W 1 A_DMFade();
|
||||||
|
Wait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Class UTPlayerTFemale1 : UTPlayerTFemale
|
||||||
{
|
{
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Player.SoundClass "tfemale";
|
Player.SoundClass "tfemale";
|
||||||
Player.DisplayName "$N_TFEMALE1";
|
Player.DisplayName "$N_TFEMALE1";
|
||||||
Player.Portrait "Ivana";
|
Player.Portrait "Ivana";
|
||||||
UTPlayer.DollType DOLL_Female;
|
|
||||||
UTPlayer.VoiceType VOICE_FemaleOne;
|
UTPlayer.VoiceType VOICE_FemaleOne;
|
||||||
-NOMENU;
|
-NOMENU;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Class UTPlayerTFemale2 : UTPlayer
|
Class UTPlayerTFemale2 : UTPlayerTFemale
|
||||||
{
|
{
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Player.SoundClass "tfemale";
|
Player.SoundClass "tfemale";
|
||||||
Player.DisplayName "$N_TFEMALE2";
|
Player.DisplayName "$N_TFEMALE2";
|
||||||
Player.Portrait "Lauren";
|
Player.Portrait "Lauren";
|
||||||
UTPlayer.DollType DOLL_Female;
|
|
||||||
UTPlayer.VoiceType VOICE_FemaleTwo;
|
UTPlayer.VoiceType VOICE_FemaleTwo;
|
||||||
-NOMENU;
|
-NOMENU;
|
||||||
}
|
}
|
||||||
|
|
@ -1341,6 +1949,8 @@ Class UTBlueKey : BlueCard
|
||||||
Class ShredCorpseHitbox : Actor
|
Class ShredCorpseHitbox : Actor
|
||||||
{
|
{
|
||||||
int accdamage;
|
int accdamage;
|
||||||
|
Vector3 lastvel;
|
||||||
|
bool wasonair;
|
||||||
|
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
|
|
@ -1348,6 +1958,7 @@ Class ShredCorpseHitbox : Actor
|
||||||
-SOLID;
|
-SOLID;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+SHOOTABLE;
|
+SHOOTABLE;
|
||||||
|
+NOTELEPORT;
|
||||||
Health int.max;
|
Health int.max;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
|
|
@ -1363,23 +1974,44 @@ Class ShredCorpseHitbox : Actor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( !flak_corpsedamage || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath")) )
|
if ( (!(target is 'UTPlayer') && !flak_corpsedamage) || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath")) )
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SetOrigin(target.pos,true);
|
SetOrigin(target.pos,true);
|
||||||
A_SetSize(target.radius,target.height);
|
A_SetSize(target.radius,target.height);
|
||||||
|
if ( target.pos.z > target.floorz ) wasonair = true;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( wasonair )
|
||||||
|
{
|
||||||
|
A_PlaySound("misc/corpsefall",CHAN_BODY,clamp(-lastvel.z*0.2,0.1,1.0));
|
||||||
|
if ( lastvel.z < -20 ) DamageMobj(null,null,int.max,'Falling');
|
||||||
|
}
|
||||||
|
wasonair = false;
|
||||||
|
}
|
||||||
|
lastvel = target.vel;
|
||||||
}
|
}
|
||||||
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
||||||
{
|
{
|
||||||
|
if ( (target is 'UTPlayer') && (mod == 'Zapped') && (target.sprite == target.GetSpriteIndex('PLD9')) )
|
||||||
|
{
|
||||||
|
// keep the zapping action on
|
||||||
|
target.SetState(target.FindState("Death.Zapped")+Random[ZapMe](2,8));
|
||||||
|
damage /= 4;
|
||||||
|
// push the corpse
|
||||||
|
target.vel.xy += RotateVector((1,0),angle)*damage*0.1;
|
||||||
|
// keep it afloat
|
||||||
|
target.vel.z = max(0.1,target.vel.z+0.1);
|
||||||
|
}
|
||||||
accdamage -= damage;
|
accdamage -= damage;
|
||||||
int gibhealth = (target.GibHealth==int.min)?-target.SpawnHealth():target.GibHealth;
|
int gibhealth = (target.GibHealth==int.min)?-target.SpawnHealth():target.GibHealth;
|
||||||
if ( accdamage < gibhealth )
|
if ( accdamage < gibhealth )
|
||||||
{
|
{
|
||||||
// force gib (cheap ATM)
|
// force gib (cheap ATM)
|
||||||
State gib = target.FindState("XDeath");
|
State gib = target.FindState("XDeath",true);
|
||||||
if ( !gib ) gib = target.FindState("Death.Extreme");
|
if ( !gib ) gib = target.FindState("Death.Extreme",true);
|
||||||
if ( gib ) target.SetState(gib);
|
if ( gib ) target.SetState(gib);
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
@ -1466,8 +2098,8 @@ Class GenericFlash : HUDMessageBase
|
||||||
}
|
}
|
||||||
override bool Tick()
|
override bool Tick()
|
||||||
{
|
{
|
||||||
alpha -= 1./duration;
|
if ( duration > 0 ) alpha -= 1./duration;
|
||||||
return (alpha<=0);
|
return (alpha<=0)||(!cam);
|
||||||
}
|
}
|
||||||
override void Draw( int bottom, int visibility )
|
override void Draw( int bottom, int visibility )
|
||||||
{
|
{
|
||||||
|
|
@ -1945,6 +2577,27 @@ Class UTMainHandler : EventHandler
|
||||||
for ( int i=0; i<MAXPLAYERS; i++ ) if ( playeringame[i] ) players[i].mo.TakeInventory("Translocator",1);
|
for ( int i=0; i<MAXPLAYERS; i++ ) if ( playeringame[i] ) players[i].mo.TakeInventory("Translocator",1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( e.Name ~== "uttaunt" )
|
||||||
|
{
|
||||||
|
if ( (e.player == -1) || !playeringame[e.player] || !players[e.player].mo ) return;
|
||||||
|
let mo = players[e.player].mo;
|
||||||
|
if ( (mo.Health <= 0) || !(mo is 'UTPlayer') ) return;
|
||||||
|
switch ( e.Args[0] )
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
if ( mo.FindState("Taunt2") ) mo.SetStateLabel("Taunt2");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if ( mo.FindState("Taunt3") ) mo.SetStateLabel("Taunt3");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if ( mo.FindState("Taunt4") ) mo.SetStateLabel("Taunt4");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if ( mo.FindState("Taunt1") ) mo.SetStateLabel("Taunt1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override void WorldTick()
|
override void WorldTick()
|
||||||
|
|
@ -1990,14 +2643,10 @@ Class UTMainHandler : EventHandler
|
||||||
{
|
{
|
||||||
if ( e.Thing.bDONTGIB ) return;
|
if ( e.Thing.bDONTGIB ) return;
|
||||||
// gibbers
|
// gibbers
|
||||||
if ( flak_gibs && !e.Thing.bNOBLOOD && (e.Thing.FindState("XDeath") || e.Thing.FindState("Death.Extreme")) && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.Thing.Health < e.Thing.GetGibHealth())) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) )
|
if ( flak_gibs && !e.Thing.bNOBLOOD && (e.Thing.FindState("XDeath",true) || e.Thing.FindState("Death.Extreme",true)) && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.Thing.Health < e.Thing.GetGibHealth())) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) )
|
||||||
{
|
{
|
||||||
// players have special gibbing
|
// players use their own gibber
|
||||||
if ( e.Thing.player )
|
if ( e.Thing is 'UTPlayer' ) return;
|
||||||
{
|
|
||||||
// TODO
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// generic gibbing
|
// generic gibbing
|
||||||
let a = Actor.Spawn("UTGibber",e.Thing.pos);
|
let a = Actor.Spawn("UTGibber",e.Thing.pos);
|
||||||
a.vel = e.Thing.vel;
|
a.vel = e.Thing.vel;
|
||||||
|
|
@ -2013,7 +2662,7 @@ Class UTMainHandler : EventHandler
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// attach damage accumulator for corpses
|
// attach damage accumulator for corpses
|
||||||
if ( !flak_corpsedamage ) return;
|
if ( !(e.Thing is 'UTPlayer') && !flak_corpsedamage ) return;
|
||||||
let a = Actor.Spawn("ShredCorpseHitbox",e.Thing.pos);
|
let a = Actor.Spawn("ShredCorpseHitbox",e.Thing.pos);
|
||||||
a.target = e.Thing;
|
a.target = e.Thing;
|
||||||
}
|
}
|
||||||
|
|
@ -2044,7 +2693,9 @@ Class UTMainHandler : EventHandler
|
||||||
double dist = max(1,dir.length());
|
double dist = max(1,dir.length());
|
||||||
double damagescale = 1-max(0,(dist-a.radius)/ExplosionRadius);
|
double damagescale = 1-max(0,(dist-a.radius)/ExplosionRadius);
|
||||||
dir = dir/dist;
|
dir = dir/dist;
|
||||||
a.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.mass));
|
if ( (a is 'ShredCorpseHitbox') && a.target )
|
||||||
|
a.target.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.target.mass));
|
||||||
|
else a.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.mass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2052,7 +2703,9 @@ Class UTMainHandler : EventHandler
|
||||||
static void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer )
|
static void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer )
|
||||||
{
|
{
|
||||||
if ( !Victim ) return;
|
if ( !Victim ) return;
|
||||||
Victim.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.Mass));
|
if ( (Victim is 'ShredCorpseHitbox') && Victim.target )
|
||||||
|
Victim.target.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.target.Mass));
|
||||||
|
else Victim.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.Mass));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DoSwing( Actor target, Vector2 dir, double initial, double inc, int steps, int mode = 0, int delay = 0, double rmul = 1.0 )
|
static void DoSwing( Actor target, Vector2 dir, double initial, double inc, int steps, int mode = 0, int delay = 0, double rmul = 1.0 )
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ Class UTBloodDrop : Actor
|
||||||
}
|
}
|
||||||
void A_BloodDie()
|
void A_BloodDie()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO leave decals
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
@ -112,9 +112,12 @@ Class UTBloodSpurt : Actor
|
||||||
str = FRandom[Blood](2.0,3.2)*args[0];
|
str = FRandom[Blood](2.0,3.2)*args[0];
|
||||||
int sz = 7*args[0];
|
int sz = 7*args[0];
|
||||||
double ang, pt;
|
double ang, pt;
|
||||||
|
if ( !flak_blood ) sz /= 3;
|
||||||
for ( int i=0; i<sz; i++ )
|
for ( int i=0; i<sz; i++ )
|
||||||
{
|
{
|
||||||
let d = Spawn("UTBloodDrop",pos);
|
Actor d;
|
||||||
|
if ( flak_blood ) d = Spawn("UTBloodDrop",pos);
|
||||||
|
else d = Spawn("Blood",pos,ALLOW_REPLACE);
|
||||||
d.translation = translation;
|
d.translation = translation;
|
||||||
d.SetShade(fillcolor);
|
d.SetShade(fillcolor);
|
||||||
ang = angle+FRandom[Blood](-3,3)*str;
|
ang = angle+FRandom[Blood](-3,3)*str;
|
||||||
|
|
@ -160,9 +163,12 @@ Class UTBloodTrail : Actor
|
||||||
if ( !target ) return;
|
if ( !target ) return;
|
||||||
SetOrigin(target.pos,true);
|
SetOrigin(target.pos,true);
|
||||||
double ang, pt;
|
double ang, pt;
|
||||||
for ( int i=0; i<3; i++ )
|
int max = flak_blood?3:Random[Blood](-2,1);
|
||||||
|
for ( int i=0; i<max; i++ )
|
||||||
{
|
{
|
||||||
let d = Spawn("UTBloodDrop",pos);
|
Actor d;
|
||||||
|
if ( flak_blood ) d = Spawn("UTBloodDrop",pos);
|
||||||
|
else d = Spawn("Blood",pos,ALLOW_REPLACE);
|
||||||
d.translation = translation;
|
d.translation = translation;
|
||||||
d.SetShade(fillcolor);
|
d.SetShade(fillcolor);
|
||||||
ang = FRandom[Blood](0,360);
|
ang = FRandom[Blood](0,360);
|
||||||
|
|
@ -232,18 +238,18 @@ Class UTGibber : Actor
|
||||||
bool dummy;
|
bool dummy;
|
||||||
for ( int i=0; i<gibsize; i++ )
|
for ( int i=0; i<gibsize; i++ )
|
||||||
{
|
{
|
||||||
let a = Spawn(gibcls[Random[Blod](0,3)],pos+(FRandom[Blod](-0.5,0.5)*radius,FRandom[Blod](-0.5,0.5)*radius,FRandom[Blod](0.2,0.8)*height));
|
let a = Spawn(gibcls[Random[Blod](0,3)],Vec3Offset(FRandom[Blod](-0.5,0.5)*radius,FRandom[Blod](-0.5,0.5)*radius,FRandom[Blod](0.2,0.8)*height));
|
||||||
a.translation = translation;
|
a.translation = translation;
|
||||||
a.SetShade(fillcolor);
|
a.SetShade(fillcolor);
|
||||||
a.scale *= FRandom[Blod](1.7,2.3)*scale.x;
|
a.scale *= FRandom[Blod](1.7,2.3)*scale.x;
|
||||||
ang = FRandom[Blod](0,360);
|
ang = FRandom[Blod](0,360);
|
||||||
pt = FRandom[Blod](-90,90);
|
pt = FRandom[Blod](-90,90);
|
||||||
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
a.vel = rvel*0.6+dir*FRandom[Blod](8.0,12.0);
|
a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0);
|
||||||
}
|
}
|
||||||
for ( int i=0; i<gibsize; i++ )
|
for ( int i=0; i<gibsize; i++ )
|
||||||
{
|
{
|
||||||
let a = Spawn("UTBloodPuff",pos+(FRandom[Blod](-0.8,0.8)*radius,FRandom[Blod](-0.8,0.8)*radius,FRandom[Blod](0.1,0.9)*height));
|
let a = Spawn("UTBloodPuff",Vec3Offset(FRandom[Blod](-12,12),FRandom[Blod](-12,12),FRandom[Blod](0.1,0.9)*height));
|
||||||
a.translation = translation;
|
a.translation = translation;
|
||||||
a.SetShade(fillcolor);
|
a.SetShade(fillcolor);
|
||||||
a.scale *= FRandom[Blod](1.8,2.3)*scale.x;
|
a.scale *= FRandom[Blod](1.8,2.3)*scale.x;
|
||||||
|
|
@ -268,6 +274,7 @@ Class UTGibber : Actor
|
||||||
{
|
{
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
|
+NOTELEPORT;
|
||||||
Radius 32;
|
Radius 32;
|
||||||
Height 16;
|
Height 16;
|
||||||
}
|
}
|
||||||
|
|
@ -281,6 +288,158 @@ Class UTGibber : Actor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Class UTFemaleLegGibber : UTGibber
|
||||||
|
{
|
||||||
|
bool firstgib;
|
||||||
|
|
||||||
|
override void BurstGibs()
|
||||||
|
{
|
||||||
|
static const class<Actor> parts[] = {"UTFemaleFoot","UTThigh"};
|
||||||
|
static const double partofsy[] = {9,8};
|
||||||
|
static const double partofsz[] = {9,20};
|
||||||
|
Actor a;
|
||||||
|
double ang, pt;
|
||||||
|
Vector3 dir;
|
||||||
|
if ( !firstgib )
|
||||||
|
{
|
||||||
|
firstgib = true;
|
||||||
|
for ( int i=0; i<2; i++ )
|
||||||
|
{
|
||||||
|
Actor a = Spawn(parts[i],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
|
||||||
|
ang = FRandom[Blod](0,360);
|
||||||
|
pt = FRandom[Blod](-90,90);
|
||||||
|
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
|
a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ( int i=0; i<gibsize; i++ )
|
||||||
|
{
|
||||||
|
Vector3 box = (FRandom[Blod](-8,8),FRandom[Blod](7,12),FRandom[Blod](5,18));
|
||||||
|
let a = Spawn("UTBloodPuff",Vec3Offset(box.x*cos(angle)-box.y*sin(angle),box.x*sin(angle)+box.y*cos(angle),box.z));
|
||||||
|
ang = FRandom[Blod](0,360);
|
||||||
|
pt = FRandom[Blod](-90,90);
|
||||||
|
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
|
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
|
||||||
|
}
|
||||||
|
A_CountDown();
|
||||||
|
}
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
gibsize = 3;
|
||||||
|
reactiontime = 5;
|
||||||
|
}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TNT1 A 0 NoDelay; // no sound, done by player
|
||||||
|
TNT1 A 1 BurstGibs();
|
||||||
|
Wait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Class UTPlayerGibber : UTGibber
|
||||||
|
{
|
||||||
|
bool firstgib;
|
||||||
|
|
||||||
|
override void BurstGibs()
|
||||||
|
{
|
||||||
|
static const class<Actor> bossparts[] = {"UTBossArm","UTBossArm","UTBossFoot","UTBossFoot","UTMaleTorso","UTHeadBoss"};
|
||||||
|
static const class<Actor> maleparts[] = {"UTMaleArm","UTMaleArm","UTMaleFoot","UTMaleFoot","UTMaleTorso","UTHeadMale"};
|
||||||
|
static const class<Actor> femaleparts[] = {"UTFemaleArm","UTFemaleArm","UTFemaleFoot","UTFemaleFoot","UTFemaleTorso","UTHeadFemale"};
|
||||||
|
static const class<Actor> extraparts[] = {"UTThigh","UTThigh","UTHeart","UTLiver","UTStomach"};
|
||||||
|
static const double partofsy[] =
|
||||||
|
{
|
||||||
|
14,
|
||||||
|
-14,
|
||||||
|
9,
|
||||||
|
-9,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
-8,
|
||||||
|
-2,
|
||||||
|
5,
|
||||||
|
-3
|
||||||
|
};
|
||||||
|
static const double partofsz[] =
|
||||||
|
{
|
||||||
|
36,
|
||||||
|
36,
|
||||||
|
9,
|
||||||
|
9,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
40,
|
||||||
|
32,
|
||||||
|
35
|
||||||
|
};
|
||||||
|
Actor a;
|
||||||
|
double ang, pt;
|
||||||
|
Vector3 dir;
|
||||||
|
if ( !firstgib )
|
||||||
|
{
|
||||||
|
firstgib = true;
|
||||||
|
for ( int i=0; i<11; i++ )
|
||||||
|
{
|
||||||
|
if ( (i == 5) && UTPlayer(Gibbed).headless ) continue;
|
||||||
|
if ( (i == 0) && UTPlayer(Gibbed).armlessR ) continue;
|
||||||
|
if ( (i == 1) && UTPlayer(Gibbed).armlessL ) continue;
|
||||||
|
if ( ((i == 2) || (i == 6)) && UTPlayer(Gibbed).leglessR ) continue;
|
||||||
|
if ( ((i == 3) || (i == 7)) && UTPlayer(Gibbed).leglessL ) continue;
|
||||||
|
if ( ((i == 4) || (i > 7)) && UTPlayer(Gibbed).torsoless ) continue;
|
||||||
|
Actor a;
|
||||||
|
if ( i < 6 )
|
||||||
|
{
|
||||||
|
if ( UTPlayer(Gibbed).DollType == UTPlayer.DOLL_Boss )
|
||||||
|
a = Spawn(bossparts[i],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
|
||||||
|
else if ( UTPlayer(Gibbed).DollType == UTPlayer.DOLL_Female )
|
||||||
|
a = Spawn(femaleparts[i],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
|
||||||
|
else a = Spawn(maleparts[i],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
|
||||||
|
}
|
||||||
|
else a = Spawn(extraparts[i-6],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
|
||||||
|
ang = FRandom[Blod](0,360);
|
||||||
|
pt = FRandom[Blod](-90,90);
|
||||||
|
if ( a is 'UTHead' )
|
||||||
|
{
|
||||||
|
pt = FRandom[Blod](-90,-15);
|
||||||
|
if ( UTPlayer(Gibbed).player )
|
||||||
|
{
|
||||||
|
UTPlayer(Gibbed).player.Camera = a;
|
||||||
|
UTHead(a).headowner = UTPlayer(Gibbed).player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
|
a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ( int i=0; i<gibsize; i++ )
|
||||||
|
{
|
||||||
|
let a = Spawn("UTBloodPuff",Vec3Offset(FRandom[Blod](-0.8,0.8)*radius,FRandom[Blod](-0.8,0.8)*radius,FRandom[Blod](0.1,0.9)*height));
|
||||||
|
ang = FRandom[Blod](0,360);
|
||||||
|
pt = FRandom[Blod](-90,90);
|
||||||
|
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||||
|
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
|
||||||
|
}
|
||||||
|
A_CountDown();
|
||||||
|
}
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
gibsize = 3;
|
||||||
|
reactiontime = 5;
|
||||||
|
}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TNT1 A 0 NoDelay; // no sound, done by player
|
||||||
|
TNT1 A 1 BurstGibs();
|
||||||
|
Wait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Chunks
|
// Chunks
|
||||||
Class UTGib : Actor
|
Class UTGib : Actor
|
||||||
{
|
{
|
||||||
|
|
@ -301,6 +460,7 @@ Class UTGib : Actor
|
||||||
+MISSILE;
|
+MISSILE;
|
||||||
+THRUACTORS;
|
+THRUACTORS;
|
||||||
+USEBOUNCESTATE;
|
+USEBOUNCESTATE;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -310,9 +470,9 @@ Class UTGib : Actor
|
||||||
if ( bloodcolor ) tracer.SetShade(bloodcolor);
|
if ( bloodcolor ) tracer.SetShade(bloodcolor);
|
||||||
else tracer.SetShade(gameinfo.defaultbloodcolor);
|
else tracer.SetShade(gameinfo.defaultbloodcolor);
|
||||||
tracer.translation = bloodtranslation;
|
tracer.translation = bloodtranslation;
|
||||||
rollvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
rollvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
anglevel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
anglevel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
pitchvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
pitchvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
}
|
}
|
||||||
void A_HandleBounce()
|
void A_HandleBounce()
|
||||||
{
|
{
|
||||||
|
|
@ -331,9 +491,12 @@ Class UTGib : Actor
|
||||||
else if ( spd > 20 ) vel *= 0.8;
|
else if ( spd > 20 ) vel *= 0.8;
|
||||||
A_PlaySound("misc/gibp");
|
A_PlaySound("misc/gibp");
|
||||||
double ang, pt;
|
double ang, pt;
|
||||||
for ( int i=0; i<6; i++ )
|
int max = flak_blood?6:2;
|
||||||
|
for ( int i=0; i<max; i++ )
|
||||||
{
|
{
|
||||||
let d = Spawn("UTBloodDrop",pos);
|
Actor d;
|
||||||
|
if ( flak_blood ) d = Spawn("UTBloodDrop",pos);
|
||||||
|
else d = Spawn("Blood",pos,ALLOW_REPLACE);
|
||||||
d.translation = bloodtranslation;
|
d.translation = bloodtranslation;
|
||||||
if ( bloodcolor ) d.SetShade(bloodcolor);
|
if ( bloodcolor ) d.SetShade(bloodcolor);
|
||||||
else d.SetShade(gameinfo.defaultbloodcolor);
|
else d.SetShade(gameinfo.defaultbloodcolor);
|
||||||
|
|
@ -344,9 +507,9 @@ Class UTGib : Actor
|
||||||
d.vel = dir*FRandom[Blood](0.8,1.2);
|
d.vel = dir*FRandom[Blood](0.8,1.2);
|
||||||
d.scale *= 0.75*FRandom[Blood](0.6,1.4);
|
d.scale *= 0.75*FRandom[Blood](0.6,1.4);
|
||||||
}
|
}
|
||||||
rollvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
rollvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
anglevel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
anglevel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
pitchvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
|
pitchvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
@ -378,25 +541,71 @@ Class UTFemaleTorso : UTGib {}
|
||||||
Class UTMaleArm : UTGib {}
|
Class UTMaleArm : UTGib {}
|
||||||
Class UTMaleFoot : UTGib {}
|
Class UTMaleFoot : UTGib {}
|
||||||
Class UTMaleTorso : UTGib {}
|
Class UTMaleTorso : UTGib {}
|
||||||
|
Class UTBossArm : UTGib {}
|
||||||
|
Class UTBossFoot : UTGib {}
|
||||||
|
Class UTBossTorso : UTGib {}
|
||||||
Class UTHeart : UTGib
|
Class UTHeart : UTGib
|
||||||
{
|
{
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
Spawn:
|
Spawn:
|
||||||
UGIB ABCDEF 2;
|
UGIB ABCDEF 1
|
||||||
|
{
|
||||||
|
roll += rollvel;
|
||||||
|
angle += anglevel;
|
||||||
|
pitch += pitchvel;
|
||||||
|
}
|
||||||
Loop;
|
Loop;
|
||||||
Bounce:
|
|
||||||
UGIB A 0;
|
|
||||||
Goto Spawn;
|
|
||||||
Death:
|
Death:
|
||||||
UGIB ABCDEFABCDEFABCDEF 2;
|
UGIB ABCDEFABCDEFABCDEF 2;
|
||||||
UGIB ABCDEFABCDEF 4;
|
UGIB ABCDEFABCDEF 4;
|
||||||
UGIB ABCDEF 8;
|
UGIB ABCDEF 8;
|
||||||
UGIB A -1;
|
UGIB A 1 A_SetTics(Random[Blod](12,18)*15);
|
||||||
Stop;
|
UGIB A 1 A_FadeOut(0.05);
|
||||||
|
Wait;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Class UTLiver : UTGib {}
|
Class UTLiver : UTGib {}
|
||||||
Class UTStomach : UTGib {}
|
Class UTStomach : UTGib {}
|
||||||
Class UTHeadFemale : UTGib {}
|
Class UTHead : UTGib
|
||||||
Class UTHeadMale : UTGib {}
|
{
|
||||||
|
PlayerInfo headowner;
|
||||||
|
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
UTMainHandler.DoFlash(self,Color(128,255,0,0),150);
|
||||||
|
UTMainHandler.DoFlash(self,Color(96,255,0,0),0);
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( headowner && headowner.mo && (headowner.mo.Health > 0) && (headowner.Camera == self) )
|
||||||
|
{
|
||||||
|
headowner.Camera = headowner.mo;
|
||||||
|
headowner = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override void OnDestroy()
|
||||||
|
{
|
||||||
|
if ( headowner && (headowner.Camera == self) && headowner.mo )
|
||||||
|
{
|
||||||
|
headowner.Camera = headowner.mo;
|
||||||
|
headowner = null;
|
||||||
|
}
|
||||||
|
Super.OnDestroy();
|
||||||
|
}
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Death:
|
||||||
|
UGIB A 1 A_SetTics(Random[Blod](12,18)*15);
|
||||||
|
UGIB A 0 A_JumpIf(headowner,"Death");
|
||||||
|
UGIB A 1 A_FadeOut(0.05);
|
||||||
|
Wait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Class UTHeadFemale : UTHead {}
|
||||||
|
Class UTHeadMale : UTHead {}
|
||||||
|
Class UTHeadBoss : UTHead {}
|
||||||
|
|
|
||||||
|
|
@ -716,11 +716,11 @@ Class UTHud : BaseStatusBar
|
||||||
Inventory itm;
|
Inventory itm;
|
||||||
for ( itm=CPlayer.mo.InvFirst; (itm && (i < 5)); itm=itm.NextInv() )
|
for ( itm=CPlayer.mo.InvFirst; (itm && (i < 5)); itm=itm.NextInv() )
|
||||||
{
|
{
|
||||||
CurX = BaseX+2*hudsize*HScale;
|
// scale to fit
|
||||||
CurY = BaseY+2*hudsize*HScale;
|
|
||||||
// if item doesn't fit 60x60, scale
|
|
||||||
Vector2 scl = TexMan.GetScaledSize(itm.Icon);
|
Vector2 scl = TexMan.GetScaledSize(itm.Icon);
|
||||||
double mscl = max(scl.x,scl.y)/60.;
|
double mscl = 56./max(scl.x,scl.y);
|
||||||
|
CurX = BaseX+(4+(56.-scl.x*mscl)/2.)*hudsize*HScale;
|
||||||
|
CurY = BaseY+4*hudsize*HScale;
|
||||||
UTDrawTintedTex(itm.Icon,hudsize*mscl);
|
UTDrawTintedTex(itm.Icon,hudsize*mscl);
|
||||||
// amount if >1
|
// amount if >1
|
||||||
if ( itm.Amount > 1 )
|
if ( itm.Amount > 1 )
|
||||||
|
|
@ -763,10 +763,11 @@ Class UTHud : BaseStatusBar
|
||||||
UTDrawTintedTex(ItemBox,hudsize);
|
UTDrawTintedTex(ItemBox,hudsize);
|
||||||
if ( artiflashtick )
|
if ( artiflashtick )
|
||||||
{
|
{
|
||||||
|
// scale to fit
|
||||||
Vector2 scl = TexMan.GetScaledSize(LastItem);
|
Vector2 scl = TexMan.GetScaledSize(LastItem);
|
||||||
double mscl = max(scl.x,scl.y)/60.;
|
double mscl = 56./max(scl.x,scl.y);
|
||||||
CurX += 2*hudsize*HScale;
|
CurX += (4+(56.-scl.x*mscl)/2.)*hudsize*HScale;
|
||||||
CurY += 2*hudsize*HScale;
|
CurY += 4*hudsize*HScale;
|
||||||
UTDrawTintedTex(LastItem,hudsize*mscl);
|
UTDrawTintedTex(LastItem,hudsize*mscl);
|
||||||
if ( LastAmount <= 1 ) return;
|
if ( LastAmount <= 1 ) return;
|
||||||
CurX = 32*hudsize*HScale;
|
CurX = 32*hudsize*HScale;
|
||||||
|
|
@ -776,11 +777,11 @@ Class UTHud : BaseStatusBar
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( !CPlayer.mo.InvSel ) return;
|
if ( !CPlayer.mo.InvSel ) return;
|
||||||
// if item doesn't fit 60x60, scale
|
// scale to fit
|
||||||
Vector2 scl = TexMan.GetScaledSize(CPlayer.mo.InvSel.Icon);
|
Vector2 scl = TexMan.GetScaledSize(CPlayer.mo.InvSel.Icon);
|
||||||
double mscl = max(scl.x,scl.y)/60.;
|
double mscl = 56./max(scl.x,scl.y);
|
||||||
CurX += 2*hudsize*HScale;
|
CurX += (4+(56.-scl.x*mscl)/2.)*hudsize*HScale;
|
||||||
CurY += 2*hudsize*HScale;
|
CurY += 4*hudsize*HScale;
|
||||||
UTDrawTintedTex(CPlayer.mo.InvSel.Icon,hudsize*mscl);
|
UTDrawTintedTex(CPlayer.mo.InvSel.Icon,hudsize*mscl);
|
||||||
// amount if >1
|
// amount if >1
|
||||||
if ( CPlayer.mo.InvSel.Amount <= 1 ) return;
|
if ( CPlayer.mo.InvSel.Amount <= 1 ) return;
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ Class ShockWave : Actor
|
||||||
+NOBLOCKMAP;
|
+NOBLOCKMAP;
|
||||||
+NOGRAVITY;
|
+NOGRAVITY;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -94,6 +95,7 @@ Class WarheadSubExplosion : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -119,6 +121,7 @@ Class WarheadHitbox : Actor
|
||||||
+NOCLIP;
|
+NOCLIP;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+NOBLOOD;
|
+NOBLOOD;
|
||||||
|
+NOTELEPORT;
|
||||||
}
|
}
|
||||||
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
||||||
{
|
{
|
||||||
|
|
@ -207,6 +210,7 @@ Class WarheadTrail : Actor
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
+ROLLSPRITE;
|
+ROLLSPRITE;
|
||||||
+ROLLCENTER;
|
+ROLLCENTER;
|
||||||
|
+NOTELEPORT;
|
||||||
Scale 0.2;
|
Scale 0.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||