Hocusdoom RELEASED (/idgames pending)

For Total Conversions and projects that don't otherwise fall under the other categories.
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.
User avatar
ravage
Posts: 293
Joined: Wed Sep 03, 2003 9:30 pm
Preferred Pronouns: They/Them

Re: Hocus Doom

Post 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 all

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
User avatar
Yholl
Posts: 1955
Joined: Mon Dec 17, 2012 11:08 am
Location: Here, stupid.

Re: Hocus Doom

Post 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.
User avatar
ravage
Posts: 293
Joined: Wed Sep 03, 2003 9:30 pm
Preferred Pronouns: They/Them

Re: Hocus Doom

Post by ravage »

Added that fix. Thanks!
User avatar
ravage
Posts: 293
Joined: Wed Sep 03, 2003 9:30 pm
Preferred Pronouns: They/Them

Re: Hocus Doom

Post by ravage »

Image Image

Progress!
User avatar
Ozymandias81
Posts: 2067
Joined: Thu Jul 04, 2013 8:01 am
Graphics Processor: nVidia with Vulkan support
Location: Mount Olympus, Mars

Re: Hocus Doom

Post by Ozymandias81 »

ravage wrote:Image Image

Progress!
WOW, it's just Hocusastic! :lol:

PS: I've found this inside resources thread... Image
User avatar
Thorir
Posts: 21
Joined: Thu Jan 03, 2013 4:16 pm
Location: Hungary

Re: Hocus Doom

Post by Thorir »

Script error, "hocusdoom-02-01-15 (1).pk3:decorate" line 1350:
"NEVERTARGET" is an unknown flag

Now what? :/
User avatar
Tormentor667
Posts: 13549
Joined: Wed Jul 16, 2003 3:52 am

Re: Hocus Doom

Post by Tormentor667 »

Do you have the latest SVN version of GZDoom?
Gez
 
 
Posts: 17934
Joined: Fri Jul 06, 2007 3:22 pm

Re: Hocus Doom

Post 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/
User avatar
Thorir
Posts: 21
Joined: Thu Jan 03, 2013 4:16 pm
Location: Hungary

Re: Hocus Doom

Post by Thorir »

Thank you lads!
User avatar
ravage
Posts: 293
Joined: Wed Sep 03, 2003 9:30 pm
Preferred Pronouns: They/Them

Re: Hocus Doom

Post 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.
Gez
 
 
Posts: 17934
Joined: Fri Jul 06, 2007 3:22 pm

Re: Hocus Doom

Post by Gez »

The way I could see the high score table working in ZDoom is with custom CVARs, defined in [wiki]CVARINFO[/wiki]. 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.
User avatar
ravage
Posts: 293
Joined: Wed Sep 03, 2003 9:30 pm
Preferred Pronouns: They/Them

Re: Hocus Doom

Post by ravage »

Gez wrote:The way I could see the high score table working in ZDoom is with custom CVARs, defined in [wiki]CVARINFO[/wiki]. 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.
User avatar
fluff
Posts: 40
Joined: Thu Apr 30, 2015 1:56 am

Re: Hocus Doom

Post 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:
User avatar
AFADoomer
Posts: 1337
Joined: Tue Jul 15, 2003 4:18 pm

Re: Hocus Doom

Post 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 all

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 all

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
stavros_sk
Posts: 1
Joined: Thu Apr 30, 2015 8:00 pm

Re: Hocus Doom

Post 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!

Return to “TCs, Full Games, and Other Projects”