ZeroK-RTS / Zero-K

Open source RTS game running on the Spring/Recoil engine
https://zero-k.info
GNU General Public License v2.0
672 stars 204 forks source link

Consider disabling amph regen on acid-water maps #3792

Open Aquanim opened 4 years ago

Aquanim commented 4 years ago

I believe I've seen people using Lobster/Djinn cheese on Quicksilver, which was presumably not the map-maker's intent. Could be beaten by increasing acid damage but preserving the property that one can jump one's commander into the water and it might escape seems worth something.

GoogleFrog commented 4 years ago

I think maps that intend to have no sea should do so with lava instead of uncommunicated acid.

Licho1 commented 4 years ago

Yeah the water is misleading and really odd to cause 600dps

Aquanim commented 4 years ago

Quicksilver's water deals 20dps. It's quite survivable for a lot of things (at least in the short term, and some amphs can survive indefinitely for Ravaged-style cheese), it just wouldn't be very practical to put a factory in it or use hovers/ships. I think there are ways to reasonably communicate acid.

Making all maps that want to have a non-land border but avoid Ravaged-style cheese use a lava aesthetic is kind of annoying.

Anarchid commented 4 years ago

Void and fog also communicate "no-go area" while having entirely different aesthetics.

sprunk commented 4 years ago

I dislike instagib levels of damage (ie. lava and void) for being janky (combat strider burial becomes even more degenerate, accidents like "sumo jump makes ankle-high lava pond, instagibs sumo" can happen, etc).

I agree that most acid maps fail to communicate the damage but I think that can be achieved without ruining aesthetics (making water more aggressively green, adding some sort of corrosive bubbling / fumes graphical fx, maybe some sort of bubbling texture slapped onto the water surface, etc).

I agree that acid damage could be less weaksauce, and possibly more standarized across maps. How about?

function gadget:UnitDamaged(unitID, unitDefID, unitTeam, damage, weaponDefID)
  if weaponDefID ~= Game.envDamageTypes.Water then
    return damage
  end

  -- a somewhat magic threshold between acid and non-gadget lava
  -- above which hovers don't path
  -- sauce https://github.com/spring/spring/blob/maintenance/rts/Sim/MoveTypes/MoveDefHandler.cpp#L65
  if damage > 10000 then 
    return damage
  end

  return 100 -- standarize acid across all maps
end
GoogleFrog commented 4 years ago

I like a standard but could it be implemented mapside? Adding UnitDamaged changes will just make the process confusing.

In general, would much prefer that acid damage exceeded amph regen, than to disable the regen entirely. The highest is 60 hp/s, so how about 80 dps?

Aquanim commented 4 years ago

I'm not sure offhand which maps this affects besides Quicksilver and Mercurial. Can anybody add to that list?

The size of the list (and the permissiveness of the corresponding map authors towards changes) probably influences what is the best way to proceed here.

With respect to Mercurial I made the water purple and added some fairly simple fumes (though they probably don't work properly until either a new map version or new stable). I think I prefer purple to green in that instance (for the purpose of contrast with the land) but if anybody would like to provide/assist with more sophisticated effects as a test case that would be good - my grasp of CEGs and particle effects in general is pretty minimal.

sprunk commented 4 years ago

There's acid versions of Throne and Ravaged that see enough play that I can name them off the top of my head.