Page 8 of 30

Re: Hocus Doom

PostPosted: Sun Feb 01, 2015 6:51 pm
by ravage
twinkieman93 wrote:Save your whoohoos, something got broken. :V In the latest devbuild of GZDoom(I just downloaded it, so it's the latest, I'm sure), I get this error.
Code: Select allExpand view
Script error, "hocus_beta05212014.pk3:d_particle.txt" line 75:
'user_angle' is already defined in 'MagicPoofSmall' or one of its
ancestors.

And the game goes kaput. :(

You're running an older version. I already fixed that. Try this: https://dl.dropboxusercontent.com/u/186 ... -01-15.pk3

Re: Hocus Doom

PostPosted: Sun Feb 01, 2015 9:38 pm
by Yholl
Been playing through this and having an absolute blast, this is a stellar example of what a TC can be. Amazing work!

Noticed a visual glitch with enemies; beyond 1024 units, they no longer animate. Fixing it should be as simple as an A_Jump(256, "NormalSee") at the end of each of the monster's NormalSee states, as with inheritance, they're actually going back to the base inherited HocusMonsterbase's frames beyond 1024 units. Hard to spot because of wildcard #### frames being awesome, but yeah.

Re: Hocus Doom

PostPosted: Mon Feb 02, 2015 11:16 am
by ravage
Added that fix. Thanks!

Re: Hocus Doom

PostPosted: Thu Feb 19, 2015 1:44 am
by ravage
Image Image

Progress!

Re: Hocus Doom

PostPosted: Thu Feb 19, 2015 7:29 pm
by Ozymandias81
ravage wrote:Image Image

Progress!

WOW, it's just Hocusastic! :lol:

PS: I've found this inside resources thread... Image

Re: Hocus Doom

PostPosted: Fri Feb 20, 2015 9:57 am
by Thorir
Script error, "hocusdoom-02-01-15 (1).pk3:decorate" line 1350:
"NEVERTARGET" is an unknown flag

Now what? :/

Re: Hocus Doom

PostPosted: Fri Feb 20, 2015 10:04 am
by Tormentor667
Do you have the latest SVN version of GZDoom?

Re: Hocus Doom

PostPosted: Fri Feb 20, 2015 10:27 am
by Gez
Thorir wrote:Script error, "hocusdoom-02-01-15 (1).pk3:decorate" line 1350:
"NEVERTARGET" is an unknown flag

Now what? :/

Now you go here: http://devbuilds.drdteam.org/gzdoom/

Re: Hocus Doom

PostPosted: Fri Feb 20, 2015 11:02 am
by Thorir
Thank you lads!

Re: Hocus Doom

PostPosted: Mon Apr 06, 2015 11:04 am
by ravage
Happy Easter! Its time again to pick myself up from my self-imposed slump and get some more work done! Most of the maps for the first episode are finished, save for some small details and more playtesting. The biggest hurdle right now before a 'shareware' release is the high scores table. I don't have any idea how to implement that just yet, but I would really like to. I'd also like some feedback on how the levels play too.

Current playable demo for 04-06-2015
Mp3 versions of music

changelog for - 04-06-2015

  • changed icy water in the Ice levels damage from 5 to 1
  • finished map08
  • finished map09
  • added several new models & decorations for maps 13 & 14
  • finally fixed the scrolling secret gem platform in map04 (after forgetting to fix it several updates in a row)
  • nerfed the ambush to the crystal above the bridge in map06. It was too annoying.
  • made Egg Dragons shoot only one egg instead of 1-3, since they're severely powerful
  • also made the fire shots from eggs affected by gravity.

Re: Hocus Doom

PostPosted: Mon Apr 06, 2015 11:47 am
by Gez
The way I could see the high score table working in ZDoom is with custom CVARs, defined in CVARINFO. Each entry in the high score table would have two CVARs, an int CVAR for the score and a string CVAR for the name. So for a high-score table with ten entries, that's twenty CVARs to juggle with.

Re: Hocus Doom

PostPosted: Mon Apr 06, 2015 1:13 pm
by ravage
Gez wrote:The way I could see the high score table working in ZDoom is with custom CVARs, defined in CVARINFO. Each entry in the high score table would have two CVARs, an int CVAR for the score and a string CVAR for the name. So for a high-score table with ten entries, that's twenty CVARs to juggle with.

I figured I'd have to use CVARs to store them outside of the wad, but going about how to display them is the issue. I kinda want to see if it'll be possible using MENUDEFS so that you can look at them outside of a running game.

Re: Hocus Doom

PostPosted: Thu Apr 30, 2015 2:03 am
by fluff
ravage wrote:I'd also like some feedback on how the levels play too.


I registered just to let you know that I love what's there so far.
I don't have any critical feedback but what's there is fun and looks nice. A very promising TC.

..cutting that nerco-date close, hope that's okay. :roll:

Re: Hocus Doom

PostPosted: Thu Apr 30, 2015 8:15 pm
by AFADoomer
I have high scores in my Wolf3D TC... Essentially what is described above - values saved in a custom cvars, then rendered with a set of ACS hudmessages. They only show up in the "no lives left" end of game screen and in the titlemap loop. I streamlined this into a single, sorted cvar string for my Blake Stone TC. There are separate functions to check the current score against the scores saved, re-sort the score into the list, and write the cvar, then another set to read the cvar, split the string into an array, and parse as hudmessages. Probably more convoluted than you want, but it works:

ACS:
Code: Select allExpand view
str      highscores[11][4];

Script "W_DoHighScores" (void)
{
   If (PlayerCount() == 1)
   {
      SetMusic("LEVELA");

      PopulateHighScores();
      DrawHighScores();
   }
}

Function int CheckHighScore (void)
{
   PopulateHighScores();

   int CurrentScore = GetActorProperty(0, APROP_Score);
   int intReturn = 0;

   For (int s = 0; s <= 9; s++)
   {
      If (
         (strLen(strParam(d:CurrentScore)) > strLen(highscores[s][2])) ||
         (
            (strLen(strParam(d:CurrentScore)) == strLen(highscores[s][2])) &&
            (strCmp(strParam(d:CurrentScore), highscores[s][2]) > 0))
         )
         intReturn += 1;
   }

   return intReturn;
}

Function void SwapScores (int index1, int index2)
{
   str TempName;
   str TempLevel;
   str TempScore;
   str TempRatio;

   TempName = highscores[index1][0];
   TempLevel = highscores[index1][1];
   TempScore = highscores[index1][2];
   TempRatio = highscores[index1][3];

   highscores[index1][0] = highscores[index2][0];
   highscores[index1][1] = highscores[index2][1];
   highscores[index1][2] = highscores[index2][2];
   highscores[index1][3] = highscores[index2][3];

   highscores[index2][0] = TempName;
   highscores[index2][1] = TempLevel;
   highscores[index2][2] = TempScore;
   highscores[index2][3] = TempRatio;
}

Function void PopulateHighScores (void)
{
   SplitScoreString(GetCVarString("blake_highscore_data"), '|');

   highscores[10][0] = GetCVarString("name");
   highscores[10][1] = StrParam(d:Level);
   highscores[10][2] = StrParam(d:GetActorProperty(0, APROP_Score));
   highscores[10][3] = StrParam(d:GetRatio());
}

Function void SortHighScores (void)
{
   PopulateHighScores();

   int Swapped = true;

   While (Swapped == true)
   {
      Swapped = false;
      For (int s = 1; s <= 10; s++)
      {
         If (
            (strLen(highscores[s][2]) > strLen(highscores[s-1][2])) ||
            (
               (strLen(highscores[s][2]) == strLen(highscores[s-1][2])) &&
               (strCmp(highscores[s][2], highscores[s-1][2]) > 0))
            )
         {
            SwapScores(s, s-1);
            Swapped = true;
         }
      }
   }
}

Function void WriteHighScores (void)
{
   SetCVarString("blake_highscore_data", JoinScoreString('|'));
}

Function void DrawHighScores (void)
{
   SetHudSize (320, 200, 1);

   int NameX = 45.1;
   int LevelX = 167.4;
   int ScoreX = 234.2;
   int RatioX = 271.2;
   int LineY = 68.1;
   int LineHeight = 8.0;

   SetFont("MENUBACK");
   HudMessage(s:"A";0,46,0,160.0,100.0,0);

   SetFont("BIGFONT");
   HudMessage (s:"HIGH SCORES"; HUDMSG_COLORSTRING, 45, "BSMenuMediumGreen", 160.0, 33.1, 0);

   SetFont("TINYFONT");
   HudMessage (s:"NAME"; HUDMSG_COLORSTRING, 44, "BSMenuMediumGreen", 96.0, 65.2, 0);
   HudMessage (s:"MISSION"; HUDMSG_COLORSTRING, 43, "BSMenuMediumGreen", 168.0, 65.2, 0);
   HudMessage (s:"SCORE"; HUDMSG_COLORSTRING, 42, "BSMenuMediumGreen", 218.0, 65.2, 0);
   HudMessage (s:"MISSION\n  RATIO"; HUDMSG_COLORSTRING, 41, "BSMenuMediumGreen", 265.0, 65.2, 0);

   For (int s = 0; s <= 9; s++)
   {
      int ThisLineY = LineY + (LineHeight * s);
      HudMessage (s:highscores[s][0]; HUDMSG_COLORSTRING, 1 + (s * 4), "BSMenuBrightGreen", NameX, ThisLineY, 0);
      HudMessage (s:highscores[s][1]; HUDMSG_COLORSTRING, 2 + (s * 4), "BSMenuBrightGreen", LevelX, ThisLineY, 0);
      HudMessage (s:highscores[s][2]; HUDMSG_COLORSTRING, 3 + (s * 4), "BSMenuBrightGreen", ScoreX, ThisLineY, 0);
      HudMessage (s:highscores[s][3]; HUDMSG_COLORSTRING, 4 + (s * 4), "BSMenuBrightGreen", RatioX, ThisLineY, 0);
   }
}

global str 50:SplitData[];

Function void SplitScoreString (str InputData, str separator)
{
   StrCpy(a:SplitData, InputData);

   int CurrentLetter = 0;
   int CurrentLength = 0;
   int Index = 0;

   For (int t = 0; t <= StrLen(InputData); t++)
   {
      If (SplitData[t] == separator || t == StrLen(InputData))
      {
         highscores[Index / 4][Index % 4] = strMid(InputData, CurrentLetter, CurrentLength);
         Index++;
         CurrentLength = 0;
         CurrentLetter = t + 1;
      }
      Else
         CurrentLength++;
   }
}

Function str JoinScoreString (str separator)
{
   str Data = "";

   For (int s = 0; s <= 9; s++)
      Data = StrParam(s:Data, s:highscores[s][0], c:separator, s:highscores[s][1], c:separator, s:highscores[s][2], c:separator, s:highscores[s][3], c:separator);

   Return Data;
}


CVarInfo:
Code: Select allExpand view
user string blake_highscore_data = "JAM PRODUCTIONS INC.|1|10000|0||1|10000|0|JERRY JONES|1|10000|0|MICHAEL MAYNARD|1|10000|0|JAMES T. ROW|1|10000|0||1|10000|0||1|10000|0|TO REGISTER CALL|1|10000|0|1-800-GAME123|1|10000|0||1|10000|0";


Result:
Image

Re: Hocus Doom

PostPosted: Thu Apr 30, 2015 8:29 pm
by stavros_sk
Just played this mod and I'm loving it so far.
The graphics are spectacular and overall the game is very fun to play.
Keep up the great work!