diff --git a/gldefs.pickups b/gldefs.pickups index a29859ea7..05f90c39a 100644 --- a/gldefs.pickups +++ b/gldefs.pickups @@ -175,8 +175,8 @@ Object Ragekit FlickerLight2 LAMPLIGHT { Color 0.6 1.0 0.7 - Size 240 - SecondarySize 248 + Size 350 + SecondarySize 358 Interval 0.1 Offset 0 8 0 Attenuate 1 diff --git a/language.version b/language.version index 39d9edd8c..3ded5a2fc 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \cwGZ\c- r486 (Sun 16 Aug 17:39:19 CEST 2020)"; +SWWM_MODVER="\chSWWM \cwGZ\c- r487 (Mon 17 Aug 00:03:30 CEST 2020)"; diff --git a/shaders/glsl/ZoomBlur.fp b/shaders/glsl/ZoomBlur.fp index d022c09f8..5a85303f8 100644 --- a/shaders/glsl/ZoomBlur.fp +++ b/shaders/glsl/ZoomBlur.fp @@ -6,7 +6,7 @@ void main() float w = 1.; vec2 s = TexCoord; float sum = 0.; - for ( int i=0; i<16; i++ ) + for ( int i=0; i<32; i++ ) { res += w*texture(InputTexture,s); sum += w; diff --git a/zscript/swwm_blazeit.zsc b/zscript/swwm_blazeit.zsc index 9e1e420b6..f45ff8c29 100644 --- a/zscript/swwm_blazeit.zsc +++ b/zscript/swwm_blazeit.zsc @@ -1052,7 +1052,7 @@ Class HellblazerRavagerArm : Actor l.target = p; } if ( !(ReactionTime%1) ) - SWWMHandler.DoExplosion(self,4+reactiontime*4,1000+200*reactiontime,250-6*reactiontime); + SWWMHandler.DoExplosion(self,4+reactiontime*2,1000+200*reactiontime,250-6*reactiontime); double spd = vel.length(); vel = (vel*.4+(FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2))).unit()*spd; Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); diff --git a/zscript/swwm_common.zsc b/zscript/swwm_common.zsc index 3996ff456..4eec4fd43 100644 --- a/zscript/swwm_common.zsc +++ b/zscript/swwm_common.zsc @@ -1302,7 +1302,7 @@ Class SWWMItemSense : Thinker { if ( s.item != item ) continue; s.updated = level.maptime+35; - s.pos = item.Vec3Offset(0,0,16); + s.pos = item.Vec3Offset(0,0,item.height); return s; } let i = new("SWWMItemSense"); @@ -1311,7 +1311,7 @@ Class SWWMItemSense : Thinker i.parent = parent; i.updated = level.maptime+35; i.UpdateTag(); - i.pos = item.Vec3Offset(0,0,16); + i.pos = item.Vec3Offset(0,0,item.height); i.next = parent.itemsense; if ( parent.itemsense ) parent.itemsense.prev = i; parent.itemsense = i; @@ -1322,7 +1322,15 @@ Class SWWMItemSense : Thinker void UpdateTag() { if ( !item ) return; - tag = item.GetTag(); + // certain ammo types use the pickup message as it's amount-aware + if ( (item is 'RedShell') || (item is 'GreenShell') + || (item is 'WhiteShell') || (item is 'BlueShell') + || (item is 'BlackShell') || (item is 'PurpleShell') + || (item is 'GoldShell') || (item is 'EvisceratorShell') + || (item is 'HellblazerMissiles')|| (item is 'HellblazerCrackshots') + || (item is 'HellblazerRavagers')|| (item is 'HellblazerWarheads') ) + tag = item.PickupMessage(); + else tag = item.GetTag(); } override void OnDestroy() @@ -3081,6 +3089,12 @@ Class SWWMHandler : EventHandler if ( (p.type != INT_Key) || !p.trackedkey ) continue; p.keytag = p.trackedkey.GetTag(); } + for ( int i=0; i maxlen[0] ) maxlen[0] = len[0]; str = String.Format("S %d/%d",stats.lstats[i].scount,stats.lstats[i].stotal); - len[1] = fnt.StringWidth(str); + len[1] = fnt2.StringWidth(str); if ( len[1] > maxlen[1] ) maxlen[1] = len[1]; str = String.Format("I %d/%d",stats.lstats[i].icount,stats.lstats[i].itotal); - len[2] = fnt.StringWidth(str); + len[2] = fnt2.StringWidth(str); if ( len[2] > maxlen[2] ) maxlen[2] = len[2]; str = String.Format("K %d/%d",stats.lstats[i].kcount,stats.lstats[i].ktotal); - len[3] = fnt.StringWidth(str); + len[3] = fnt2.StringWidth(str); if ( len[3] > maxlen[3] ) maxlen[3] = len[3]; } for ( int i=ofs; i= 370 ) break; str = stats.lstats[i].hub?stats.lstats[i].levelname:String.Format("%s - %s",stats.lstats[i].mapname.MakeUpper(),stats.lstats[i].levelname); - Screen.DrawText(fnt,Font.CR_FIRE,origin.x+xx,origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + bool smallname = fnt.StringWidth(str)>(620-(xx+maxlen[3]+maxlen[2]+maxlen[1]+maxlen[0]+24)); + if ( smallname ) yy += 2; + Screen.DrawText(smallname?fnt2:fnt,Font.CR_FIRE,origin.x+xx,origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( !smallname ) yy += 2; int ox = ((cnt>22)?623:631); int sec = Thinker.Tics2Seconds(stats.lstats[i].time); str = String.Format("%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(fnt,Font.CR_WHITE,origin.x+ox-fnt.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(fnt,Font.CR_FIRE,origin.x+ox-maxlen[0],origin.y+yy,"T",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - ox -= maxlen[0]+16; + Screen.DrawText(fnt2,Font.CR_WHITE,origin.x+ox-fnt2.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(fnt2,Font.CR_FIRE,origin.x+ox-maxlen[0],origin.y+yy,"T",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + ox -= maxlen[0]+8; str = String.Format("%d\cu/\c-%d",stats.lstats[i].scount,stats.lstats[i].stotal); - Screen.DrawText(fnt,Font.CR_WHITE,origin.x+ox-fnt.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(fnt,Font.CR_FIRE,origin.x+ox-maxlen[1],origin.y+yy,"S",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - ox -= maxlen[1]+16; + Screen.DrawText(fnt2,Font.CR_WHITE,origin.x+ox-fnt2.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(fnt2,Font.CR_FIRE,origin.x+ox-maxlen[1],origin.y+yy,"S",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + ox -= maxlen[1]+8; str = String.Format("%d\cu/\c-%d",stats.lstats[i].icount,stats.lstats[i].itotal); - Screen.DrawText(fnt,Font.CR_WHITE,origin.x+ox-fnt.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(fnt,Font.CR_FIRE,origin.x+ox-maxlen[2],origin.y+yy,"I",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - ox -= maxlen[2]+16; + Screen.DrawText(fnt2,Font.CR_WHITE,origin.x+ox-fnt2.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(fnt2,Font.CR_FIRE,origin.x+ox-maxlen[2],origin.y+yy,"I",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + ox -= maxlen[2]+8; str = String.Format("%d\cu/\c-%d",stats.lstats[i].kcount,stats.lstats[i].ktotal); - Screen.DrawText(fnt,Font.CR_WHITE,origin.x+ox-fnt.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(fnt,Font.CR_FIRE,origin.x+ox-maxlen[3],origin.y+yy,"K",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += 16; + Screen.DrawText(fnt2,Font.CR_WHITE,origin.x+ox-fnt2.StringWidth(str),origin.y+yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(fnt2,Font.CR_FIRE,origin.x+ox-maxlen[3],origin.y+yy,"K",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += 14; } // scrollbar if ( cnt > 22 ) diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index bcaf66b28..30ac654ad 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -652,7 +652,7 @@ Class Demolitionist : PlayerPawn A_QuakeEx(4,4,4,10,0,128,"",QF_RELATIVE|QF_SCALEDOWN); A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); a.A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); - bumptic = gametic+int(5+spd/4.); + bumptic = gametic+int(20+spd/4.); if ( (diff.z < a.height) && (lastvelz >= -25) && (a.bDONTTHRUST || (a.Mass >= Mass*1.5)) ) { if ( bumped ) continue;