Page 1 of 2

Hexen's DECORATE!

Posted: Wed Nov 15, 2006 11:06 pm
by Logan MTM
I was looking for that weapon 3 of the Cleric on ZDoom wiki and i doesn't found!
I've tryed in zdoom.pk3 file and nothing!
Somebody can tell me where can i find that script?

Thanks!

Posted: Thu Nov 16, 2006 1:28 am
by Grubber
Nowhere. Look inside the source code.

Posted: Thu Nov 16, 2006 3:51 pm
by DoomRater
What he wants is the codepointer that will allow him to fire this cleric weapon. The names ofthose codepointers will come in handy to me later on, should I decide to convert a certain 63a weapons mod...

Posted: Fri Nov 17, 2006 1:59 pm
by Anakin S.
Is this code pointer even included in decorate? Or you could just fire the CFlameMissile or whatever it's called with A_FireMissile.

Posted: Fri Nov 17, 2006 2:42 pm
by DoomRater
Oooh, that too, assuming all that's needed is to fire a projectile. That would simplify things radically.

Posted: Fri Nov 17, 2006 3:06 pm
by HotWax
Nearly all the weapons in Doom games fire one of two things -- Hitscan or projectiles. Even "melee" attacks are just short-range hitscan.

I'm pretty sure this is a case of just firing multiple projectiles.

Posted: Fri Nov 17, 2006 3:55 pm
by DoomRater
A projectile that behaves so differently from other projectiles that I assumed it was handled by a seperate codepointer. Apparently Logan thought so too.

Posted: Fri Nov 17, 2006 5:04 pm
by randi
This is the code for the player:

Code: Select all

void A_CHolyAttack (AActor *actor)
{
	player_t *player;

	if (NULL == (player = actor->player))
	{
		return;
	}
	ACWeapWraithverge *weapon = static_cast<ACWeapWraithverge> (actor->player->ReadyWeapon);
	if (weapon != NULL)
	{
		if (!weapon->DepleteAmmo (weapon->bAltFire))
			return;
	}
	AActor * missile = P_SpawnPlayerMissile (actor, RUNTIME_CLASS(AHolyMissile));
	if (missile != NULL) missile->tracer = linetarget;

	weapon->CHolyCount = 3;
	S_Sound (actor, CHAN_WEAPON, "HolySymbolFire", 1, ATTN_NORM);
}
And this is the code for a monster:

Code: Select all

void A_CHolyAttack3 (AActor *actor)
{
	AActor * missile = P_SpawnMissileZ (actor, actor->z + 40*FRACUNIT, actor->target, RUNTIME_CLASS(AHolyMissile));
	if (missile != NULL) missile->tracer = NULL;	// No initial target
	S_Sound (actor, CHAN_WEAPON, "HolySymbolFire", 1, ATTN_NORM);
}

Posted: Fri Nov 17, 2006 5:07 pm
by DoomRater
Oh, by weapon three I think he meant the Cleric Hands, not the asembled superweapon.

Posted: Fri Nov 17, 2006 5:22 pm
by randi
Oh, right. Here it is, very easy to replicate:

Code: Select all

void A_CFlameAttack (AActor *actor)
{
	player_t *player;

	if (NULL == (player = actor->player))
	{
		return;
	}
	AWeapon *weapon = actor->player->ReadyWeapon;
	if (weapon != NULL)
	{
		if (!weapon->DepleteAmmo (weapon->bAltFire))
			return;
	}
	P_SpawnPlayerMissile (actor, RUNTIME_CLASS(ACFlameMissile));
	S_Sound (actor, CHAN_WEAPON, "ClericFlameFire", 1, ATTN_NORM);
}

Posted: Sat Nov 18, 2006 1:59 am
by Logan MTM
Oh! I'm really happy with you atention Randy and all you too.

But, i mean the DECORATE code. I doesn't be enought clear. =/

Posted: Sat Nov 18, 2006 8:14 am
by Ryan Cordell
If you know ACS and Decorate, that's very easy to read.

Posted: Sat Nov 18, 2006 9:37 am
by Graf Zahl
There isn't much in it: Launch a missile and play a sound. Although, it is not possible to do it 100% accurate because you wouldn't be able to do the sound precisely like it's in the original.

Posted: Sat Nov 18, 2006 2:39 pm
by DoomRater
Okay, for those who don't know what to look for: the codepointer for the weapon would be A_CFlameAttack. I doubt you can call that in this version of DECORATE, so instead fire the projectile (corrected, see below) CFLameMissile or perhaps a missile that inherits from it?

Posted: Sat Nov 18, 2006 4:23 pm
by Ryan Cordell
Rater, it's just CFlameMissile, as the class itself. I'm guessing the A there would denote the ACTOR segment for that.