Migrate various thinkers to plain objects.
WIP: Gib models currently in progress. WIP: IK re-rigging of Demolitionist in progress.
This commit is contained in:
parent
65b129b716
commit
a7eda2702a
22 changed files with 192 additions and 257 deletions
|
|
@ -277,79 +277,39 @@ extend Class SWWMHandler
|
|||
if ( e.DamageType == 'Push' )
|
||||
{
|
||||
score += 500;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_SHAMEFUL");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_SHAMEFUL"));
|
||||
}
|
||||
else if ( e.DamageType == 'Buttslam' )
|
||||
{
|
||||
score += 300;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_BUTTSLAM");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_BUTTSLAM"));
|
||||
}
|
||||
else if ( e.DamageType == 'Love' )
|
||||
{
|
||||
score += 600;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xtcolor[ofs] = Font.FindFontColor('BlushPink');
|
||||
scr.xstr[ofs] = StringTable.Localize(((e.Thing is 'WolfensteinSS')||(e.Thing.Species=='WolfensteinSS'))?"$SWWM_LOVED_ALT":"$SWWM_LOVED");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize(((e.Thing is 'WolfensteinSS')||(e.Thing.Species=='WolfensteinSS'))?"$SWWM_LOVED_ALT":"$SWWM_LOVED"),0,Font.FindFontColor('BlushPink'));
|
||||
}
|
||||
else if ( e.Inflictor is 'FroggyChair' )
|
||||
{
|
||||
score += 1440;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xtcolor[ofs] = Font.CR_GREEN;
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_FROGGED");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_FROGGED"),0,Font.CR_GREEN);
|
||||
}
|
||||
Inventory pb;
|
||||
if ( e.Inflictor && (pb = e.Inflictor.FindInventory('ParriedBuff')) )
|
||||
{
|
||||
score += 200;
|
||||
if ( pb.special1&1 ) score += 200;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
if ( pb.special1&1 ) scr.xstr[ofs] = StringTable.Localize("$SWWM_PPARRY");
|
||||
else scr.xstr[ofs] = StringTable.Localize("$SWWM_PARRY");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize((pb.special1&1)?"$SWWM_PPARRY":"$SWWM_PARRY"));
|
||||
}
|
||||
if ( (e.Damage >= e.Thing.GetSpawnHealth()*2) || (((e.Thing.Health <= e.Thing.GetGibHealth()) || (src.bEXTREMEDEATH) || (e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.DamageType == 'Extreme')) && !src.bNOEXTREMEDEATH && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH)) )
|
||||
{
|
||||
score *= 2;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_OVERKILL");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_OVERKILL"));
|
||||
SWWMUtility.AchievementProgressInc("gib",1,src.player);
|
||||
}
|
||||
score = int(score*(1.+.5*min(multilevel[pnum],16)));
|
||||
if ( (multilevel[pnum] > 0) && scr )
|
||||
{
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = (multilevel[pnum]>=16)?int.max:(multilevel[pnum]+1);
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_MULTIKILL");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
}
|
||||
scr.AppendXString(StringTable.Localize("$SWWM_MULTIKILL"),(multilevel[pnum]>=16)?int.max:(multilevel[pnum]+1));
|
||||
spreecount[pnum]++;
|
||||
if ( s && (spreecount[pnum] > s.skill) && !tookdamage[pnum] )
|
||||
s.skill = spreecount[pnum];
|
||||
|
|
@ -360,21 +320,12 @@ extend Class SWWMHandler
|
|||
if ( spreecount[pnum] > 10 ) spreebonus = int(10*((spreecount[pnum]/10.)**.25));
|
||||
score += 100+spreebonus;
|
||||
if ( (spreecount[pnum] > 0) && scr )
|
||||
{
|
||||
scr.xscore[ofs] = spreecount[pnum];
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_SPREEKILL");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
scr.AppendXString(StringTable.Localize("$SWWM_SPREEKILL"),spreecount[pnum]);
|
||||
}
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") )
|
||||
{
|
||||
score += 2000;
|
||||
if ( scr )
|
||||
{
|
||||
scr.xscore[ofs] = 0;
|
||||
scr.xstr[ofs] = StringTable.Localize("$SWWM_BOSSKILL");
|
||||
scr.xcnt = ++ofs;
|
||||
}
|
||||
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_BOSSKILL"));
|
||||
}
|
||||
SWWMCredits.Give(src.player,score);
|
||||
if ( scr ) scr.score = score; // update final score
|
||||
|
|
|
|||
|
|
@ -153,7 +153,13 @@ extend Class SWWMHandler
|
|||
if ( swwm_notrack )
|
||||
{
|
||||
int n = trackers_cnt;
|
||||
while ( trackers ) trackers.Destroy(); // wow that's simple, all in one line
|
||||
while ( trackers )
|
||||
{
|
||||
let next = trackers.next;
|
||||
trackers.Destroy(); // wow that's simple, all in one line
|
||||
trackers = next;
|
||||
}
|
||||
trackers_cnt = 0;
|
||||
Console.Printf("%d trackers removed.",n);
|
||||
}
|
||||
else
|
||||
|
|
@ -717,5 +723,4 @@ extend Class SWWMHandler
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,6 +223,77 @@ extend Class SWWMHandler
|
|||
SWWMUtility.MarkAchievement("wantdie",players[consoleplayer]);
|
||||
}
|
||||
|
||||
private void UpdateHUDObjects()
|
||||
{
|
||||
// score objects
|
||||
SWWMScoreObj so = scorenums;
|
||||
SWWMScoreObj soprev = null, sonext;
|
||||
while ( so )
|
||||
{
|
||||
sonext = so.next;
|
||||
if ( so.Tick() )
|
||||
{
|
||||
if ( soprev ) soprev.next = sonext;
|
||||
else scorenums = sonext;
|
||||
so.Destroy();
|
||||
scorenums_cnt--;
|
||||
}
|
||||
else soprev = so;
|
||||
so = sonext;
|
||||
}
|
||||
so = damnums;
|
||||
soprev = null;
|
||||
while ( so )
|
||||
{
|
||||
sonext = so.next;
|
||||
if ( so.Tick() )
|
||||
{
|
||||
if ( soprev ) soprev.next = sonext;
|
||||
else damnums = sonext;
|
||||
so.Destroy();
|
||||
scorenums_cnt--;
|
||||
}
|
||||
else soprev = so;
|
||||
so = sonext;
|
||||
}
|
||||
// interest markers
|
||||
SWWMInterest ip = intpoints;
|
||||
SWWMInterest ipprev = null, ipnext;
|
||||
while ( ip )
|
||||
{
|
||||
ipnext = ip.next;
|
||||
if ( ip.Tick() )
|
||||
{
|
||||
if ( ipprev ) ipprev.next = ipnext;
|
||||
else intpoints = ipnext;
|
||||
ip.Destroy();
|
||||
intpoints_cnt--;
|
||||
}
|
||||
else ipprev = ip;
|
||||
ip = ipnext;
|
||||
}
|
||||
// combat trackers
|
||||
SWWMCombatTracker trk = trackers;
|
||||
SWWMCombatTracker trkprev = null, trknext;
|
||||
int dbar = swwm_damagetarget;
|
||||
int mxdist = swwm_maxtargetdist;
|
||||
while ( trk )
|
||||
{
|
||||
trknext = trk.next;
|
||||
trk.dbar = dbar;
|
||||
trk.mxdist = mxdist;
|
||||
if ( trk.Tick() )
|
||||
{
|
||||
if ( trkprev ) trkprev.next = trknext;
|
||||
else trackers = trknext;
|
||||
trk.Destroy();
|
||||
trackers_cnt--;
|
||||
}
|
||||
else trkprev = trk;
|
||||
trk = trknext;
|
||||
}
|
||||
}
|
||||
|
||||
// "simple" tracking (used by the minimap)
|
||||
private void SimpleTracking()
|
||||
{
|
||||
|
|
@ -348,9 +419,10 @@ extend Class SWWMHandler
|
|||
}
|
||||
}
|
||||
SWWMSimpleTracker trk = strackers;
|
||||
SWWMSimpleTracker prev = null, next;
|
||||
while ( trk )
|
||||
{
|
||||
SWWMSimpleTracker next = trk.next;
|
||||
next = trk.next;
|
||||
// minimize lifespan of destroyed targets
|
||||
if ( !trk.target ) trk.lastupdate = min(trk.lastupdate,level.maptime);
|
||||
else if ( !trk.expired )
|
||||
|
|
@ -366,12 +438,12 @@ extend Class SWWMHandler
|
|||
// prune expired trackers
|
||||
if ( trk.lastupdate+140 < level.maptime )
|
||||
{
|
||||
if ( !trk.prev ) strackers = trk.next;
|
||||
else trk.prev.next = trk.next;
|
||||
if ( trk.next ) trk.next.prev = trk.prev;
|
||||
if ( !prev ) strackers = trk.next;
|
||||
else prev.next = trk.next;
|
||||
trk.Destroy();
|
||||
strackers_cnt--;
|
||||
}
|
||||
else prev = trk;
|
||||
trk = next;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue