Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Chopkinsca

looking for a certain type of weapon

Recommended Posts

are there any weapon mods that give you a grenade that works like the ones in MOH (only game I can think of)..
let me try to say it differently. I want a grenade type weapon in doom, one that you can throw and have it bounce around a corner, wait, then explode.

thanks for your time that you used up reading this post and will never get back..

Share this post


Link to post

The Flechette from Hexen does something similar. I heard that ZDoom can use it in Doom. If it can, then all you need to do it figure out how to change some of the settings using Dehacked or whatever else.

Share this post


Link to post
Ichor said:

The Flechette from Hexen does something similar. I heard that ZDoom can use it in Doom. If it can, then all you need to do it figure out how to change some of the settings using Dehacked or whatever else.



He he, that's exactly what I've been setting up over the last few days using graphics from immoral conduct. The Hexen Flechette behaves like the fighter version of that item when you use it in a Doom game, so it is ideal as a grenade type weapon. You can't change any of its settings via dehacked though.

Anyway, there are a few things I have discovered that are worth considering if you plan on doing this:

1: Making it appear - It's easy to either spawn a flechette using the "SPawnspot" command, That will make a floatbobbing grenade appear in the level or you can also make a DECORATE pickup item to run a script that gives you a number or Flechettes/Grenades. I have a single grenade pickup and a box of 5. The only problem with DECORATE pickups is that they will always pickup, even if your inventory is full, and you cannot carry anymore Flechettes (The limit is 25).

2: The inventory - To give the item via a script, you need to call it an "ArtiPoisonbag". Once it is in your inventory, you may want to check how many you have (via scripting), or even take them away from the inventory. Once you actually have them, they become class specific, so you need to use the name "ArtiPoisonbag3" instead.

3: Counting them - The Doom menu does not support telling you how many you have, but with a simple script, it is possible to put on screen how many you have using a hudmessage, and have the message disappear again once they are all gone.

4: Changing levels - I have just found out that in Heretic and Hexen, if you go between non-hub levels, any multiple items you have in your inventory get set to 1. So you could leave map01 with 25, and arrive on map02 with 1. Once again, a simple script can get round this (thanks to Randy Heit for telling me how).

5: Using them - The doom menu does not display inventory items. The default key for using inventory items is Enter and will work if you have only picked up flechettes, but if you have been spawning other Heretic or Hexen items into a doom game, the other items may be the ones "readied" in the inventory, and pressing Enter will activate them instead of throwing a Flechette. You can use the square brackets to "blindly" navigate around the inventory until you find them, but fortunately there is a console command of "useflechette". You can bind that to a key, and always be able to use that key to throw a flechette, regardless of any other items you may be carrying, or which of them is "in focus" in the inventory.


If I get things sorted out, I'll maybe throw together a little example WAD of how I'm doing this. The actual mod is not intended for release.


Edit: Of course, you could just use SkullTag which has a grenade launcher built in.

Share this post


Link to post

Nigel: I reccomend finding out what the dehacked-bits-eqiuvalent properties are applied to Hexen's flechettes, then using those bits in a dehacked patch in order to have less "hacked" grenades. With full Hexen support now, there just must be more bits available... or if not, the base exists already for Randy to make them available as dehacked bits.

FYI, anybody, grenade mods in ZDoom have been done so far by applying the FLOORBOUNCE bit, sometimes even the LOGRAV bit for distance's sake. I've been told, though, that lowering the mass value of an object actually matters in ZDoom, and will make a gravity-affected projectile fall faster or slower (depending on which way you adjust it). I don't know if that worked in vanilla or not, but I didn't think it did. Anyway...
Floorbounce, lograv, and mass. I think there might be a wallbounce bit, too.

Dammit, is there a (complete and up to date) list of bits available in ZDoom? (Proper response is "RTFM".)

KTHXBYE

Share this post


Link to post
Ultraviolet said:

Nigel: I reccomend finding out what the dehacked-bits-eqiuvalent properties are applied to Hexen's flechettes, then using those bits in a dehacked patch in order to have less "hacked" grenades. With full Hexen support now, there just must be more bits available... or if not, the base exists already for Randy to make them available as dehacked bits.


Oh, indeed there are. I'ts pretty easy to make a rocket or plasma bullet behave in a grenade-like way, very close to the Hexen Flechettes if need be (basically using the methods you describe). In fact, I think there are 3 different bounce types now implemented, but I can't find my notes on them, so maybe that was just an hallucination.

I was really only answering the first replay that mentioned the Hexen flechettes, and tried to cover what need to be done to get them working. Incidentally, Zdoom 2.0.42 is out, and fixes a couple of bugs that were getting in the way of what I was trying to do with the Flechettes. It all works now. :-)

Share this post


Link to post

I'm not certain if this has what you want or not since its been awhile since I used it but it has a complete new set of weapons as well as a wad that replaces all the creatures. it all looks very futuristic and I'm pretty sure the author created the weapons himself although he might have borrowed some ideas from other games. Again, not sure.
http://www.doomwadstation.suhost.com/main/phoenix.html

give it a shot and see.

Share this post


Link to post

He he, I knew I wasn't hallucinating. I knew I'd seen it somewhere.

Use the source Luke!

// The three types of bounciness are:
// HERETIC - Missile will only bounce off the floor once and then enter
// its death state. It does not bounce off walls at all.
// HEXEN - Missile bounces off of walls and floors indefinitely.
// DOOM - Like Hexen, but the bounce turns off if its vertical velocity
// is too low.

MF2_BOUNCETYPE = MF2_BOUNCE1|MF2_BOUNCE2,
MF2_NOBOUNCE = 0,
MF2_HERETICBOUNCE = MF2_BOUNCE1,
MF2_HEXENBOUNCE = MF2_BOUNCE2,
MF2_DOOMBOUNCE = MF2_BOUNCE1|MF2_BOUNCE2,

Share this post


Link to post

To apply those bits, does one use "MF2_DOOMBOUNCE" or just "DOOMBOUNCE" ? I'm too lazy to search the source, so are there any more usable bits you can tell me about?

Share this post


Link to post

You don't need the MF2_

I haven't tried the new bounce types though. There are 4 types of bits. MF ones you just use like normal bit mnemonics, MF2 ones that reset other MF2 bits, so you need to add them all on to the bits line to restore them. eg, if you give a projectile an MF2 bit, it resets (amongst other things) its noteleport bit, and you end up with rockets that can teleport. There are MF3 bits that are used internally, and cannot be used via dehacked, and there are MF4 bits that I just noticed. Looks like they may be something to do with the thing_hate code.


Copying straight from the source...

MF_SPECIAL  = 0x00000001,  // call P_SpecialThing when touched
  MF_SOLID  = 0x00000002,
  MF_SHOOTABLE  = 0x00000004,
  MF_NOSECTOR  = 0x00000008,  // don't use the sector links
  // (invisible but touchable)
  MF_NOBLOCKMAP  = 0x00000010,  // don't use the blocklinks
  // (inert but displayable)
  MF_AMBUSH  = 0x00000020,  // not activated by sound; deaf monster
  MF_JUSTHIT  = 0x00000040,  // try to attack right back
  MF_JUSTATTACKED = 0x00000080,  // take at least one step before attacking
  MF_SPAWNCEILING = 0x00000100,  // hang from ceiling instead of floor
  MF_NOGRAVITY  = 0x00000200,  // don't apply gravity every tic

// movement flags
  MF_DROPOFF  = 0x00000400,  // allow jumps from high places
  MF_PICKUP  = 0x00000800,  // for players to pick up items
  MF_NOCLIP  = 0x00001000,  // player cheat
  MF_SLIDE  = 0x00002000,  // keep info about sliding along walls
  MF_FLOAT  = 0x00004000,  // allow moves to any height, no gravity
  MF_TELEPORT  = 0x00008000,  // don't cross lines or look at heights
  MF_MISSILE  = 0x00010000,  // don't hit same species, explode on block

  MF_DROPPED  = 0x00020000,  // dropped by a demon, not level spawned
  MF_SHADOW  = 0x00040000,  // actor is hard for monsters to see
  MF_NOBLOOD  = 0x00080000,  // don't bleed when shot (use puff)
  MF_CORPSE  = 0x00100000,  // don't stop moving halfway off a step
  MF_INFLOAT  = 0x00200000,  // floating to a height for a move, don't
  // auto float to target's height
  MF_INBOUNCE  = 0x00200000,  // used by Heretic bouncing missiles 

  MF_COUNTKILL  = 0x00400000,  // count towards intermission kill total
  MF_COUNTITEM  = 0x00800000,  // count towards intermission item total

  MF_SKULLFLY  = 0x01000000,  // skull in flight
  MF_NOTDMATCH  = 0x02000000,  // don't spawn in death match (key cards)

  MF_UNMORPHED  = 0x10000000,  // [RH] Actor is the unmorphed version of something else
  MF_NOLIFTDROP  = 0x20000000,  // [RH] Used with MF_NOGRAVITY to avoid dropping with lifts
  MF_STEALTH  = 0x40000000,  // [RH] Andy Baker's stealth monsters
  MF_ICECORPSE  = 0x80000000,  // a frozen corpse (for blasting) [RH] was 0x800000

// --- mobj.flags2 ---

  MF2_LOGRAV  = 0x00000001,  // alternate gravity setting
  MF2_WINDTHRUST  = 0x00000002,  // gets pushed around by the wind specials
  MF2_BOUNCE1  = 0x00000004,
  MF2_BLASTED  = 0x00000008,  // missile will pass through ghosts
  MF2_FLY  = 0x00000010,  // fly mode is active
  MF2_FLOORCLIP  = 0x00000020,  // if feet are allowed to be clipped
  MF2_SPAWNFLOAT  = 0x00000040,  // spawn random float z
  MF2_NOTELEPORT  = 0x00000080,  // does not teleport
  MF2_RIP  = 0x00000100,  // missile rips through solid targets
  MF2_PUSHABLE  = 0x00000200,  // can be pushed by other moving actors
  MF2_SLIDE  = 0x00000400,  // slides against walls
  MF2_ONMOBJ  = 0x00000800,  // actor is resting on top of another actor
  MF2_PASSMOBJ  = 0x00001000,  // Enable z block checking. If on,
  // this flag will allow the actor to
  // pass over/under other actors.
  MF2_CANNOTPUSH  = 0x00002000,  // cannot push other pushable mobjs
  MF2_THRUGHOST  = 0x00004000,  // missile will pass through ghosts [RH] was 8
  MF2_BOSS  = 0x00008000,  // mobj is a major boss
  MF2_FIREDAMAGE  = 0x00010000,  // does fire damage
  MF2_NODMGTHRUST  = 0x00020000,  // does not thrust target when damaging
  MF2_TELESTOMP  = 0x00040000,  // mobj can stomp another
  MF2_FLOATBOB  = 0x00080000,  // use float bobbing z movement
  MF2_BOUNCE2  = 0x00100000,
  MF2_IMPACT  = 0x00200000,  // an MF_MISSILE mobj can activate SPAC_IMPACT
  MF2_PUSHWALL  = 0x00400000,  // mobj can push walls
  MF2_MCROSS  = 0x00800000,  // can activate monster cross lines
  MF2_PCROSS  = 0x01000000,  // can activate projectile cross lines
  MF2_CANTLEAVEFLOORPIC = 0x02000000,  // stay within a certain floor type
  MF2_NONSHOOTABLE  = 0x04000000,  // mobj is totally non-shootable, 
  // but still considered solid
  MF2_INVULNERABLE  = 0x08000000,  // mobj is invulnerable
  MF2_DORMANT  = 0x10000000,  // thing is dormant
  MF2_ICEDAMAGE  = 0x20000000,  // does ice damage
  MF2_SEEKERMISSILE  = 0x40000000,  // is a seeker (for reflection)
  MF2_REFLECTIVE  = 0x80000000,  // reflects missiles

  // The three types of bounciness are:
  // HERETIC - Missile will only bounce off the floor once and then enter
  //  its death state. It does not bounce off walls at all.
  // HEXEN -  Missile bounces off of walls and floors indefinitely.
  // DOOM -  Like Hexen, but the bounce turns off if its vertical velocity
  //  is too low.

  MF2_BOUNCETYPE  = MF2_BOUNCE1|MF2_BOUNCE2,
  MF2_NOBOUNCE  = 0,
  MF2_HERETICBOUNCE  = MF2_BOUNCE1,
  MF2_HEXENBOUNCE  = MF2_BOUNCE2,
  MF2_DOOMBOUNCE  = MF2_BOUNCE1|MF2_BOUNCE2,

// --- mobj.flags3 ---

  MF3_FLOORHUGGER  = 0x00000001,  // Missile stays on floor
  MF3_CEILINGHUGGER  = 0x00000002,  // Missile stays on ceiling
  MF3_NORADIUSDMG  = 0x00000004,  // Actor does not take radius damage
  MF3_GHOST  = 0x00000008,  // Actor is a ghost
  MF3_ALWAYSPUFF  = 0x00000010,  // Puff always appears, even when hit nothing
  MF3_SPECIALFLOORCLIP= 0x00000020,  // Actor uses floorclip for special effect (e.g. Wraith)
  MF3_DONTSPLASH  = 0x00000040,  // Thing doesn't make a splash
  MF3_NOSIGHTCHECK  = 0x00000080,  // Go after first acceptable target without checking sight
  MF3_DONTOVERLAP  = 0x00000100,  // Don't pass over/under other things with this bit set
  MF3_DONTMORPH  = 0x00000200,  // Immune to arti_egg
  MF3_DONTSQUASH  = 0x00000400,  // Death ball can't squash this actor
  MF3_EXPLOCOUNT  = 0x00000800,  // Don't explode until special2 counts to special1
  MF3_FULLVOLACTIVE  = 0x00001000,  // Active sound is played at full volume
  MF3_ISMONSTER  = 0x00002000,  // Actor is a monster
  MF3_SKYEXPLODE  = 0x00004000,  // Explode missile when hitting sky
  MF3_STAYMORPHED  = 0x00008000,  // Monster cannot unmorph
  MF3_DONTBLAST  = 0x00010000,  // Actor cannot be pushed by blasting
  MF3_CANBLAST  = 0x00020000,  // Actor is not a monster but can be blasted
  MF3_NOTARGET  = 0x00040000,  // This actor not targetted when it hurts something else
  MF3_DONTGIB  = 0x00080000,  // Don't gib this corpse
  MF3_NOBLOCKMONST  = 0x00100000,  // Can cross ML_BLOCKMONSTERS lines
  MF3_CRASHED  = 0x00200000,  // Actor entered its crash state
  MF3_FULLVOLDEATH  = 0x00400000,  // DeathSound is played full volume (for missiles)
  MF3_CANBOUNCEWATER  = 0x00800000,  // Missile can bounce on water
  MF3_NOWALLBOUNCESND = 0x01000000,  // Don't make noise when bouncing off a wall
  MF3_FOILINVUL  = 0x02000000,  // Actor can hurt MF2_INVULNERABLE things
  MF3_NOTELEOTHER  = 0x04000000,  // Monster is unaffected by teleport other artifact
  MF3_BLOODLESSIMPACT  = 0x08000000,  // Projectile does not leave blood
  MF3_NOEXPLODEFLOOR  = 0x10000000,  // Missile stops at floor instead of exploding
  MF3_WARNBOT  = 0x20000000,  // Missile warns bot
  MF3_PUFFONACTORS  = 0x40000000,  // Puff appears even when hit actors
  MF3_HUNTPLAYERS  = 0x80000000,  // Used with TIDtoHate, means to hate players too

// --- mobj.flags4 ---

  MF4_NOHATEPLAYERS  = 0x00000001,  // Ignore player attacks
  MF4_QUICKTORETALIATE= 0x00000002,  // Always switch targets when hurt

Share this post


Link to post

MF2_SLIDE = 0x00000400, // slides against walls

I don't quite think I understand the effect of this.

MF2_THRUGHOST = 0x00004000, // missile will pass through ghosts [RH] was 8
MF2_BLASTED = 0x00000008, // missile will pass through ghosts

And the difference is... ?

MF2_ONMOBJ = 0x00000800, // actor is resting on top of another actor

Ah hah, that one could come in handy for multi-segmented bosses, such as are seen in RPG games... considering Doom's damage calculation system, this would be very appropriate.

MF2_THRUGHOST = 0x00004000, // missile will pass through ghosts [RH] was 8

So... we can un-set this and have special anti-ghost weapons? Heh. I bet Ghostbusters Doom would have loved this.

MF2_BOSS = 0x00008000, // mobj is a major boss

What is this used for, giving the monster priority in the game or something?

MF2_TELESTOMP = 0x00040000, // mobj can stomp another

Is this supposed to be for telefragging or something? If it *can't* "stomp another," does it just not teleport?

MF2_CANTLEAVEFLOORPIC = 0x02000000, // stay within a certain floor type

Wuh... how?

MF2_DORMANT = 0x10000000, // thing is dormant

Does this just mean that the object starts dormant and can be re-activated via ACS, or is the bit permanent? If it is permanent, then... I just can't see any creative reason for this existing.

MF2_SEEKERMISSILE = 0x40000000, // is a seeker (for reflection)

OK, it sounded like a way to do revenant-like missiles, but what's with that "for reflection" part?

MF2_DOOMBOUNCE = MF2_BOUNCE1|MF2_BOUNCE2,

So... this is like a compound-bit or something? I see BOUNCE1 defined in the list, but I don't see BOUNCE2 anywhere...

Share this post


Link to post

MF2_SLIDE - Usually seen in Hexen when something is frozen. Before it shatters, push it up to a wall and keep pushing. It will start sliding off in one direction.

MF2_THRUGHOST, MF2_BLASTED - I don't know what the difference is either.

MF2_BOSS - This is used in Heretic and Hexen to make certain artifacts ineffective, make their alert and death sounds heard throughout the entire map at full volume (in Hexen the action sounds are incuded, making it slightly annoying at times), and certain weapons react differently to it (Bloodscourge explodes when hitting a boss instead of cutting through it).

MF2_TELESTOMP - Yes, it's for telefragging. If it's not set then the monster won't teleport if something is in the way.

MF2_CANTLEAVEFLOORPIC - The Stalkers in Hexen used this to prevent them from leaving the area of liquid they were in.

MF2_DORMANT - If you set a certain monster as dormant in a map editor, then this flag is set to the thing. This can be activated with ACS or even a line trigger. Other things besides monsters use this, like certain torches that light up, bats that start flying, etc. If this was set to a monster using Dehacked or source code changes, then I think it would become permanent.

MF2_SEEKERMISSILE - I never knew what 'reflection' meant either, but this one is a bit more complicated than simply adding this bit to make it work. I think you need a code pointer or tinker with the source code.

Share this post


Link to post

That DORMANT bit sounds like a good way to make the characters in the ZStrife mod I'm working on work right...

I would be a bit more actively working on it, but I've been trying to think of a better way than manually recreating all those textures... (so I haven't worked on it in a while)

Share this post


Link to post

MF2_THRUGHOST = 0x00004000, // missile will pass through ghosts [RH] was 8
MF2_BLASTED = 0x00000008, // missile will pass through ghosts

Not sure there is a difference. Thats why Randy's note says "was 8" It looks like he added his own version of Blasted.


we can un-set this and have special anti-ghost weapons

Nope. All weapons affect everything, unless this bit is set. There are no weapons that only affect ghosts (I don't think so anyway).


Dormant

Does this just mean that the object starts dormant and can be re-activated via ACS, or is the bit permanent?

I think that's all it means, yes.


MF2_SEEKERMISSILE

I thought it might be more like the mage super weapon projectiles. Not tried playing with it though.

Share this post


Link to post

Not tried playing with it though.

Sounds like a good use of your seemingly excessive Doom-time then... :P I never get the time to actually do any editing. Just enough time to lurk on the forums, heh.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×