From c757acf7aac84132c2204c2a0b8447ace3b55740 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Wed, 10 Apr 2024 12:40:45 +0200 Subject: [PATCH] Generic gib models (for now). --- language.version | 4 ++-- modeldef/misc.txt | 24 ++++++++++++++++++++++++ models/ChunkyMeat.md3 | Bin 0 -> 3540 bytes models/ChunkyMeat.png | Bin 0 -> 1133 bytes zscript/swwm_blod.zsc | 16 ++++++++++------ 5 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 models/ChunkyMeat.md3 create mode 100644 models/ChunkyMeat.png diff --git a/language.version b/language.version index 2120fd106..4b9e7978f 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1122 \cu(Wed Apr 10 12:40:30 CEST 2024)\c-"; -SWWM_SHORTVER="\cw1.3pre r1122 \cu(2024-04-10 12:40:30)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1123 \cu(Wed Apr 10 12:40:45 CEST 2024)\c-"; +SWWM_SHORTVER="\cw1.3pre r1123 \cu(2024-04-10 12:40:45)\c-"; diff --git a/modeldef/misc.txt b/modeldef/misc.txt index f719af940..c40b1154a 100644 --- a/modeldef/misc.txt +++ b/modeldef/misc.txt @@ -119,6 +119,30 @@ Model "mkBloodDrop" FrameIndex SBLD M 0 0 } +Model "mkFlyingGib" +{ + Path "models" + + Model 0 "ChunkyMeat.md3" + Skin 0 "ChunkyMeat.png" + Scale 0.05 0.05 0.05 + USEROTATIONCENTER + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + Rotation-Center 0 0 1 + ZOffset 2 + + FrameIndex XZW1 A 0 0 + 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 +} + Model "RadiusDebugSphere" { Path "models/extra" diff --git a/models/ChunkyMeat.md3 b/models/ChunkyMeat.md3 new file mode 100644 index 0000000000000000000000000000000000000000..1cf17029c127367b2322672b826ee5e030af7202 GIT binary patch literal 3540 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 literal 0 HcmV?d00001 diff --git a/models/ChunkyMeat.png b/models/ChunkyMeat.png new file mode 100644 index 0000000000000000000000000000000000000000..45e44f6a9f022767ee55cf7dfe04f7ed3c07ccc2 GIT binary patch literal 1133 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o7G?$ph6wkZw+svn1_3@Ht_%zewhRo;3=EzO z4E_uZVGInh3=F9Z3^@!8B@7HTe0(k9;ysFrQ?#|0+1Tv#_O=S-`_I6@{KM15F~s9| zZm8q5*%l&C^ehi9u~jd4!@cF8xWS5a+g=r;*L^CJ-rBTyZ0l4#k+WR)gB`!mrhdbl z>Tl2SetPy@s50WfvXGG4tN-ucwx4%?x%2(6wfC=nk=e>^dK#pQtOsW+!o zaV?m)s`|l;YK!RT%QxSOIPAH;E2nLt_Ex_w8d|zBZ6R7qi!_&{@MzA~p6*yM>+*^H zo*D-|R~}_`)(f1M8^$=5=i}TbMO+W!)~$T-v58AJb5`-e2;PytIn@= zXCF;{zsqCw!b~2K1y($>T0b9Ub*|6i&z&u}^}W%inQNCdT)8~|_`}Z|4ttm!|K3<% zYRmd0?pA%}kFvb@wU__7%jBdAT>lL#4PSX!g`McBpUc1KI{b?$n zC%$%?a&_Y-naR_Wm#^#*+CC{}k$~&pv_ijk087 zRN>n7vAl{(J*gab71}bEy)$3eUE!N~sBi*@oa>XX@6Ky3VB$@1Obf9~we~9CF0Ln( z%(I30h}3?L2T!vcR&JG4cG#RR`S4R7*N-Q6_pCGJb7=bN&)D&8+#bo$WM&olcMUH!9NvS^p}=NGq=rzLPa zzBK>*`e`d>Fm035yw#&67I*&8*{pB7Pam-Twd_*Mvm4(JdhOxRdv^Hj?Y*gjoV7aw zq}E^a`>os`cE8WaslroHxME|8P^)d+|C$}?EbpdB3$GVDr$1x4z1_cCg*&`wiCE3s z&12AXZ*JW-t;Z8iU&&cF?atdZOS0vjuJ}Mu&cA?t4V}=YnoON32Zp@Efs&hJq zVd;kD9ACa2KOVf+dt$u72boVPYqb3P`Nhm;SSPkLd<@_z&7AcyJonDsxz(4x#a@@U z%J!*$_v+lPxBt^@<|ahT@*Q57H!C^TYUUsQ=)F_Viru>5$-uzC;OXk;vd$@?2>^_S B6>9(h literal 0 HcmV?d00001 diff --git a/zscript/swwm_blod.zsc b/zscript/swwm_blod.zsc index d9b77adeb..b9e641536 100644 --- a/zscript/swwm_blod.zsc +++ b/zscript/swwm_blod.zsc @@ -509,7 +509,7 @@ Class mkFlyingGib : Actor int lastbleed; color shadecol; bool bleeding; - double rollvel; + double rollvel, pitchvel; mkFlyingGib prevmeat, nextmeat; Vector3 oldpos; TextureID pufftex[8]; @@ -523,7 +523,7 @@ Class mkFlyingGib : Actor puff.lifetime = 40; puff.accel = (0,0,-.25); puff.fadestep = -1; - frame = Random[Blood](0,5); + frame = Random[Blood](0,7); double ang = FRandom[Gibs](0,360); double pt = FRandom[Gibs](-60,20); Vector3 dir = SWWMUtility.Vec3FromAngles(ang,pt); @@ -534,6 +534,7 @@ Class mkFlyingGib : Actor CopyBloodColor(master); } rollvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); + pitchvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); scale *= FRandom[Gibs](.5,1.5); if ( master && master.bloodcolor ) shadecol = Color(master.bloodcolor.r/2,master.bloodcolor.g/2,master.bloodcolor.b/2); else shadecol = Color(80,0,0); @@ -562,9 +563,11 @@ Class mkFlyingGib : Actor return; } roll += rollvel; + pitch += pitchvel; if ( waterlevel > 0 ) { rollvel *= .99; + pitchvel *= .99; return; } if ( !bleeding ) return; @@ -602,6 +605,7 @@ Class mkFlyingGib : Actor vel = dir*spd; } rollvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); + pitchvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); if ( lastbleed > level.maptime ) return; lastbleed = level.maptime+5; TraceBleedAngle(int(vel.length()),angle+180,-pitch); @@ -632,10 +636,10 @@ Class mkFlyingGib : Actor States { Spawn: - FGIB # 1; + XZW1 # 1; Wait; Bounce: - FGIB # 0 + XZW1 # 0 { A_Bleed(); A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP); @@ -645,10 +649,10 @@ Class mkFlyingGib : Actor } Goto Spawn; Death: - FGIB # 1 A_JumpIf(pos.z<=floorz,"Death2"); + XZW1 # 1 A_JumpIf(pos.z<=floorz,"Death2"); Wait; Death2: - FGIB # -1 + XZW1 # -1 { A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP); pitch = Random[Gibs](-5,5);