Finally add player models (sorta rudimentary but they work).

Updated blood and gore code, it's less WIP now.
Updated readme with some additional notes.
Removed Heretic compat player classes as they are no longer needed.
This commit is contained in:
Marisa the Magician 2019-07-22 02:58:48 +02:00
commit 96411592b3
57 changed files with 2341 additions and 227 deletions

View file

@ -12,7 +12,7 @@ This mod requires GZDoom 4.1 or later.
- Redeemer (slot 0)
- 6 Degrees of Freedom movement with manual tilt (reload/zoom buttons)
- GES Biorifle (slot 3)
- Pulsegun (slot 5) (with beta animations)
- Pulsegun (slot 5) (with optional beta reload)
- Health
- Big Keg O' Health (soulsphere)
- Beta Super Health (medkit)
@ -31,12 +31,16 @@ This mod requires GZDoom 4.1 or later.
- Computer Map (computer area map)
- Searchlight (light amplification visor)
- Enhanced Shock Rifle (slot 4, limited ammo, invulnerability sphere)
- Instagib DM mode
- UT HUD
- Impact Hammer (slot 1)
- Chainsaw (slot 1)
- Option to make chainsaw use ammo (random drop from enemies killed without it)
- Translocator (slot 1)
- Option to make it use regenerating ammo like in UT2k4
- Enforcer (slot 2)
- Dual Enforcers (slot 2)
- Restored reloading (optional)
- Ripper (slot 6)
- Jump Boots (radsuit, has "iron boots" powerup effect to compensate)
- 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
toggled)
- UT-like weapon dropping style
- UT player classes (sound only, no models yet)
- UT player classes
- Heretic compatibility
- Spanish localization
- UT gore system (toggleable)
## In progress
- General polishing, bugfixing and rebalancing
- Add some more effects
- Lava/Slime footstep sounds?
- UT gore system (toggleable)
- French localization
- Italian localization
- French, Italian and German localizations (I'll need help for these)
## Ideas
- Chainsaw balancing (maybe give it ammo?)
- Figure out some alternative invincibility item. Kinda like how I improvised
the backpack replacement.
## 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)
- Add ammo counters to Pulsegun, Minigun, Flak Cannon and Rocket Launcher once
scripted textures are implemented
- Add player models once GZDoom gets a well deserved model animation system
overhaul (at the moment this would require a monumental amount of work in
the current state-tied system)
- Redo player models once GZDoom gets a well deserved model animation system
overhaul (mainly to clean up the current, messy implementation of this)
- 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
- Port some of my UT weapon mods (and maybe also some of my personal faves by
others, such as Psi Weapon Dreams)
- Hexen compatibility ???
- Hexen/Strife compatibility ???
- Relics?
## Known bugs

BIN
brightmaps/boss3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
brightmaps/boss4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,9 +0,0 @@
GameInfo
{
AddEventHandlers = "RedeemerHUDHandler", "UTMainHandler"
PlayerClasses = "UTPlayerHereticCompatTMale1", "UTPlayerHereticCompatTMale2", "UTPlayerHereticCompatTFemale1", "UTPlayerHereticCompatTFemale2", "UTPlayerHereticCompatTBoss"
StatusBarClass = "UTHud"
BackpackType = "UTBackpack"
BorderFlat = "TEMPBG"
Border = 0,0,"","","","","","","",""
}

View file

@ -27,6 +27,18 @@ HardwareShader Texture "models/bossheadT.png"
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
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"
{
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"

308
modeldef.boss Normal file
View 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
View 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
View 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
}

View file

@ -130,7 +130,7 @@ Model "UTFemaleArm"
Path "models"
Model 0 "femalearmm_d.3d"
Skin 0 "femalearmT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 1.5
USEACTORPITCH
USEACTORROLL
@ -145,7 +145,7 @@ Model "UTFemaleFoot"
Path "models"
Model 0 "femalefootm_d.3d"
Skin 0 "femalefootT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 1.5
USEACTORPITCH
USEACTORROLL
@ -160,7 +160,7 @@ Model "UTFemaleTorso"
Path "models"
Model 0 "femaletorsom_d.3d"
Skin 0 "femaletorsoT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 4
USEACTORPITCH
USEACTORROLL
@ -175,7 +175,7 @@ Model "UTMaleArm"
Path "models"
Model 0 "malearmm_d.3d"
Skin 0 "malearmT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 1.5
USEACTORPITCH
USEACTORROLL
@ -190,7 +190,7 @@ Model "UTMaleFoot"
Path "models"
Model 0 "malefootm_d.3d"
Skin 0 "malefootT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 1.5
USEACTORPITCH
USEACTORROLL
@ -205,7 +205,7 @@ Model "UTMaleTorso"
Path "models"
Model 0 "maletorsom_d.3d"
Skin 0 "maletorsoT.png"
Scale 0.16 0.16 0.192
Scale 0.2 0.2 0.24
Offset 0 0 4
USEACTORPITCH
USEACTORROLL
@ -215,12 +215,42 @@ Model "UTMaleTorso"
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"
{
Path "models"
Model 0 "HeadFemaleM_d.3d"
Skin 0 "FMT1.png"
Scale 0.14 0.14 0.168
Scale 0.2 0.2 0.24
Offset 0 0 3
AngleOffset -90
USEACTORPITCH
@ -236,7 +266,23 @@ Model "UTHeadMale"
Path "models"
Model 0 "headmalem_d.3d"
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
AngleOffset -90
USEACTORPITCH

284
modeldef.sgirl Normal file
View 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
View 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

Binary file not shown.

BIN
models/Boss_d.3d Normal file

Binary file not shown.

BIN
models/Commando_a.3d Normal file

Binary file not shown.

BIN
models/Commando_d.3d Normal file

Binary file not shown.

BIN
models/FCommando_a.3d Normal file

Binary file not shown.

BIN
models/FCommando_d.3d Normal file

Binary file not shown.

BIN
models/GunPick1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
models/JPulse3rd_01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
models/SGirl_a.3d Normal file

Binary file not shown.

BIN
models/SGirl_d.3d Normal file

Binary file not shown.

BIN
models/Soldier_a.3d Normal file

Binary file not shown.

BIN
models/Soldier_d.3d Normal file

Binary file not shown.

BIN
models/army1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
models/army2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
models/army3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
models/army4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
models/boss1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
models/boss2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
models/boss3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
models/boss4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
models/bossarmm_a.3d Normal file

Binary file not shown.

BIN
models/bossarmm_d.3d Normal file

Binary file not shown.

BIN
models/bossgibT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
models/bossthighm_a.3d Normal file

Binary file not shown.

BIN
models/bossthighm_d.3d Normal file

Binary file not shown.

BIN
models/cmdo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
models/cmdo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
models/cmdo3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
models/cmdo4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
models/fcmd1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
models/fcmd2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
models/fcmd4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
models/sldr1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
models/sldr2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
models/sldr3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
models/sldr4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -42,7 +42,7 @@ $playeralias tmale1 neutral *pain50 ut/malepain3
$playeralias tmale1 neutral *pain25 ut/malepain4
$playeralias tmale1 neutral *grunt ut/malegrunt
$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 *usefail ut/malehump1
$playeralias tmale1 neutral *surface ut/malesurface

View file

@ -807,6 +807,8 @@ Class BioRifle : UTWeapon
invoker.charge = min(5.1,invoker.charge+0.1);
A_Overlay(-9999,null);
A_WeaponOffset(0,32); // fix sudden psprite lowering
if ( self is 'UTPlayer' )
UTPlayer(self).PlayAttacking3();
}
BIOF A 2 A_BioFire(true);
BIOF BCDEFGHI 2;

View file

@ -251,159 +251,3 @@ Class ActMedBox : UTActivatableHealth
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);
}
}

View file

@ -360,6 +360,8 @@ Class UTRocketLauncher : UTWeapon
else A_PlaySound("utrl/fire",CHAN_WEAPON);
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(64,255,0,0),1);
if ( self is 'UTPlayer' )
UTPlayer(self).PlayAttacking3();
A_AlertMonsters();
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++ )

View file

@ -536,7 +536,12 @@ Class Enforcer : UTWeapon
}
ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 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);
Goto Ready;
LeftReload:
@ -549,7 +554,12 @@ Class Enforcer : UTWeapon
}
2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 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);
Goto LeftReady;
Deselect:

View file

@ -291,7 +291,12 @@ Class ImpactHammer : UTWeapon
IMPR A 0 A_ImpactRefire("Hold");
Goto Release;
Release:
IMPF A 0 A_FireBlast();
IMPF A 0
{
if ( self is 'UTPlayer' )
UTPlayer(self).PlayAttacking3();
A_FireBlast();
}
IMPF AABCCDEEFGGHIIJKKLMMNOOP 1;
Goto Idle;
AltFire:

View file

@ -802,7 +802,12 @@ Class PulseGun : UTWeapon
Reload:
PGNI A 1;
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;
PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1;
Goto Idle;

View file

@ -267,8 +267,6 @@ Class TranslocatorAfterimage : Actor
angle = target.angle;
pitch = target.pitch;
roll = target.roll;
sprite = target.sprite;
frame = target.frame;
vel = (FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5),FRandom[Transloc](-.5,.5));
}
action void A_Spread()
@ -279,8 +277,8 @@ Class TranslocatorAfterimage : Actor
States
{
Spawn:
#### # 10 A_SetTics(Random[Transloc](20,50));
#### # 1 A_Spread();
PLAY A 10 A_SetTics(Random[Transloc](20,50));
PLAY A 1 A_Spread();
Wait;
}
}

View file

@ -13,6 +13,7 @@ Class UTPlayer : DoomPlayer
int tempslide;
double ssup;
int corpsetime;
int dolltype, voicetype;
@ -177,7 +178,7 @@ Class UTPlayer : DoomPlayer
let type = (class<Inventory>)(AllActorClasses[i]);
if ( !type ) continue;
let def = GetDefaultByType(type);
if ( !(self is "UTPlayerHereticCompat")
if ( !(gameinfo.gametype&GAME_Raven)
&& ((type is "UTActivatable") || (type is "UTActivatableHealth")) )
continue; // don't give these outside of Heretic/Hexen
if ( def.Icon.isValid() && (def.MaxAmount > 1) &&
@ -242,6 +243,7 @@ Class UTPlayer : DoomPlayer
else A_PlaySound("*uland",CHAN_AUTO,vol);
}
else forcefootstep = true;
if ( Health > 0 ) PlayLanding();
}
if ( tempslide )
{
@ -506,6 +508,7 @@ Class UTPlayer : DoomPlayer
if ( vel.length() > terminalvelocity/TICRATE ) vel = vel.unit()*(terminalvelocity/TICRATE);
player.vel *= 0;
player.jumptics = -2;
if ( !(player.cheats & CF_PREDICTING) ) PlayIdle();
}
else if ( (bFly && bFlyCheat) || (player.cheats&CF_NOCLIP2) )
{
@ -708,6 +711,380 @@ Class UTPlayer : DoomPlayer
{
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()
{
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);
}
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 ABCDEFGHI 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 1
{
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
@ -734,26 +1111,118 @@ Class UTPlayerTMale2 : UTPlayer
-NOMENU;
}
}
Class UTPlayerTFemale1 : UTPlayer
Class UTPlayerTFemale : UTPlayer
{
Default
{
UTPlayer.DollType DOLL_Female;
}
void A_LegPop()
{
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 ABCDEFGHIJ 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
{
Player.SoundClass "tfemale";
Player.DisplayName "$N_TFEMALE1";
Player.Portrait "Ivana";
UTPlayer.DollType DOLL_Female;
UTPlayer.VoiceType VOICE_FemaleOne;
-NOMENU;
}
}
Class UTPlayerTFemale2 : UTPlayer
Class UTPlayerTFemale2 : UTPlayerTFemale
{
Default
{
Player.SoundClass "tfemale";
Player.DisplayName "$N_TFEMALE2";
Player.Portrait "Lauren";
UTPlayer.DollType DOLL_Female;
UTPlayer.VoiceType VOICE_FemaleTwo;
-NOMENU;
}
@ -1580,8 +2049,8 @@ Class GenericFlash : HUDMessageBase
}
override bool Tick()
{
alpha -= 1./duration;
return (alpha<=0);
if ( duration > 0 ) alpha -= 1./duration;
return (alpha<=0)||(!cam);
}
override void Draw( int bottom, int visibility )
{
@ -2059,6 +2528,27 @@ Class UTMainHandler : EventHandler
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:
mo.SetStateLabel("Taunt2");
break;
case 3:
mo.SetStateLabel("Taunt3");
break;
case 4:
mo.SetStateLabel("Taunt4");
break;
default:
mo.SetStateLabel("Taunt1");
break;
}
}
}
override void WorldTick()
@ -2106,12 +2596,8 @@ Class UTMainHandler : EventHandler
// 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) )
{
// players have special gibbing
if ( e.Thing.player )
{
// TODO
return;
}
// players use their own gibber
if ( e.Thing is 'UTPlayer' ) return;
// generic gibbing
let a = Actor.Spawn("UTGibber",e.Thing.pos);
a.vel = e.Thing.vel;

View file

@ -80,7 +80,7 @@ Class UTBloodDrop : Actor
}
void A_BloodDie()
{
// TODO
// TODO leave decals
}
States
{
@ -112,9 +112,12 @@ Class UTBloodSpurt : Actor
str = FRandom[Blood](2.0,3.2)*args[0];
int sz = 7*args[0];
double ang, pt;
if ( !flak_blood ) sz /= 3;
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.SetShade(fillcolor);
ang = angle+FRandom[Blood](-3,3)*str;
@ -160,9 +163,12 @@ Class UTBloodTrail : Actor
if ( !target ) return;
SetOrigin(target.pos,true);
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.SetShade(fillcolor);
ang = FRandom[Blood](0,360);
@ -232,7 +238,7 @@ Class UTGibber : Actor
bool dummy;
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.SetShade(fillcolor);
a.scale *= FRandom[Blod](1.7,2.3)*scale.x;
@ -243,7 +249,7 @@ Class UTGibber : Actor
}
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.SetShade(fillcolor);
a.scale *= FRandom[Blod](1.8,2.3)*scale.x;
@ -282,6 +288,152 @@ 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](8.0,12.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++ )
{
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](8.0,12.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
Class UTGib : Actor
{
@ -312,9 +464,9 @@ Class UTGib : Actor
if ( bloodcolor ) tracer.SetShade(bloodcolor);
else tracer.SetShade(gameinfo.defaultbloodcolor);
tracer.translation = bloodtranslation;
rollvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
anglevel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
pitchvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
rollvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
anglevel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
pitchvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
}
void A_HandleBounce()
{
@ -333,9 +485,12 @@ Class UTGib : Actor
else if ( spd > 20 ) vel *= 0.8;
A_PlaySound("misc/gibp");
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;
if ( bloodcolor ) d.SetShade(bloodcolor);
else d.SetShade(gameinfo.defaultbloodcolor);
@ -346,9 +501,9 @@ Class UTGib : Actor
d.vel = dir*FRandom[Blood](0.8,1.2);
d.scale *= 0.75*FRandom[Blood](0.6,1.4);
}
rollvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
anglevel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
pitchvel = FRandom[Blod](5,15)*RandomPick[Blod](-1,1);
rollvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
anglevel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
pitchvel = FRandom[Blod](3,6)*RandomPick[Blod](-1,1);
}
States
{
@ -380,25 +535,71 @@ Class UTFemaleTorso : UTGib {}
Class UTMaleArm : UTGib {}
Class UTMaleFoot : UTGib {}
Class UTMaleTorso : UTGib {}
Class UTBossArm : UTGib {}
Class UTBossFoot : UTGib {}
Class UTBossTorso : UTGib {}
Class UTHeart : UTGib
{
States
{
Spawn:
UGIB ABCDEF 2;
UGIB ABCDEF 1
{
roll += rollvel;
angle += anglevel;
pitch += pitchvel;
}
Loop;
Bounce:
UGIB A 0;
Goto Spawn;
Death:
UGIB ABCDEFABCDEFABCDEF 2;
UGIB ABCDEFABCDEF 4;
UGIB ABCDEF 8;
UGIB A -1;
Stop;
UGIB A 1 A_SetTics(Random[Blod](12,18)*15);
UGIB A 1 A_FadeOut(0.05);
Wait;
}
}
Class UTLiver : UTGib {}
Class UTStomach : UTGib {}
Class UTHeadFemale : UTGib {}
Class UTHeadMale : UTGib {}
Class UTHead : 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 {}