diff --git a/language.version b/language.version index be6234ec9..75d3ce4f1 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r784 \cu(Sat 23 Jan 12:45:15 CET 2021)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r785 \cu(Sat 23 Jan 18:21:10 CET 2021)"; diff --git a/modeldef.eviscerator b/modeldef.eviscerator index 63228d63f..7e6b859fb 100644 --- a/modeldef.eviscerator +++ b/modeldef.eviscerator @@ -55,7 +55,7 @@ Model "EvisceratorChunk" Model 0 "Chunky_d.3d" Skin 0 "Chunky.png" - Scale 0.02 0.02 0.02 + Scale 0.01 0.01 0.01 USEACTORPITCH USEACTORROLL @@ -67,7 +67,7 @@ Model "EvisceratorChunk" FrameIndex XZW1 F 0 5 FrameIndex XZW1 G 0 6 FrameIndex XZW1 H 0 7 - ZOffset 0.2 + ZOffset 0.1 FrameIndex XZW2 A 0 0 FrameIndex XZW2 B 0 1 FrameIndex XZW2 C 0 2 diff --git a/zscript/swwm_danmaku.zsc b/zscript/swwm_danmaku.zsc index 66e99c9ad..cd9916bfd 100644 --- a/zscript/swwm_danmaku.zsc +++ b/zscript/swwm_danmaku.zsc @@ -149,7 +149,7 @@ Class EvisceratorChunk : Actor Radius 2; Height 2; Speed 50; - DamageFunction int(clamp((vel.length()-5)*.2+max(0,1.-lifetime)*2.,0,15)); + DamageFunction int(clamp((vel.length()-8)*.2+max(0,1.-lifetime)*2.,0,15)); DamageType 'shot'; BounceFactor 1.0; WallBounceFactor 1.0; @@ -291,14 +291,14 @@ Class EvisceratorChunk : Actor let l = Spawn("ChunkImpact",pos); l.angle = atan2(HitNormal.y,HitNormal.x); l.pitch = asin(-HitNormal.z); - A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.5); } A_Gravity(); gravity = .35; anglevel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); pitchvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); rollvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); - A_StartSound("eviscerator/hit",CHAN_WEAPON,CHANF_OVERLAP,.4); + A_StartSound("eviscerator/hit",CHAN_WEAPON,CHANF_OVERLAP,.3); if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:300); if ( vel.length() < 3 ) { @@ -343,19 +343,19 @@ Class EvisceratorChunk : Actor // + random chance relative to health int posthealth = victim.health-amt; double hratio = posthealth/double(victim.GetSpawnHealth()); - if ( (posthealth <= 0) || (FRandom[Eviscerator](hratio,1.) < .5) ) + if ( (posthealth <= 0) || (FRandom[Eviscerator](hratio,1.) < .7) ) { if ( !victim.bNOBLOOD && !victim.bDORMANT && !victim.bINVULNERABLE ) { victim.SpawnBlood(pos,AngleTo(victim),dmg); - A_StartSound("eviscerator/hitf",CHAN_WEAPON,CHANF_OVERLAP,.2); + A_StartSound("eviscerator/hitf",CHAN_WEAPON,CHANF_OVERLAP,.1); } else { let l = Spawn("ChunkImpact",pos); l.angle = angle+180; l.pitch = -pitch; - A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.2); + A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.1); } A_Gravity(); gravity = .35; @@ -366,7 +366,7 @@ Class EvisceratorChunk : Actor if ( !victim.bNOBLOOD && !victim.bDORMANT && !victim.bINVULNERABLE ) { victim.SpawnBlood(pos,AngleTo(victim),dmg); - A_StartSound("eviscerator/hitf",CHAN_WEAPON,CHANF_OVERLAP,.2); + A_StartSound("eviscerator/hitf",CHAN_WEAPON,CHANF_OVERLAP,.1); ExplodeMissile(null,victim); } else @@ -486,7 +486,7 @@ Class EvisceratorProj : Actor [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); EvisceratorChunk p; Vector3 spawnofs; - if ( BlockingMobj ) spawnofs = level.Vec3Diff(pos,BlockingMobj.Vec3Offset(0,0,BlockingMobj.height/2)).unit()*4; + if ( BlockingMobj ) spawnofs = (0,0,0); else if ( BlockingFloor ) spawnofs = BlockingFloor.floorplane.Normal*4; else if ( BlockingCeiling ) spawnofs = BlockingCeiling.ceilingplane.Normal*4; else if ( BlockingLine ) @@ -497,7 +497,7 @@ Class EvisceratorProj : Actor } int trail = 0; if ( target && target.player ) trail = CVar.GetCVar('swwm_funtrails',target.player).GetInt(); - for ( int i=0; i<30; i++ ) + for ( int i=0; i<40; i++ ) { p = EvisceratorChunk(Spawn("EvisceratorChunk",level.Vec3Offset(pos,spawnofs))); p.bHITOWNER = true; @@ -797,7 +797,7 @@ Class Eviscerator : SWWMWeapon [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4*y-5*z); int trail = CVar.GetCVar('swwm_funtrails',player).GetInt(); - for ( int i=0; i<30; i++ ) + for ( int i=0; i<40; i++ ) { a = FRandom[Eviscerator](0,360); s = FRandom[Eviscerator](0,invoker.extended?.06:.3);