Posted: Wed Jun 21, 2017 9:40 pm Post subject:
Completing Catching Up
The next release will be another step forward. I mentioned last time that I'd first include features that are already done and also finish features I was working on previously. This release will contain more of those, and some more new features. I'm planning for a release in September.
Some of those features are older. I'm not too happy with them. They might still feel rough around the edges, and they definitely could need some testing. Some of those might need more work to be more useful, and some might need to be reworked completely, because they aren't well designed or thought out. So watch out. Now is the time for comments.
There's a new unstable binary already, which has been compiled using a newer, experimental version of the VS 2017 C++ compiler. That's also why the binary is a lot bigger: it contains lots of changes. I hope it works out well.
Fixes and Minor Additions
Versus.XXX.ForceFire=no prevents picking up own targets (#970499)
Do not immolate passengers of OpenTopped transports (#1695637)
When mind-controller units cloaked, their victims became mind-controllable again. Fixed.
Fixed Nuke Flash not appearing for non-SW-launched bullets.
Assaulter logic switched assaulter infantry and victims, causing problems with bounty, build limit and more.
Ares might have behaved strangely if factories were cloaked (not really sure)
Tunnel Systems
This is the tunnel systems known from Generals. Tunnels are buildings which allow to quickly move units from one place to another. There can be many entrance buildings, but they all manage the same queue of occupants. Units do not actually move between tunnels; after they entered into an entrance they can be ejected from another entrance immediately.
EnterTransportSound and LeaveTransportSound of the entrance building are played whenever a unit enters or leaves. The entrance building will show pips representing the contents of the tunnel system.
The occupants will be kept alive until the last entrance of the same type owned by the same player are destroyed. The killer of the last entrance will be awarded the kills of the occupants also. If the last entrance is sold, units will try to evacuate.
Tunnel buildings are not allowed to have weapons, turrets and can't be Capturable=yes.
Tunnels are declared under the TunnelTypes section. Then, a BuildingType can be turned into a tunnel entrance:
[Building]Tunnel= (TunnelType)
The type of tunnel system this building is an entrance to.
Tunnel systems have the following options:
[Tunnel]Passengers= (integer)
The number of occupants this tunnel system can have. This does not consider size. Each unit takes up one slot of space. Defaults to 0.
[Tunnel]MaxSize= (double)
The maximum Size= units can have to be allowed into this tunnel. Defaults to 0.0.
Sabotage Spy Effect
[BuildingType]SpyEffect.SabotageDelay= (integer - frames, defaults to 0)
The number of frames after which the building will be demolished as if C4 has been planted. If negative, [CombatDamage]C4Delay is used. Use 0 to disable.
Nuke Flash for warheads Use this responsibly. Overlapping those effects does not work too well.
[Warhead]NukeFlash.Duration= (integer - frames, defaults to 30 for NUKE, to 0 otherwise)
The number of frames the flash fades in and stays fully active before it fades out again.
Customizable Movies List
The new system does not rely on two counters, but unlocks each movie individually. The unlocked state is saved in ra2md.ini's new [UnlockedMovies] section.
In moviemd.ini, add all movie filenames to the [Movies] list. Movies will appear on the in-game list in the same order as in this list. Only if the list is empty does the game default to the original behavior using the hardcoded movie lists and the two counters.
[MovieFilename]Description= (CSF label)
The name this movie will appear under in the list.
[MovieFilename]Unlockable= (boolean, defaults to yes)
Whether this movie has to be unlocked first before appearing in the list. If no, the movie will always appear in the list, like the intro movie.
MAD Tank-like damage delivery
Instead of using some fixed damage value a value relative to the victim's Strength or current health is used. This is not supported on special weapon logics like Temporal or Berzerk, and also doesn't support ProneDamage and DeployedDamage for infantry. Suppressing parasites is also not supported.
I'm not happy with this at all. It feels wrong. This feature only allows to define MAD damage very roughly. Another idea was to use Verses drectly. That is 30% verses against light damages light armor 30%. This has other problems, too. Especially considering there could be dozends of ArmorTypes. So: I'm open for change requests.
[Warhead]RelativeDamage= (boolean, defaults to no)
Deal damage relative to Strength or current health instead of fixed conventional damage. If set to yes, the four tags below are used depending on target type. If a tag is not defined, no damage is dealt.
Note: A dummy Damage is needed, even though it is not applied. If Damage is negative (like for healing weapons), the relative damage will be negative also.
[Warhead]RelativeDamage.Buildings= (integer - percent, defaults to 0)
[Warhead]RelativeDamage.Aircraft= (integer - percent, defaults to 0)
[Warhead]RelativeDamage.Infantry= (integer - percent, defaults to 0)
[Warhead]RelativeDamage.Vehicles= (integer - percent, defaults to 0)
The damage defined as percentage from either Strength, if positive, or current health, if negative. Supported values are -100 to 100.
House armor multipliers and veterancy bonuses are still applied, as well as Verses.
Relative Damage considers Organic=yes vehicles as infantry and ConsideredAircraft=yes vehicles as aircraft. _________________ Last edited by AlexB on Mon Sep 25, 2017 8:55 pm; edited 1 time in total QUICK_EDIT
Posted: Wed Jun 21, 2017 10:18 pm Post subject:
Re: Completing Catching Up
TL;DR
AlexB wrote:
2=LoveTunnel
Love these features, starting to test em out now, thanks! _________________ "Don't beg for things; Do it yourself or you'll never get anything." QUICK_EDIT
Hi do you remember me Alex? I was AC_02 who requested the tunnel logic itself! _________________ If you are a MetalHead (Heavy Metal Fan) and don't want to be a metalhead, Just remove your metal ball from your head. �:p .
QUICK_EDIT
I cannot get Tunnel logic to work. I follow the kind of setup shown in the example yet I don't get enter cursor or anything on the building in question.
NukeFlash.Duration works, with same limitations as the original effect (does not work on DeathWeapons, for one).
RelativeDamage appears to work. As it declares the damage dealt, a logical place for it would be on weapon but with the current system it works with warheads declared on Animations. Not entirely sure what could constitute as a further improvement to the system. _________________ QUICK_EDIT
On new Tunnel, can't test as no enter cursor appear for that building.
Why not name it as Portal/Transporter/Gateway etc. We already have
tunnels. Can't it extend to vehicles?
It shouldn't be repairable by engineer or spyable etc., for those infantries
to get in.
InitialPayload units could be extended for AI passenger logic. Currently
when unload script (8,0 or 8,2) is used, the unloaded passengers aren't
able to continue script as if they were never part of the team. [Pointed
out by deathreaperz] QUICK_EDIT
Crewed=no
Capturable=false
Explosion=TWLT070,S_BANG48,S_BRNL58,S_CLSN58,S_TUMU60
DebrisAnim=Dbris1sm,Dbris1lg,Dbris4sm,Dbris5sm,Dbris4lg,Dbris7sm,Dbris8sm,Dbris5lg,Dbris4lg
MaxDebris=15
MinDebris=8
ThreatPosed=5 ; This value MUST be 0 for all building addons
DamageParticleSystems=SparkSys,LGSparkSys
IsBaseDefense=yes
HasStupidGuardMode=false
ImmuneToPsionics=yes ; defaults to yes for buildings, no for others
All RelativeDamage Tags are working as intended from what I tested.
Can confirm with Starkku that the NukeFlash.Duration is working as intended.
Mind Controller units that cloak's victims stay controlled. Grand Cannon WH can nuke flash for example and no issues with cloaked factories.
Also, an inconsistent number of aircraft that dock at a pad with multiple slots, ex. Airforce Command, do not replenish their ammo. I haven't seen all 4 slots do it, but 0 to 3 will and it's permanent for that cell of the ground. _________________ "Don't beg for things; Do it yourself or you'll never get anything." Last edited by 4StarGeneral on Thu Jun 22, 2017 7:56 pm; edited 1 time in total QUICK_EDIT
Try it now _________________ One and only developer of the Command & Conquer Dune "C&C D" mod.
m7 wrote:
I tend to release things I create so that assets are never lost to hard drive problems, accidental deletion, or me having to pretend to care about rippers taking things from my project when it is done.
My bad, I had it right in rules already, I should've just copy and pasted so still not working. _________________ "Don't beg for things; Do it yourself or you'll never get anything." QUICK_EDIT
Using SizeLimit, tunnel feature works. Infantries and/or Units were
able to enter the building. All tunnel buildings show eject cursor as if
all of them are occupied and can be ejected from any of them.
- ejection is manual, not automatic as player can choose where to
eject from.
- Engineers can get in too if building uses Repairable=false.
- Can use Passengers= and PipScale to show status. Cannot use civil
building pip as CanBeOccupied stops transfering.
- Selling makes the occupants to come out from the last building to
be sold. QUICK_EDIT
Tunnel system for most part works after adding SizeLimit to the tunnel entrance building. Hover locomotor units have two problems when interacting with tunnels, however.
1. They have trouble entering the tunnel entrance(s). However, if they manage to do so...
2. Exiting a hover locomotor unit from a tunnel entrance other than the one it entered causes the unit to hover back to it's original enter location. This movement cannot be stopped or canceled in any way. _________________ QUICK_EDIT
Sorry for the late reply (also to everyone who tried to reach me in recent days). I'm without internet atm, but I read all your posts; will try to answer them soon.
Also sorry for not thinking about mentioning the SizeLimit on tunnel buildings.
Next testing build hopefully this weekend.
IamInnocent: Yeah, release already planned. This is the second part of the double-release I mentioned in the initial 0.D post. Regarding CellSpread and KillDriver: I'll take a look.
PussyPus: Sorry, I'm not sure I remember. I found a pretty old feature request for tunnels, and also several people requested it over the years.
E1 Elite: InitialPassengers don't count as part of the same team as the transporter unit. I haven't added support for that, and I'm not sure how easy it would be. It could be a simple change: adding them to the team, and preventing the game from considering such transports as valid transports to put units into (the logic that fills APCs or paradrop planes). It could be more complicated though, if the game suddenly finds units in the team which aren't mentioned in the TeamType though.
4StarGeneral: What custom spy effect in particular? I tested with the new sabotage one, and it worked.
Starkku: Thanks, I'm looking into that. The tunnels kinda work like UnitAbsorb buildings for vehicles. I'll check what's wrong there. _________________ QUICK_EDIT
Hmm, I'll do some more testing, but disregard it for now then, I'm probably just doing SpyEffect.Custom wrong. _________________ "Don't beg for things; Do it yourself or you'll never get anything." QUICK_EDIT
I am getting an issue on 17.170.22 where pad-bound aircraft would randomly refuse to reload their ammo while on the pad. Seems to trigger kind of randomly, does not always affect all aircraft resting on a pad if any at all. Cannot reproduce this at all on 0.Dp1. _________________ QUICK_EDIT
Let me guess. You either played Emperor: Battle for Dune and want the Ordos Laser Tank's Shielding because you like it and/or want a E:BfD mod on Ares-Engine or you played C&C 4 and liked the Shields there (altho, the shield was 'passed on' to surrounding troops). _________________ One and only developer of the Command & Conquer Dune "C&C D" mod.
m7 wrote:
I tend to release things I create so that assets are never lost to hard drive problems, accidental deletion, or me having to pretend to care about rippers taking things from my project when it is done.
Let me guess. You either played Emperor: Battle for Dune and want the Ordos Laser Tank's Shielding because you like it and/or want a E:BfD mod on Ares-Engine or you played C&C 4 and liked the Shields there (altho, the shield was 'passed on' to surrounding troops).
Or Starcraft.
Anyway, there's already been a request for it for a long time (extra healthbar in general) and AlexB's already gone over it as to whether feels it's necessary to implement yet.
@AlexB - SpyEffect.Custom and SpyEffect.Sabotage working just fine with different frame times, I just wasn't paying attention to the [BuildingType] tag and trying to force spies to sabotage themselves. Poor spies. _________________ "Don't beg for things; Do it yourself or you'll never get anything." QUICK_EDIT
Let me guess. You either played Emperor: Battle for Dune and want the Ordos Laser Tank's Shielding because you like it and/or want a E:BfD mod on Ares-Engine or you played C&C 4 and liked the Shields there (altho, the shield was 'passed on' to surrounding troops).
One of my specials has a shield animation, I'd prefer an actual shield instead of x1.60 strength. But yea sure you can say that. QUICK_EDIT
Question: Is it possible for Ares to store Globals? IIRC, RA2 didn't carry their Clear/Set states continuously, always forgetting them when making Auto-Saves.
I thought of storing said Globals' state in a seperate file/INI. Said Globals only change through map-triggers, not when the game saves/closes. (Yes, I know it sounds similar to a certain game's logic, but please don't spoil it's name here, would you? )
Is that possible? _________________ One and only developer of the Command & Conquer Dune "C&C D" mod.
m7 wrote:
I tend to release things I create so that assets are never lost to hard drive problems, accidental deletion, or me having to pretend to care about rippers taking things from my project when it is done.
Finally I uploaded a new testing build. Sorry for the delay! I collected several rather minor new features over the course of the last weeks, but my focus was again more on updating existing code to make Ares more solid.
As you can see, it's several bugfixes, and an added annoyance: If a trigger references a house that doesn't exist, the game will now force-crash when loading the map, telling the name of the trigger. So maybe check your maps. I'm thinking about converting this to a silent debug line, but I'm not sure it's discoverable, as people tend to ignore what the log says.
Fixes and Minor Additions
Cameo not removed correctly for one-time SWs (#1708152)
Nuke.Payload no longer adds to the internal list. This is a breaking change. Make sure you mention the payload in the type list!
Fixed crash when Con Yard captured when building structure from combat tab (#1656120)
AE on the type stops working under Iron Curtain (#1406285)
When deploying, AE on the type no longer loses information about the owner (the old unit)
Survivor.SideX parsing code has changed. To reset a value to default, "none" or "<none>" has to be used explicitly.
Raise a fatal error in case a trigger can't parse the house
VoxelAnim Damage related crash fixed. It also no longer changes the Damage value during match.
Veterancy Bonuses
Another feature I was working on years ago. Updated it for latest C++, and now adding veterancy effects became easier. Two new ones are available:
Protected Driver veterancy bonus: If "protected_driver" is specified in veteran or elite abilities, the unit becomes unconditionally immune to Kill Driver weapons. The feature doesn't check ProtectedDriver.MinHealth any longer then, thus it's possible to make rookies partially immune and promoted units fully immune.
ImmuneToRadiation as veteran or elite ability: "radimmune" adds the effect of ImmuneToRadiation as bonus granted for experience. Works for radiation weapons and Desolator-style radiation sites.
AttachEffects and Iron Curtain
The default is as it was before: AEs cannot attach if IC is active. It would maybe be better to always allow effects on the TechnoType to always attach, and maybe it would be useful to split this for allies and enemies, but... maybe next time.
[TechnoType/Warhead]=AttachEffect.PenetratesIronCurtain=boolean (defaults to no)
Whether the AttachEffect can attach to a unit or structure under the influence of an Iron Curtain. _________________ QUICK_EDIT
@AlexB: Can you please also consider the following Veteran bonus effects:
-PSIONIC_IMMUNE : Immune to MC weapon based units.
-CHAOS_IMMUNE : Immune Chaos weapon based units
-WARP_IMMUNE : Immune to chronow weapon based units.
-CRUSH_IMMUNE : Immune to tank crushing.
-OMNICRUSH_IMMUNE : Immune to heavy tank crushers like BFRT's.
-PARASITE_PROOF : Immune terror drones.
-DOG_PROOF : Immune to attack dogs.
-VIRUS_PROOF : Immune to virus based weapons and clouds.
-FLAME_PROOF : Immune to flame based weapons.
-CAN_DEPLOY : Unlocks or override Deployer=no.
-POWERLESS : does not require a structure to work like robot control center.
-ARMOR_[armorType] : changes unit's armour.
-SPEEDTYPE_[SpeedType] : changes units Speed type.
-MOVEMENT_[MovementZone] : changes unit movement zone.
-IMAGE_[Voxel or shp art] : changes unit's art.
or just
-TECHNOTYPE_[unit or building] : Changes to another unit or building by overriding existing tags with new ones or simply adding new tags next to already existing ones. QUICK_EDIT
Mind, those veterancy things are "flags", that is on/off, not something elaborate. That is, they don't have parameters to be customized further. There are some that apply a global tag like ROF, but that's not a good way to go.
CRUSH_IMMUNE, OMNICRUSH_IMMUNE: would require a lot of changes*
PARASITE_PROOF, DOG_PROOF, FLAME_PROOF: how to make a unit dog proof, but not Chitzkoi-proof? how to make black napalm not count as fire?
CAN_DEPLOY: would also need a lot of added hooks
ARMOR_[armorType], SPEEDTYPE_[SpeedType], MOVEMENT_[MovementZone], IMAGE_[Voxel or shp art]: have parameters and are thus out of the question. The flag name needs to be constant, not something composed.
The rest can be implemented reasonably well. When I changed the old code like I mentioned last time, I was playing with the thought to add a few of these, in particular immunity to psychedelic weapons. I wasn't sure whether it's actually useful. Would be a quick little feature.
TECHNOTYPE_[unit or building] would be what has been proposed many times already: converting units on promotion. I was working on that, too, and I did all the research and preparations (it was around the time I added VeteranSound, Flash, ...) but somehow I didn't pick it up in the following release cycle to finish it. This would allow more than 2 ranks, but it would be limited to inf->inf, unit->unit, no type changing.
Also, it would need a lot of testing. For example, if the old unit requires a Robot Control Center and is currently deactivated, but somehow gains experience, then it would change type to a unit that doesn't need a Center to work, thus never check whether it is powered and thus stay disabled. Supporting all such scenarios is tricky.
There are two ways to do that: replace the unit's type on the fly. This is like the TRUCKA to TRUCKB script action. It could create situations as explained. Then there's the option to remove the old unit, and create a new one with the new type. But then passengers need to be handled, or they would be lost. Attach Effects, crate boni, ... and an awful lot more. That's why I'm in favor of the first alternative. _________________ QUICK_EDIT
AlexB: Thank you very much for your response, yes I can now how this is complex, as for testing for turning one unit to another as soon as finish from my work in uni which end in the 31st I would like to help in testing the the unit Turning into another (tho I was assuming the idea inf->inf, unit->unit to begin with since doing something otherwise will complex). QUICK_EDIT
Something else crossed my mind, would it be easy to start a unit with Attach.Effect rather than giving it via some gimmicky way like I have.
Going back to upgrades, outside of veterancy unit upgrades, would a system be possible to do if say, the player builds a structure or upgrade that powers a unit? Currently I'm using a negative prereq to build 'upgraded' units but ofc it doesn't affecy current units, the effect I'm after is e.g.
Player builds WF upgrade, all current AND future rhino tanks will be upgraded. QUICK_EDIT
Something else crossed my mind, would it be easy to start a unit with Attach.Effect rather than giving it via some gimmicky way like I have.
Going back to upgrades, outside of veterancy unit upgrades, would a system be possible to do if say, the player builds a structure or upgrade that powers a unit? Currently I'm using a negative prereq to build 'upgraded' units but ofc it doesn't affecy current units, the effect I'm after is e.g.
Player builds WF upgrade, all current AND future rhino tanks will be upgraded.
Actually I don't understand why in so many rts game upgrades apply to pre-existing units. They never come back to factory though. QUICK_EDIT
@cxtian39: Never really thought of that, now I'm wondering the same ha.
@Alex: Playing around with abductors and if I read correctly, the docs say each turret is allowed a different weapon via WeaponX=, but the weapon doesn't change regardless of how many passengers are inside, turret changes fine. Is this intended?
Quote:
Note
In order to use this, you have to use YR’s multi-turret logic, that is, you have to specify Turret=yes, an appropriate TurretCount, and you have to use the WeaponX flags to specify weapons.
Upgrades like that would need some work. They are similar to what has been requested as BuildAs=, which would allow a unit appearing in the sidebar to be build as another unit to give the impression as being different vehicle models like GLA Technicals. There's more work required to make this conditional, like depending on building or building upgrade.
XxpeddyxX: PassengerTurret only changes the appearance, it shouldn't change the weapon. _________________ QUICK_EDIT
Also noticed something with AllowParallelAIQueues=no today, the AI behaves weird with aircraft, it builds a team of 4 even though the initial taskforces have just 3, then they just sit there. If you let AI assume control, it acts even weirder; even if the units have ammo they refuse to attack, this persists after revoking AI control, they just force themselves to dock. setting AllowParallelAIQueues=yes fixes this.
Maybe aircraft triggers aren't made to work with other aircraft triggers as support? I'll test it further later.
EDIT: just tested aircraft triggers without support teams and it works fine. It only bugs out when said triggers have air support triggers _________________
ayylmao on Discord QUICK_EDIT
Potentially the last version before the RC... it's already that late and there's still so much to test, and I still have the feeling I added nothing yet.
And looking back, there are some things I still have to look at... but for now, the presumably last bunch of features and fixes.
Fixes and Minor Additions
Potentially fix the EMP building reactivation problem
Output into the debug log if ShadowIndex is invalid
Attempt to stop units with killed drivers to reactivate at times
More Veterancy Bonuses
Appropriately named "unwarpable", this new ability makes units immune to Temporal weapons like Warpable=no.
"poisonimmune" protects against Poison=yes warheads like ImmuneToPoison=yes. The Psychic Dominator can override this effect just like the unconditional ImmuneToPsionics=yes one.
"psionicweaponimmune" protects against PsychicDamage=yes warheads like ImmuneToPsionicWeapons=yes.
"psionicsimmune" makes units immune to Chaos Gas (Psychedelic=yes) and Mind-Control (MindControl=yes) weapons, just like ImmuneToPsionics=yes does.
"psisonimmune", "poisonweaponsimmune", "poisonicsimmune" are still missing.
Promote Open Topped Transport Passengers
[TechnoType]Promote.IncludePassengers= (boolean, defaults to no)
Whether all Trainable=yes passengers will be set to the same veterancy setting if the rank of this transport unit changes. This can be used on OpenTopped=yes transports with Initial Payload, which are used to imitate multiple weapons, but logically only count as one unit.
Should work best with Initial Payload, Experience.PromotePassengers=no, and optionally Experience.FromPassengers=yes.
Note that this does not forward "experience" as the ratio of destroyed object's cost and own cost. This forwards the "rank" like veteran and elite. Thus, a GGI inside a BFRT will not gain elite status earlier (or later) than the vehicle itself.
Note that this also means the passenger's veterancy is discarded when the vehicle is promoted. Thus, this shouldn't be used on manually controllable transports, because they could set back elite passengers to veterans, for example.
Define more than 18 Weapons / More Turrets / More IFV Modes
Units having multiple turrets (TurretCount= > 0) can now use values higher than 18 on WeaponCount=.
TurretCount= has been reworked to load more than 18 turret and barrel voxels, following the same rules as the original.
There's new tags like HijackerTurretWeapon= and HijackerTurretIndex= to accommodate for the new turrets. For this purpose, Ares adds the new named slots (in arbitrary order) Spy, Mummy, Civilian, Arnie, ArniePrime, Texan, Alligator, President, VicePresident, Citra, Yunru, Norio, Rocketeer, Archer, Cheese, and Potato.
Instead of going full bonkers with those pairs of tags (so ignore the last paragraph), Gunner=yes units now also read:
[TechnoType]WeaponTurretIndexN=(integer, index - turret number)
The turret number used when WeaponN= and EliteWeaponN= are active, defined by IFVMode= of the passenger. N is the number from 1 to WeaponCount (but always the 18 originals). Note that WeaponN is 1-based while IFVMode= is 0-based.
I didn't test this feature as well as I would have liked, so be warned. _________________ QUICK_EDIT
Wow! This is impressive and a big game changer for alot of things. Especially the OpenTopped and Gunner Logics. Amazing Work as always Alex! _________________ ~ Excelsior ~ QUICK_EDIT
I am not able to run my mod (or most other mods in fact, vanilla game seems to work though) with the new unstable build, it crashes on loading screen every single time.
Don't know how much these will help as I observed that the EIP in except.txt changes completely between each attempt to run but here we go.
Any chance for customizable slave miners? It's possible to make a slave miner undeploy right after deploy which can be a sol for unit transform. But then slave miner is sacrificed since there can only be one type of it. And it can't have both stationary (long scan range) and mobile (short scan range) slave miners. _________________
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum