Code: Select all
enum WEAPON_EFFECT
{
WE_ANTI_PERSONNEL,
WE_ANTI_TANK,
WE_BUNKER_BUSTER,
WE_ARTILLERY_ROUND,
WE_FLAMER,
WE_ANTI_AIRCRAFT,
WE_NUMEFFECTS, /** The number of enumerators in this enum. */
};
Code: Select all
enum WEAPON_EFFECT
{
WE_ANTI_PERSONNEL,
WE_ANTI_TANK,
WE_BUNKER_BUSTER,
WE_ARTILLERY_ROUND,
WE_FLAMER,
WE_ANTI_AIRCRAFT,
WE_NUMEFFECTS, /** The number of enumerators in this enum. */
};
"ALL ROUNDER" is apparently a synonym for "WE_ANTI_AIRCRAFT", judging from src/stats.cpp:alfred007 wrote: ↑23 Feb 2019, 22:45 Because I'm no programmer this question might be stupid but I ask it anyway. In statsdef.h we have the following code for the string weaponEffect:
Shouldn't the weaponEffect ALL ROUNDER be also called there?Code: Select all
enum WEAPON_EFFECT { WE_ANTI_PERSONNEL, WE_ANTI_TANK, WE_BUNKER_BUSTER, WE_ARTILLERY_ROUND, WE_FLAMER, WE_ANTI_AIRCRAFT, WE_NUMEFFECTS, /** The number of enumerators in this enum. */ };
Code: Select all
const StringToEnum<WEAPON_EFFECT> mapUnsorted_WEAPON_EFFECT[] =
{
{"ANTI PERSONNEL", WE_ANTI_PERSONNEL },
{"ANTI TANK", WE_ANTI_TANK },
{"BUNKER BUSTER", WE_BUNKER_BUSTER },
{"ARTILLERY ROUND", WE_ARTILLERY_ROUND },
{"FLAMER", WE_FLAMER },
{"ANTI AIRCRAFT", WE_ANTI_AIRCRAFT },
{"ALL ROUNDER", WE_ANTI_AIRCRAFT }, // Alternative name for WE_ANTI_AIRCRAFT.
};
const StringToEnumMap<WEAPON_EFFECT> map_WEAPON_EFFECT = mapUnsorted_WEAPON_EFFECT;
bool getWeaponEffect(const WzString& weaponEffect, WEAPON_EFFECT *effect)
{
if (strcmp(weaponEffect.toUtf8().c_str(), "ANTI PERSONNEL") == 0)
{
*effect = WE_ANTI_PERSONNEL;
}
else if (strcmp(weaponEffect.toUtf8().c_str(), "ANTI TANK") == 0)
{
*effect = WE_ANTI_TANK;
}
else if (strcmp(weaponEffect.toUtf8().c_str(), "BUNKER BUSTER") == 0)
{
*effect = WE_BUNKER_BUSTER;
}
else if (strcmp(weaponEffect.toUtf8().c_str(), "ARTILLERY ROUND") == 0)
{
*effect = WE_ARTILLERY_ROUND;
}
else if (strcmp(weaponEffect.toUtf8().c_str(), "FLAMER") == 0)
{
*effect = WE_FLAMER;
}
else if (strcmp(weaponEffect.toUtf8().c_str(), "ANTI AIRCRAFT") == 0 || strcmp(weaponEffect.toUtf8().c_str(), "ALL ROUNDER") == 0)
{
*effect = WE_ANTI_AIRCRAFT;
}
else
{
ASSERT(!"Invalid weapon effect", "Invalid weapon effect: %s", weaponEffect.toUtf8().c_str());
return false;
}
return true;
}
Yeah, pretty much. I remember that something suspicious would happen if both are specified at the moment (anti-aircraft overrides all-rounder in that case and would likely confuse a mod maker). One day we should be able to load a file with as many modifiers as we want.
This would break the plot and I don't think that this would be implemented. Even with the current changes some players are complaining that we are too far away from the original as you can see here for example.Turin86 wrote: ↑24 Feb 2019, 22:59 I think to make the game even more challenging. The player could start with Scav bodies and structures, and have to find more as the campaign progresses. You could have the first few artifacts unlock things like the scav rocket pits and other things. And not unlock the Viper body until later in the campaign (perhaps the first away mission)
Aaaah, I remember the problems we had when we implemented the ALL ROUNDER weaponEffect in the campaign modifier.Berserk Cyborg wrote:Yeah, pretty much. I remember that something suspicious would happen if both are specified at the moment (anti-aircraft overrides all-rounder in that case and would likely confuse a mod maker). One day we should be able to load a file with as many modifiers as we want.Forgon wrote:"ALL ROUNDER" is apparently a synonym for "WE_ANTI_AIRCRAFT", judging from src/stats.cpp:
Code: Select all
enum WEAPON_EFFECT
{
WE_ANTI_PERSONNEL,
WE_ANTI_TANK,
WE_BUNKER_BUSTER,
WE_ARTILLERY_ROUND,
WE_FLAMER,
WE_ANTI_AIRCRAFT,
WE_ALL_ROUNDER,
WE_NUMEFFECTS, /** The number of enumerators in this enum. */
};
Code: Select all
const StringToEnum<WEAPON_EFFECT> mapUnsorted_WEAPON_EFFECT[] =
{
{"ANTI PERSONNEL", WE_ANTI_PERSONNEL },
{"ANTI TANK", WE_ANTI_TANK },
{"BUNKER BUSTER", WE_BUNKER_BUSTER },
{"ARTILLERY ROUND", WE_ARTILLERY_ROUND },
{"FLAMER", WE_FLAMER },
{"ANTI AIRCRAFT", WE_ANTI_AIRCRAFT },
{"ALL ROUNDER", WE_ALL_ROUNDER },
};
Almost. I made a pull-request months ago about that same thing. But it's not really needed, and, IIRC, fully fixing this affected multiplayer cyborg-cannon and needle and maybe other cannons.
The "challenge" aspect can mostly be achieved by fixing the balance plus any future AI improvements. The Alpha intro video already shows the Project having the Viper body so that wouldn't be officially feasible. Though, an immediate Alpha prequel could do that.Turin86 wrote: I think to make the game even more challenging. The player could start with Scav bodies and structures, and have to find more as the campaign progresses. You could have the first few artifacts unlock things like the scav rocket pits and other things. And not unlock the Viper body until later in the campaign (perhaps the first away mission)
Alpha Prequel would be almost at the devastation part right?Berserk Cyborg wrote: ↑27 Feb 2019, 00:16 The "challenge" aspect can mostly be achieved by fixing the balance plus any future AI improvements. The Alpha intro video already shows the Project having the Viper body so that wouldn't be officially feasible. Though, an immediate Alpha prequel could do that.
Why?
Since the goal is to move from Trac to GitHub, perhaps this is an example of a change that would be best made as a Pull Request on GitHub, instead of being pushed directly to the master branch.Forgon wrote: ↑02 Mar 2019, 20:11 I finally pushed ticket #4850, which turns the campaign weapons
Angel Missile and Archangel Missile into guided weapons which behave like their
equivalent weapons in skirmish and multiplayer games.
Hopefully, the change can be taken into account by the new campaign balance.
If not, I will obviously revert my commit.
You get the Angel Missile late in Gamma 07 and Archangel Missile during Gamma 09. So there are only two levels (Gamma 08 and 09) that are affected by this change. In Gamma 08 it shouldn't change too much but in Gamma 09 it could possibly be. As I wrote here I think decreasing the base damage of these two missiles by 20-25 % should be enough not to break the balance.
It will end up chasing down a rabbit hole I don't see the need to change it just so its like multi player.