( search forums )
Improved Weapons Modding
Soldat Forums - Soldat Talk - Game Improvements / Suggestions
Deleted User
March 30, 2006, 1:39 am
When I first tried the weapons modding system, I was overjoyed. I could finally screw around with everything and change the way all of the guns work without much effort. As it is now, one can be quite creative with it, but I believe that it's lacking significantly. I understand that it was introduced primarily just to tweak the weapon balance and allow people to have their own "true weapons balance," but it has so much more unexplored potential.

Anyways, first of all, the bugs, such as the spas' unwillingness to change bulletstyles and the annoyingly unchangeable state of some weapons, need to be fixed. Secondly, I suggest that the following features be added:
(features in blue are features that I think are a bit extravagant/unneeded, but could stand to be added if Michal has some free time)

Gun Variables

MustCrouch= (0, 1, determines whether or not the player must crouch to fire the weapon)
Auto= (0, 1, determines whether or not the gun will continue to fire if fire button is held down)
DamageWhenThrown= (0, 1, determines whether or not the gun will hurt the player if thrown)
ThrowDamage= (determines the amount of damage done when gun is thrown, ignored if DamageWhenThrown=0)
DoesCharge= (0, 1, determines whether or not the gun has a knife-like charge-up time for throwing)
ChargeTime= (if DoesCharge=1, determines how long the charge time is)
ThrowDistance= (determines the distance the gun travels when thrown, 0 for disappearing (see flamer))
ReloadType= (determines how the gun reloads, 0 for default, 1 for spas-like, and 2 for no reload)
Recoil= (determines the recoil type, 0 for none, 1 for speed-determined, (minigun) and 2 for a constant recoil)
ConstantRecoil= (if Recoil=2, determines the amount the recoil pushes you back)

Bullet Variables
These would override regular bulletstyles and give the player freedom to create their own styles. All variables here, if not filled in, will revert to the default behavior specified by the bulletstyle chosen.

Bullets= (determines how many bullets are fired with each shot)
Explodes= (0, 1, determines whether or not the bullet explodes on contact)
ExplosionRadius= (determines how big the size of the explosion is, the explosion graphics are resized accordingly)
ExplosionHurts= (0, 1, determines whether or not the explosion hurts the player or just pushes them away)
ExplosionPower= (determines how far the explosion pushes the player)
InvertedExplosion= (0, 1, determines whether or not the explosion sucks you in instead of pushing you away)
ExplosionBounce= (if filled in, determines the amount of ricochets allowed before the bullet explodes, 0 for until it collides with something)
Collides= (0, 1, determines whether or not the bullet stops when colliding with a player/collider (still does damage, but doesn't stop))
WallCollides= (0, 1, determines whether or not the bullet collides with walls)
Ricochet= (0, 1, determines whether or not the bullet ricochets)
RicochetNumber= (determines how many ricochets are allowed before the bullet is stopped, 0 for infinite)
RicochetAngle= (determines the maximum angle for the bullet to ricochet)
RicochetLoss= (determines how much speed is lost with each ricochet)
Gravity= (determines the effect of gravity on the bullet without changing the speed, negatives for negative gravity)
Distance= (determines distance the bullet travels before disappearing, 0 for infinite)
ConstantSpeed= (if filled in, determines a constant speed for a bullet that doesn't change with distance, negates the initial speed)
Homing= (if filled in, determines whether or not the bullet homes in on the nearest target, and the accuracy of the home)
DamageConstant= (if filled in, determines a primary damage regardless of speed)
Surrounds= (0, 1, determines whether or not the bullet surrounds the shooter)
SurroundRange= (if Surrounds=1, determines how far away the bullet surrounds them)
Repels= (0, 1, determines whether or not the bullet repels other bullets)
Reversed= (0, 1, determines whether or not the bullet fires in reverse)
Appears= (determines how far away the bullet is spawned from the player)

Powerup Variables
I suppose these shouldn't be here, as I'm talking about the weapons.ini, but it's in the same category, (modding the gameplay) so I'll list them here. They aren't necessarily needed, so they're in blue, but it would be nice to play around with.

Duration= (determines how long the powerup lasts, 0 for infinite)
PlayerEffect= N, M, S (determines the effect on the player, N for health, M for speed, S for special (IE: 100, 100, 2 would heal the player and give them a predator bonus))
WeaponEffect= (determines the effect of the powerup by listing any of the variables above as well as the default variables and edits them on top of the current weapon)
IsNewWeapon= (0, 1, determines whether or not the powerup gives you a new weapon based on the WeaponEffect (flame god))
Spawned= (determines how often the powerup is spawned)


If utilized correctly, these additions would allow the player to create weapons ranging from black hole cannons, to land mines, to force fields, to kamikaze bombs, to pointless confetti launchers. They would also allow for people to finally create that "special weapon" without suggesting it and having it shot down for being too unrealistic. In addition, they would allow for those who would (me) to spend hours crafting ridiculous, but fun weapon types, and give weapons mods more respect as more creative people utilize the system. I think this would add a whole new dimension to Soldat.

And don't bring up the argument that people would abuse it. People will abuse whatever is added to the weapons modding system, there's nothing that can be done. The benefit is greater than the downfall here.

Soap
March 30, 2006, 10:20 am
I support this.

papasurf31
March 30, 2006, 11:30 am
I think a few of those are pretty useless. Explosion bounce? pshh.

BTW - you forgot:
Zoom= (determines if weapon has scope function (like barret). 0 for none, Integer value determines distance of zoom)

livingdalife
March 30, 2006, 3:55 pm
the zoom would be good for ruger and some autos, nad some of those (like bullet style freedom) are a good idea. Lets see wat Michal can do hey>

Deleted User
March 30, 2006, 4:19 pm
i like this. keep it goin:D

a-4-year-old
March 30, 2006, 8:25 pm
some of the unblue ideas should be blue, like throws and Ricochet.

i support most ideas!

Deleted User
March 30, 2006, 8:33 pm
 Quote:Originally posted by papasurf31I think a few of those are pretty useless. Explosion bounce? pshh.

BTW - you forgot:
Zoom= (determines if weapon has scope function (like barret). 0 for none, Integer value determines distance of zoom)

For the most part, I just threw in anything I thought of that was remotely useful. The ExplosionBounce was part of a sort of exploding reflecto-laser I had going at the time.

And I knew I forgot something.


4yo, without throws you wouldn't be able to punch someone's barrett away and club them in the head with it! Soldat's just worthless without that.

Deleted User
March 30, 2006, 9:40 pm
i totally support this, and if this was implemented, i would actually play soldat again

a-4-year-old
March 30, 2006, 10:43 pm
 Quote:Originally posted by Muffin Quote:Originally posted by papasurf31I think a few of those are pretty useless. Explosion bounce? pshh.

BTW - you forgot:
Zoom= (determines if weapon has scope function (like barret). 0 for none, Integer value determines distance of zoom)

For the most part, I just threw in anything I thought of that was remotely useful. The ExplosionBounce was part of a sort of exploding reflecto-laser I had going at the time.

And I knew I forgot something.


4yo, without throws you wouldn't be able to punch someone's barrett away and club them in the head with it! Soldat's just worthless without that.


so funny, but if soldat is useless, why did i catch you playing it :O
i just think it should have been in the "blue" catagory.

HYPERFUNKBOT
March 31, 2006, 3:14 am
 Quote:Originally posted by MuffinWhen I first tried the weapons modding system, I was overjoyed. I could finally screw around with everything and change the way

all of the guns work without much effort. As it is now, one can be quite creative with it, but I believe that it's lacking significantly. I understand that it was

introduced primarily just to tweak the weapon balance and allow people to have their own "true weapons balance," but it has so much more unexplored potential.

Anyways, first of all, the bugs, such as the spas' unwillingness to change bulletstyles and the annoyingly unchangeable state of some weapons, need to be fixed. Secondly, I

suggest that the following features be added:
(features in blue are features that I think are a bit extravagant/unneeded, but could stand to be added if Michal has some free time)

Gun Variables

MustCrouch= (0, 1, determines whether or not the player must crouch to fire the weapon)
Auto= (0, 1, determines whether or not the gun will continue to fire if fire button is held down)
DamageWhenThrown= (0, 1, determines whether or not the gun will hurt the player if thrown)
ThrowDamage= (determines the amount of damage done when gun is thrown, ignored if DamageWhenThrown=0)
DoesCharge= (0, 1, determines whether or not the gun has a knife-like charge-up time for throwing)
ChargeTime= (if DoesCharge=1, determines how long the charge time is)
ThrowDistance= (determines the distance the gun travels when thrown, 0 for disappearing (see flamer))
ReloadType= (determines how the gun reloads, 0 for default, 1 for spas-like, and 2 for no reload)
Recoil= (determines the recoil type, 0 for none, 1 for speed-determined, (minigun) and 2 for a constant recoil)
ConstantRecoil= (if Recoil=2, determines the amount the recoil pushes you back)

Bullet Variables
These would override regular bulletstyles and give the player freedom to create their own styles. All variables here, if not filled in, will revert to the default behavior

specified by the bulletstyle chosen.

Bullets= (determines how many bullets are fired with each shot)
Explodes= (0, 1, determines whether or not the bullet explodes on contact)
ExplosionRadius= (determines how big the size of the explosion is, the explosion graphics are resized accordingly)
ExplosionHurts= (0, 1, determines whether or not the explosion hurts the player or just pushes them away)
ExplosionPower= (determines how far the explosion pushes the player)
InvertedExplosion= (0, 1, determines whether or not the explosion sucks you in instead of pushing you away)
ExplosionBounce= (if filled in, determines the amount of ricochets allowed before the bullet explodes, 0 for until it collides with something)
Collides= (0, 1, determines whether or not the bullet stops when colliding with a player/collider (still does damage, but doesn't stop))
WallCollides= (0, 1, determines whether or not the bullet collides with walls)
Ricochet= (0, 1, determines whether or not the bullet ricochets)
RicochetNumber= (determines how many ricochets are allowed before the bullet is stopped, 0 for infinite)
RicochetAngle= (determines the maximum angle for the bullet to ricochet)
RicochetLoss= (determines how much speed is lost with each ricochet)
Gravity= (determines the effect of gravity on the bullet without changing the speed, negatives for negative gravity)
Distance= (determines distance the bullet travels before disappearing, 0 for infinite)
ConstantSpeed= (if filled in, determines a constant speed for a bullet that doesn't change with distance, negates the initial speed)
Homing= (if filled in, determines whether or not the bullet homes in on the nearest target, and the accuracy of the home)
DamageConstant= (if filled in, determines a primary damage regardless of speed)
Surrounds= (0, 1, determines whether or not the bullet surrounds the shooter)
SurroundRange= (if Surrounds=1, determines how far away the bullet surrounds them)
Repels= (0, 1, determines whether or not the bullet repels other bullets)
Reversed= (0, 1, determines whether or not the bullet fires in reverse)
Appears= (determines how far away the bullet is spawned from the player)

Powerup Variables
I suppose these shouldn't be here, as I'm talking about the weapons.ini, but it's in the same category, (modding the gameplay) so I'll list them here. They aren't

necessarily needed, so they're in blue, but it would be nice to play around with.

Duration= (determines how long the powerup lasts, 0 for infinite)
PlayerEffect= N, M, S (determines the effect on the player, N for health, M for speed, S for special (IE: 100, 100, 2 would heal the player and give them a predator bonus))
WeaponEffect= (determines the effect of the powerup by listing any of the variables above as well as the default variables and edits them on top of the current weapon)
IsNewWeapon= (0, 1, determines whether or not the powerup gives you a new weapon based on the WeaponEffect (flame god))
Spawned= (determines how often the powerup is spawned)


If utilized correctly, these additions would allow the player to create weapons ranging from black hole cannons, to land mines, to force fields, to kamikaze bombs, to

pointless confetti launchers. They would also allow for people to finally create that "special weapon" without suggesting it and having it shot down for being too

unrealistic. In addition, they would allow for those who would (me) to spend hours crafting ridiculous, but fun weapon types, and give weapons mods more respect as more

creative people utilize the system. I think this would add a whole new dimension to Soldat.

And don't bring up the argument that people would abuse it. People will abuse whatever is added to the weapons modding system, there's nothing that can be done. The benefit

is greater than the downfall here.


Better solution:

object oriented type improved thing:
// comments like so
Class Spas-12 extends Weapon {
GFX=spas12.bmp,spas12-2.bmp; // self explanatory
Projectile=SpasPellet;
ProjectilesPerShot=7; // not sure if this is correct, so this is a guess as to how many projectiles the spas shoots.
Spread=1.0; // how far individual projectiles are spread from each other.
EjectedShellGFX=spas12-shell;
ShellsPerShot=1;
FireInterval=34; // same as old
Ammo=7; // same as old
ReloadTime=175; // same
StartUpTime=0; // same
Bink=0; // same
MovementAcc=1; // same
MustCrouch=False; // true or false
MustProne=False; // true or false, true is like LAW
ThrownProjectile=NONE; // use KnifeProjectile or something for knife
ThrowStartUpTime=0; // same as "DoesCharge" and "ChargeTime" in first post, zero is same as no "ChargeTime"
ReloadType=PerBullet; // can be PerBullet (spas), None (never reloads), or Default.
RecoilType=Constant; // this only works for realistic mode. can be SpeedDetermined, Constant, or None.
RecoilAmount=1.0; // this is just an arbitrary example number, I don't know how much spas would have. Also, this applies to speeddetermined as a multiplier.
Scope=False; // Barret-type zoom capability.
Automatic=False; // false means semi-auto
}

Class SpasPellet extends Projectile {
GFX=spas12-bullet.bmp;
Damage=122; // same
SpeedAffectsDamage=True; // if false damage is constant
Speed=137; // same
MomentumMultiplier=1.0; // How much momentum does the bullet transfer. negative means you get pulled towards firer.
ExplosionGFX=;
ExplosionRadius=0; // radius of explosion in pixels
ExplosionDamge=0; // damage at center of explosion;
ExplosionMomentum=1; // arbitrary example number, amount of momentum the explosion has. negative means it sucks you in.
SubMunition=; // another projectile to be spawned from the explosion. Can be used for MIRV type things or something.
PlayerCollisionStops=True; // does this bullet stop on player collision
PolyCollisionStops=True; // does this bullet stop on poly collision
CollCollisionStops=True; // does colliders like crates and stuff block projectiles
RichochetNumber=-1; // same as above, except 0 means no ricochet, negative means possibly infinite.
RichochetMaxAngle=1; // example number. same as above.
RichochetSpeedMult=0.5; // how much to multiply speed by on a bounce
GravityMult=1.0; // how much gravity affects this. can be negative.
MaxDistance=0; // 0 for infinite
ExplosionTimer=-1; // for grenades and stuff. negative means infinite. 0 means instant (kamikaze).
BulletFrictionMult=1.0; // 0 means constant speed
RateOfHoming=0; // 0 is no homing
Surrounds=0; // how far bullet surrounds shooter (whatever that means). 0 is no surrounding.
RepelBullets=False; // if true repels other bullets (whatever that means)
BulletOffset=0; // how far backwards/forwards the bullet appears from the default appearing place.
Burns=False; // creates fire upon impact with player
Bloody=True; // if false creates smoke when hitting a player like when hitting a wall
}

DmenX3
April 1, 2006, 8:19 pm
Agh! The coding! It BURNS!!!

HYPERFUNKBOT
April 2, 2006, 5:09 pm
It's better than the way it is now.

jettlarue
April 4, 2006, 4:28 am
i dont think scripting is really neccesary for just weapons. maybe if trigger and some other stuff was possible but otherwise it would make more bugs than a parser dont you think? :) good idea though but i hope you understand why i said that

HYPERFUNKBOT
April 6, 2006, 9:36 pm
What Scripting?

Deleted User
April 6, 2006, 11:06 pm
*gasp!* WOW, i love this and 100% support it...in fact i dont just think it would be cool in soldat...i think this should be put in the next version.
nice!
nice!!
nice!!!

Deleted User
April 7, 2006, 11:17 am
Its a nice idea and I think every modder would support it, but it would be a lot of work for Michal, so don't keep your hopes up :/ we've pestered him about it before and we got no results.

shoover
April 8, 2006, 3:43 am
i dont like the recoil one, we dont need it. we already use it in realistic, what makes u think a wm modded server would best fit with it?

HYPERFUNKBOT
April 8, 2006, 2:47 pm
recoil affects Realistic mode's recoil. Right now there is no way to change the recoil from realistic mode.

UltraMagnus
April 8, 2006, 5:21 pm
hmm, scripting weapons would be kinda cool, but i have tried modding games like lierox that use that sorta thing, it takees ageees, and then you get compiler errors.....

it would be a fun option, perhaps if there were different levels of modding weapons.

noobie level: basically how it is now
advanced: alot more options
full scripting: basically programming weapons...

HYPERFUNKBOT
April 8, 2006, 11:17 pm
wtf?
WHAT SCRIPTING?!?!?!?! how did scripting even COME UP? Nobody asked for any scripting.

numgun
April 9, 2006, 1:43 am
 Quote:Originally posted by MuffinExplosionRadius= (determines how big the size of the explosion is, the explosion graphics are resized accordingly)


explosion radius = 99999999999
NUKES! HURRAH!

HYPERFUNKBOT
April 9, 2006, 4:23 am
yes, precisely :)

Da cHeeSeMaN
April 9, 2006, 10:02 am
yes i want the old drop down from the skies law blasting! Then i would make the perfect v1.1.4 mod and host a server xD