diff --git a/gldefs.keys b/gldefs.keys index 75f8762ed..90b44a8ac 100644 --- a/gldefs.keys +++ b/gldefs.keys @@ -117,6 +117,12 @@ HardwareShader Texture "models/DoomYellowSkull.png" Texture "masktex" "models/DoomSkull_mask.png" Texture "envtex" "models/matcap/goldmap.png" } +HardwareShader Texture "models/DoomPurpleSkull.png" +{ + Shader "shaders/glsl/Shinemask.fp" + Texture "masktex" "models/DoomSkull_mask.png" + Texture "envtex" "models/matcap/purpmap.png" +} pointlight SWWMREDKEY { @@ -160,6 +166,13 @@ pointlight SWWMORANGEKEY attenuate 1 offset 0 16 0 } +pointlight SWWMPURPLEKEY +{ + color 1.0 0.0 1.0 + size 40 + attenuate 1 + offset 0 16 0 +} pointlight SWWMCARDLITE { color 0.5 0.5 0.0 @@ -216,6 +229,10 @@ object SWWMYellowSkull { frame XZW1 { light SWWMYELLOWKEY } } +object SWWMPurpleSkull +{ + frame XZW1 { light SWWMPURPLEKEY } +} object SWWMKeyGreen { diff --git a/language.version b/language.version index 4aadae833..c6eb16db8 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.0.8 \cu(Sun 22 Aug 10:46:17 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.0.8 \cu(2021-08-22 10:46:17)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.0.8 \cu(Sat 28 Aug 18:06:11 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.0.8 \cu(2021-08-28 18:06:11)\c-"; diff --git a/modeldef.keygesture b/modeldef.keygesture index db2ecb628..64547ad90 100644 --- a/modeldef.keygesture +++ b/modeldef.keygesture @@ -1093,6 +1093,127 @@ Model "SWWMBlueSkullGesture" FrameIndex XZW0 M 1 12 FrameIndex XZW0 N 1 13 } +Model "SWWMPurpleSkullGesture" +{ + Path "models" + Model 0 "DoomSkull1st_d.3d" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "DoomPurpleSkull.png" + + AngleOffset -90 + Scale -0.005 0.0025 0.005 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + // Use 1 + FrameIndex XZW1 U 0 21 + FrameIndex XZW1 V 0 22 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 + FrameIndex XZW1 Y 0 25 + FrameIndex XZW1 Z 0 26 + FrameIndex XZW2 A 0 27 + FrameIndex XZW2 B 0 28 + FrameIndex XZW2 C 0 29 + FrameIndex XZW2 D 0 30 + FrameIndex XZW2 E 0 31 + FrameIndex XZW2 F 0 32 + FrameIndex XZW2 G 0 33 + FrameIndex XZW2 H 0 34 + FrameIndex XZW2 I 0 35 + FrameIndex XZW2 J 0 36 + FrameIndex XZW2 K 0 37 + FrameIndex XZW2 L 0 38 + FrameIndex XZW2 M 0 39 + FrameIndex XZW2 N 0 40 + FrameIndex XZW2 O 0 41 + FrameIndex XZW2 P 0 42 + FrameIndex XZW2 Q 0 43 + FrameIndex XZW2 R 0 44 + // Use 2 + FrameIndex XZW2 S 0 46 + FrameIndex XZW2 T 0 47 + FrameIndex XZW2 U 0 48 + FrameIndex XZW2 V 0 49 + FrameIndex XZW2 W 0 51 + FrameIndex XZW2 X 0 52 + FrameIndex XZW2 Y 0 53 + FrameIndex XZW2 Z 0 54 + FrameIndex XZW3 A 0 55 + FrameIndex XZW3 B 0 56 + FrameIndex XZW3 C 0 57 + FrameIndex XZW3 D 0 58 + FrameIndex XZW3 E 0 59 + FrameIndex XZW3 F 0 60 + FrameIndex XZW3 G 0 61 + FrameIndex XZW3 H 0 62 + FrameIndex XZW3 I 0 63 + FrameIndex XZW3 J 0 64 + FrameIndex XZW3 K 0 65 + FrameIndex XZW3 L 0 66 + FrameIndex XZW3 M 0 67 + FrameIndex XZW3 N 0 68 + FrameIndex XZW3 O 0 69 + FrameIndex XZW3 P 0 70 + FrameIndex XZW3 Q 0 71 + FrameIndex XZW3 R 0 72 + FrameIndex XZW3 S 0 73 + FrameIndex XZW3 T 0 74 + FrameIndex XZW3 U 0 75 + FrameIndex XZW3 V 0 76 + FrameIndex XZW3 W 0 77 + FrameIndex XZW3 X 0 78 + FrameIndex XZW3 Y 0 79 +} +Model "SWWMPurpleSkullGesture" +{ + Path "models" + Model 1 "QuickPunch1st_d.3d" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + + AngleOffset -90 + Scale -0.005 0.0025 0.005 + + // Punch + FrameIndex XZW0 A 1 0 + FrameIndex XZW0 B 1 1 + FrameIndex XZW0 C 1 2 + FrameIndex XZW0 D 1 3 + FrameIndex XZW0 E 1 4 + FrameIndex XZW0 F 1 5 + FrameIndex XZW0 G 1 6 + FrameIndex XZW0 H 1 7 + FrameIndex XZW0 I 1 8 + FrameIndex XZW0 J 1 9 + FrameIndex XZW0 K 1 10 + FrameIndex XZW0 L 1 11 + FrameIndex XZW0 M 1 12 + FrameIndex XZW0 N 1 13 +} Model "SWWMGreenKeyGesture" { Path "models" diff --git a/modeldef.keys b/modeldef.keys index bf0d0f099..65de32746 100644 --- a/modeldef.keys +++ b/modeldef.keys @@ -147,6 +147,67 @@ Model "SWWMYellowSkull" FrameIndex XZW1 A 0 0 } +Model "SWWMPurpleSkull" +{ + Path "models" + Model 0 "DoomSkullKey_d.3d" + Skin 0 "DoomPurpleSkull.png" + Scale 0.035 0.035 0.035 + RollOffset 15 + ZOffset 16 + ROTATING + + FrameIndex XZW1 A 0 0 +} + +Model "SWWMFakeRedSkull" +{ + Path "models" + Model 0 "DoomSkullKey_d.3d" + Skin 0 "DoomRedSkull.png" + Scale 0.035 0.035 0.035 + RollOffset 35 + AngleOffset 244 + ZOffset 5 + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakeBlueSkull" +{ + Path "models" + Model 0 "DoomSkullKey_d.3d" + Skin 0 "DoomBlueSkull.png" + Scale 0.035 0.035 0.035 + RollOffset 35 + AngleOffset 225 + ZOffset 5 + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakeYellowSkull" +{ + Path "models" + Model 0 "DoomSkullKey_d.3d" + Skin 0 "DoomYellowSkull.png" + Scale 0.035 0.035 0.035 + RollOffset 35 + AngleOffset 135 + ZOffset 5 + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakePurpleSkull" +{ + Path "models" + Model 0 "DoomSkullKey_d.3d" + Skin 0 "DoomPurpleSkull.png" + Scale 0.035 0.035 0.035 + RollOffset 35 + AngleOffset 116 + ZOffset 5 + + FrameIndex XZW1 A 0 0 +} Model "SWWMKeyGreen" { diff --git a/models/DoomPurpleSkull.png b/models/DoomPurpleSkull.png new file mode 100644 index 000000000..2c10724c8 Binary files /dev/null and b/models/DoomPurpleSkull.png differ diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index 1d6f4780d..f58c227d8 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -617,9 +617,14 @@ extend Class SWWMHandler else if ( (e.Replacee is 'BlueCard') && !(e.Replacee is 'ChexBlueCard') ) e.Replacement = 'SWWMBlueCard'; else if ( (e.Replacee is 'YellowCard') && !(e.Replacee is 'ChexYellowCard') ) e.Replacement = 'SWWMYellowCard'; else if ( e.Replacee.GetClassName() == 'GreenCard' ) e.Replacement = 'SWWMGreenCard'; + else if ( e.Replacee.GetClassName() == 'RedSkullFake' ) e.Replacement = 'SWWMFakeRedSkull'; + else if ( e.Replacee.GetClassName() == 'BlueSkullFake' ) e.Replacement = 'SWWMFakeBlueSkull'; + else if ( e.Replacee.GetClassName() == 'YellowSkullFake' ) e.Replacement = 'SWWMFakeYellowSkull'; + else if ( e.Replacee.GetClassName() == 'PurpleSkullFake' ) e.Replacement = 'SWWMFakePurpleSkull'; else if ( e.Replacee is 'RedSkull' ) e.Replacement = iskdizd?'SWWMSilverCardKDiZD':'SWWMRedSkull'; else if ( e.Replacee is 'BlueSkull' ) e.Replacement = iskdizd?'SWWMGreenCardKDiZD':'SWWMBlueSkull'; else if ( e.Replacee is 'YellowSkull' ) e.Replacement = iskdizd?'SWWMOrangeCardKDiZD':'SWWMYellowSkull'; + else if ( e.Replacee.GetClassName() == 'PurpleSkull' ) e.Replacement = 'SWWMPurpleSkull'; else if ( e.Replacee is 'KeyGreen' ) e.Replacement = 'SWWMKeyGreen'; else if ( e.Replacee is 'KeyBlue' ) e.Replacement = 'SWWMKeyBlue'; else if ( e.Replacee is 'KeyYellow' ) e.Replacement = 'SWWMKeyYellow'; diff --git a/zscript/items/swwm_keys.zsc b/zscript/items/swwm_keys.zsc index 2462e6eb5..651a10f79 100644 --- a/zscript/items/swwm_keys.zsc +++ b/zscript/items/swwm_keys.zsc @@ -249,6 +249,91 @@ Class SWWMYellowSkull : SWWMKey Stop; } } +Class SWWMPurpleSkull : SWWMKey +{ + Default + { + Tag "$T_PURPLESKULL"; + Species "PurpleSkull"; + Inventory.PickupMessage "$T_PURPLESKULL"; + Inventory.PickupFlash "SWWMPurplePickupFlash"; + SWWMKey.GestureWeapon "SWWMPurpleSkullGesture"; + Radius 10; + Height 25; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +// Verdant Citadel fake keys +Class SWWMFakeRedSkull : Actor +{ + Default + { + Radius .1; + Height 0.; + +NOBLOCKMAP; + +MOVEWITHSECTOR; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SWWMFakeBlueSkull : Actor +{ + Default + { + Radius .1; + Height 0.; + +NOBLOCKMAP; + +MOVEWITHSECTOR; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SWWMFakeYellowSkull : Actor +{ + Default + { + Radius .1; + Height 0.; + +NOBLOCKMAP; + +MOVEWITHSECTOR; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SWWMFakePurpleSkull : Actor +{ + Default + { + Radius .1; + Height 0.; + +NOBLOCKMAP; + +MOVEWITHSECTOR; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} Class SWWMKeyGreen : SWWMKey { diff --git a/zscript/items/swwm_keys_gesture.zsc b/zscript/items/swwm_keys_gesture.zsc index 76124e060..670df8d5a 100644 --- a/zscript/items/swwm_keys_gesture.zsc +++ b/zscript/items/swwm_keys_gesture.zsc @@ -133,6 +133,7 @@ Class SWWMGreenCardGesture : SWWMKeyGesture {} Class SWWMOrangeCardGesture : SWWMKeyGesture {} Class SWWMRedSkullGesture : SWWMKeyGesture {} Class SWWMYellowSkullGesture : SWWMKeyGesture {} +Class SWWMPurpleSkullGesture : SWWMKeyGesture {} Class SWWMBlueSkullGesture : SWWMKeyGesture {} Class SWWMGreenKeyGesture : SWWMKeyGesture {} Class SWWMBlueKeyGesture : SWWMKeyGesture {}