Some suggestions?
Moderator: Graf Zahl
- Eriance
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
- Contact:
Some suggestions?
I finally gota GZdoom to work without causing my desktop icons to vanaish upon quitting. There are a few interesting functions I've seen in GZdoom not present in Zdoom 96x, so I might switch my project to over to GZdoom once I figure out how the stuff works.
I do have a few suggestions though, not sure if they've been mentioned yet. most of these are in Hexen and heretic in other doom ports, so maybe they should not be too hard to add?
-------------
Properties:
-------------
BounceAmount, value (# of bounces before death): Edge has this ability to dicated how many times a projectil bounces before it goes boom.
Lifetime, value (in tics): This is also in EDGE. The A_Countdown is relatively useful, but compaired to EDGE's "fuse" parameter, it's not as good. This would allow monsters or any actors to have a certain lifetime after spawn. Would make a lot of things easier.
DeathSummon, string (name of actor): This allows a projectile to summone a unit upon killing another unit. Such as a possession spell or a spell to raise a skeleton after killing an anctor. Would be useful or certain hellish weapons. The summoned actor should be summoned after the death sequence of the target is finished. Also, it should be summoned even if there are already another actor in the area. Just like how Doom2 summons monsters into each other and gets them stuck together. A Simple temporary A_NoBlocking on the summoned actor should keep the monsters from being stuck for too long.
LeechAmount, value (percent of leeched damage = 0.00-1.00): This tells gives a portion of the damage done by that projectile to the actor that fired it as health. Kinda like Hexen's melee serpent staff or the Reaver's melee attack.
DmgReduce, value (#of damage taken off): Kinda like armor, but permentant. Damage down to an actor with this property will be reduced by the percent of the DmdReduce value.
Weapon.AmmoRegenRate, value (in tics, time between ammo regeneration)
Distort(just another renderstyle): This rengerstyle distorts the BG behind the actor. This is present in StarCraft's non-friendly cloaked units. The brighter colors distorts more than the darker colors. Be cool to have another style that gives cloacked monsters more sci-fi-ness.
-------
Flags:
-------
ABSOLUTESPEED: This is like the powered up phoenix rod's flames and the Mace balls from heretic. They have a realistic speed function. Instead of always traveling at the designated speed, their speed is the designated + the speed of the actor when any fire missile command is executed. This allows for the more realistic flame throwers and and other stream type attacks.
COLDRESIST: Self explanatory
HEAL: Damage done by this actor is reversed and goes into the health of the target.
AMMOREGEN1: Regenerates ammo type1 for the weapon with this flag. Uses the Weapon.AmmoPerShot, and the weapon.AmmoRegenRate properties. Ammo is replenished at the ammo per shot amount at a rate dictated by weapon.AmmoRegenRate.
AMMOREGEN2: Same as above be regenerates the second ammo type.
------------------
Action Pointers:
------------------
A_Rain ("string" (actor name), radius, rain time (in tics)): Acts like the powered up hellstaff from Heretic. Drops the designated actor randomly within the designated area.
A_Leep (X-offset(Amount moved forwards(+)/backwards(-) per tic), Z-offset(amount moved up(+_/down(-) per tic), time (in tics, amount of time before this function is canceled))
A_SummonDrone ("string" (actor name), offset, pitch, direction(0,1,2)): Like the Heresiarch's cubes, the spawned actor maintains a distance (the offset) from the calling actor's center while orbiting. The pitch dictates the angle at which the orbit is tilted. The direction of 1 (clockwise) or 2 (counter-clockwise) dictates in which direction the actor orbits; 0 causes the actor not to orbit at all, instead, it justs stays at a certain distance from the calling actor.
A_KillDrone: Killes all drones spawned by the calling actor.
------------------------
New Powerup types:
------------------------
BlastSuit: Makes the actor with this powerup immune to splash damage. Basicaly just sets the +NoRadiusDmg flag for a certain amount of time.
Reflection: Reflects all projectiles without taking damage but takes damage from falling, damaging floors and hit-scan attacks.
Slow: Causes all other actors except the actor with this powerup to have their speed cut in half. Maybe it makes them fire twice as slow and have their projectile speed cut too?
Ghost: Makes the actor almost completely transparent and makes it unshootable for a given period of time. Actor still takes damage from floors and stuff.
LowGrav: Gives low grav to the actor with this powerup.
Regeneration: Adds 1 hp per every 7 tics for a period of time.
Nightmare: Actor with this powerup cannot be shot until it shoots or is injured. It will also remain invisable until it attacks. basically stealth + a small tweak.
-------------------------------------------------------------------------------------
These are just some ideas i had and is working on personally with the new Gzdoom source code. But since I'm new at programing (still learning C++ from a book I bought), I thought maybe other experts at programing would do it much faster and better. They are by no means demands.
I do have a few suggestions though, not sure if they've been mentioned yet. most of these are in Hexen and heretic in other doom ports, so maybe they should not be too hard to add?
-------------
Properties:
-------------
BounceAmount, value (# of bounces before death): Edge has this ability to dicated how many times a projectil bounces before it goes boom.
Lifetime, value (in tics): This is also in EDGE. The A_Countdown is relatively useful, but compaired to EDGE's "fuse" parameter, it's not as good. This would allow monsters or any actors to have a certain lifetime after spawn. Would make a lot of things easier.
DeathSummon, string (name of actor): This allows a projectile to summone a unit upon killing another unit. Such as a possession spell or a spell to raise a skeleton after killing an anctor. Would be useful or certain hellish weapons. The summoned actor should be summoned after the death sequence of the target is finished. Also, it should be summoned even if there are already another actor in the area. Just like how Doom2 summons monsters into each other and gets them stuck together. A Simple temporary A_NoBlocking on the summoned actor should keep the monsters from being stuck for too long.
LeechAmount, value (percent of leeched damage = 0.00-1.00): This tells gives a portion of the damage done by that projectile to the actor that fired it as health. Kinda like Hexen's melee serpent staff or the Reaver's melee attack.
DmgReduce, value (#of damage taken off): Kinda like armor, but permentant. Damage down to an actor with this property will be reduced by the percent of the DmdReduce value.
Weapon.AmmoRegenRate, value (in tics, time between ammo regeneration)
Distort(just another renderstyle): This rengerstyle distorts the BG behind the actor. This is present in StarCraft's non-friendly cloaked units. The brighter colors distorts more than the darker colors. Be cool to have another style that gives cloacked monsters more sci-fi-ness.
-------
Flags:
-------
ABSOLUTESPEED: This is like the powered up phoenix rod's flames and the Mace balls from heretic. They have a realistic speed function. Instead of always traveling at the designated speed, their speed is the designated + the speed of the actor when any fire missile command is executed. This allows for the more realistic flame throwers and and other stream type attacks.
COLDRESIST: Self explanatory
HEAL: Damage done by this actor is reversed and goes into the health of the target.
AMMOREGEN1: Regenerates ammo type1 for the weapon with this flag. Uses the Weapon.AmmoPerShot, and the weapon.AmmoRegenRate properties. Ammo is replenished at the ammo per shot amount at a rate dictated by weapon.AmmoRegenRate.
AMMOREGEN2: Same as above be regenerates the second ammo type.
------------------
Action Pointers:
------------------
A_Rain ("string" (actor name), radius, rain time (in tics)): Acts like the powered up hellstaff from Heretic. Drops the designated actor randomly within the designated area.
A_Leep (X-offset(Amount moved forwards(+)/backwards(-) per tic), Z-offset(amount moved up(+_/down(-) per tic), time (in tics, amount of time before this function is canceled))
A_SummonDrone ("string" (actor name), offset, pitch, direction(0,1,2)): Like the Heresiarch's cubes, the spawned actor maintains a distance (the offset) from the calling actor's center while orbiting. The pitch dictates the angle at which the orbit is tilted. The direction of 1 (clockwise) or 2 (counter-clockwise) dictates in which direction the actor orbits; 0 causes the actor not to orbit at all, instead, it justs stays at a certain distance from the calling actor.
A_KillDrone: Killes all drones spawned by the calling actor.
------------------------
New Powerup types:
------------------------
BlastSuit: Makes the actor with this powerup immune to splash damage. Basicaly just sets the +NoRadiusDmg flag for a certain amount of time.
Reflection: Reflects all projectiles without taking damage but takes damage from falling, damaging floors and hit-scan attacks.
Slow: Causes all other actors except the actor with this powerup to have their speed cut in half. Maybe it makes them fire twice as slow and have their projectile speed cut too?
Ghost: Makes the actor almost completely transparent and makes it unshootable for a given period of time. Actor still takes damage from floors and stuff.
LowGrav: Gives low grav to the actor with this powerup.
Regeneration: Adds 1 hp per every 7 tics for a period of time.
Nightmare: Actor with this powerup cannot be shot until it shoots or is injured. It will also remain invisable until it attacks. basically stealth + a small tweak.
-------------------------------------------------------------------------------------
These are just some ideas i had and is working on personally with the new Gzdoom source code. But since I'm new at programing (still learning C++ from a book I bought), I thought maybe other experts at programing would do it much faster and better. They are by no means demands.
- Paul
- DRD Team Admin (Inactive)
- Posts: 1058
- Joined: Thu Jun 30, 2005 13:30
- Location: Poland - Grojec / Radom
- Contact:
I strongly support this. Then just make a medic, who is NOT friendly-he follows you and uses his melee attack at you, like a normal enemy-except that attack is a healHEAL

This could be done with Decorate /methinksAmmo regeneration
Ready:
PIST 4 A 0 A_Jumpifinventory("Pistolammo",50,3)
PIST 4 A 4 A_GiveInventory ("PistolAmmo")
PIST 4 A 4 A_Weaponready
Loop
PIST 4 A 4 A_WeaponReady
Loop
I'm pretty sure most can be either emulated with custom inventory or ACS------------------------
New Powerup types:
------------------------
This is especially easyRegeneration: Adds 1 hp per every 7 tics for a period of time.
Script 555 (void)
{
for (int a, a<50,a++)
{
healthing(1);
delay(7*35);
}
}
This can be done with ACS with spawning projectiles, randomly, from a TID.A_Rain
- Eriance
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
- Contact:
Yeah, A lot of these things can be done with ACS. But it's a hassle to have to include a set of scripts with the wad. Especially for those who are no familiar with programing. These suggestions are so ht it would make it easier to do these effects. I've done the healing before, though there are minor bugs.
- solarsnowfall
- Persecution Complex
- Posts: 363
- Joined: Fri Aug 05, 2005 8:51
I don't understand why there is this prevailing sentiment that including scripts is so difficult. If you want to use decorate actors, you have to include a decorate lump with your map, no? And you most likely had to go to the ZDoom Wiki to learn about the stuff, right? Is it really that much more difficult to include a library in your wad that will contain the scripts, which could be used on any map? I think not.Eriance wrote:Yeah, A lot of these things can be done with ACS. But it's a hassle to have to include a set of scripts with the wad.
- Graf Zahl
- GZDoom Developer
- Posts: 7148
- Joined: Wed Jul 20, 2005 9:48
- Location: Germany
- Contact:
- Eriance
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
- Contact:
True, people can use ACS. However, I would like to answer your question with another question. What is wrong with wanting to make something easier than it is?solarsnowfall wrote:I don't understand why there is this prevailing sentiment that including scripts is so difficult. If you want to use decorate actors, you have to include a decorate lump with your map, no? And you most likely had to go to the ZDoom Wiki to learn about the stuff, right? Is it really that much more difficult to include a library in your wad that will contain the scripts, which could be used on any map? I think not.Eriance wrote:Yeah, A lot of these things can be done with ACS. But it's a hassle to have to include a set of scripts with the wad.
It's obvious that not everyone, infact most mappers don't know how to use ACS to the fullest extand because they are not programmers like you guys. Things that are easy for you are not so for most, especially newbs. It's just as simple as asking a non artist to sprite something. Also Decorate and ACS are VERY differnt things. Decorate is simple and to the point with 1 line having 1 action. It contains no variables. And Although ACS is a lot more powerful, ACS is also confusing with some of it's formatting, espcally to non-programmers. It's so concise that a lot of things don't make much sense.
Also, A lot of these things are not possible by ACS, as I was told be members on Zdoom forums. They might be wrong, but these are simple suggestions. (Like the leeching)
-------------------------------------------------------------------------------------
But on a side note. Looking at the source codes for Zdoom and Gzdoom, they look very similar to ACS scripts. Does this mean I can pretty much use ACS to similate the functions of the source code?
This probably sounds really stupid to you, but I've only recently picked up Zdoom. I managed to learn Decorate in a week, since it's very similar to EDGE's DDF. But ACS is totally confusing, especially with the variables. I'ave only managed to do the most rudimentry of ACS scripting with my maps.
-
- Posts: 58
- Joined: Sun Sep 11, 2005 20:31
- Location: nj
- Contact:
ACS is a lot like C but its not C. ACS is missing a number of capabilities that C has. For example there are no pointers, no structs, no char, no string manipulation, etc... Knowing C/C++ will greatly help you in using ACS. I know a bit of C++ and less C and it has helped me understand ACS. Even if you do not totally understand it, most scripts will only require a minium amount of knowledge in the language anyway. ACS is a lot less annoying then people think it is, I just think that the whole idea of a programming language just scares people. Now the zdoom source code, I have no clue whats going on in there...Eriance wrote:But on a side note. Looking at the source codes for Zdoom and Gzdoom, they look very similar to ACS scripts. Does this mean I can pretty much use ACS to similate the functions of the source code?
This probably sounds really stupid to you, but I've only recently picked up Zdoom. I managed to learn Decorate in a week, since it's very similar to EDGE's DDF. But ACS is totally confusing, especially with the variables. I'ave only managed to do the most rudimentry of ACS scripting with my maps.
- Nash
- Developer
- Posts: 1226
- Joined: Sun Sep 25, 2005 1:49
- Location: Kuala Lumpur, Malaysia
- Contact:
What you should do is, on a free weekend when you have plenty of time; make your favourite food, drinks and snacks, and take the time to sit down and learn ACS.
You won't regret it, trust me. It's VERY easy. I'm not a programmer (like you, I am more on the art side) but I picked it up on the same day I started to sit down and learn it.
It's really a lot easier than you think it is. And remember if you are EVER stuck with anything you don't understand about ACS, just post on the ZDoom forums (or even here, it doesn't matter). People will gladly help you out.
You won't regret it, trust me. It's VERY easy. I'm not a programmer (like you, I am more on the art side) but I picked it up on the same day I started to sit down and learn it.
It's really a lot easier than you think it is. And remember if you are EVER stuck with anything you don't understand about ACS, just post on the ZDoom forums (or even here, it doesn't matter). People will gladly help you out.
- Enjay
- Developer
- Posts: 4748
- Joined: Tue Aug 30, 2005 23:19
- Location: Scotland
- Contact:
Indeed, and a lot of the time a lot of the stuff you will need will have little resemblance to actual programming because all you will be doing is little more than putting a bunch of line actions into a sequence to be executed in turn.
Of course, the more interesting stuff does require more involved scripting (though it is rarely particularly complex). As Nash said, there will always be someone knowledgable willing to help out when you get stuck anyway.
As the Dr Pepper commercials say... "What's the worst that can happen?"
Of course, the more interesting stuff does require more involved scripting (though it is rarely particularly complex). As Nash said, there will always be someone knowledgable willing to help out when you get stuck anyway.
As the Dr Pepper commercials say... "What's the worst that can happen?"

- Eriance
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
- Contact:
Does ACS support multiplayer and DM though? I thought that a script can only work for one person at a time. Or am I wrong. Like the ones with the variables, doesn't a script only keep 1 copy of the variable? So if, say player 1 uses a script, player two wont be able to.Enjay wrote:Indeed, and a lot of the time a lot of the stuff you will need will have little resemblance to actual programming because all you will be doing is little more than putting a bunch of line actions into a sequence to be executed in turn.
Of course, the more interesting stuff does require more involved scripting (though it is rarely particularly complex). As Nash said, there will always be someone knowledgable willing to help out when you get stuck anyway.
As the Dr Pepper commercials say... "What's the worst that can happen?"
From what I learned from War Craft III's mappting scripts, which is bsically C++ made a bit easier, I need something called an 'Array'? that keeps a bunch of the same variable but one for each player. Can you do this with ACS? I read something on DW that arrays were not supported or something. Maybe the guy was just drunk? That Leeching thing would sure help.
- Graf Zahl
- GZDoom Developer
- Posts: 7148
- Joined: Wed Jul 20, 2005 9:48
- Location: Germany
- Contact:
Your informations are many years out of date. All this is possible.Eriance wrote:
Does ACS support multiplayer and DM though? I thought that a script can only work for one person at a time. Or am I wrong. Like the ones with the variables, doesn't a script only keep 1 copy of the variable? So if, say player 1 uses a script, player two wont be able to.
Either he was drunk or he was talking about Hexen. ZDoom does support arrays.From what I learned from War Craft III's mappting scripts, which is bsically C++ made a bit easier, I need something called an 'Array'? that keeps a bunch of the same variable but one for each player. Can you do this with ACS? I read something on DW that arrays were not supported or something. Maybe the guy was just drunk? That Leeching thing would sure help.
Last edited by Graf Zahl on Fri Mar 31, 2006 9:03, edited 1 time in total.
- solarsnowfall
- Persecution Complex
- Posts: 363
- Joined: Fri Aug 05, 2005 8:51
What is it you're trying to do anyway? You can index an array with PlayerNumber() and store variables specific to each player with an ENTER or RESPAWN script.Eriance wrote:Does ACS support multiplayer and DM though? I thought that a script can only work for one person at a time. Or am I wrong. Like the ones with the variables, doesn't a script only keep 1 copy of the variable? So if, say player 1 uses a script, player two wont be able to.
- DoomRater
- Posts: 397
- Joined: Tue Jul 19, 2005 4:14
- Location: Programmer's Room, talking to Will Harvey
- Contact:
- Blade Nightflame
- Posts: 31
- Joined: Sun Dec 04, 2005 22:35
- Eriance
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
- Contact:
Well, the project i'm doing, Demon Eclipse, is basically a large resource wad with all custom monsters and weapons that I made with a few episode of maps that displays them in real gameplay rather than just a big room. I want people to be able to just copy the decorate, the sounds, and the sprites so that can use it. I try to not use ACS other than for the maps because It's not a very good resource if you have to make people drag one of your maps (the one with the scripts of the weapons and poewrups) just to use a few weapons or mosnters.DoomRater wrote:The only time ACS is not acceptable is when making weapon mods. Otherwise you have access to so much power in your map using these tools.
I've asked my friend to add in some functions for me using the Gzdoom source code. I'll see how that works out. Some of these new coding are essential to the project (i.e. the Reflection powerup and regeneration powerup).