ampreeT / SourceCoop

Black Mesa cooperative plugin for SourceMod
GNU General Public License v3.0
182 stars 13 forks source link

hardcore mode #31

Closed ampreeT closed 2 years ago

ampreeT commented 4 years ago
pkurras commented 3 years ago

When is it happening? 👍

Alienmario commented 3 years ago

When we stop being burned out, or if there's enough demand. We could also accept a pull request if anyone wishes to implement this..

pkurras commented 3 years ago

Would do but I'm no at all familiar with the background info concerning the tech, engine hooks, etc., etc. Are there any docs on the basic knowledge?

Rock48 commented 3 years ago

Maybe include some of #53 for hardcore mode

Placer16 commented 3 years ago

In sven coop, you have a permanent medkit, this medkit has an amount of health, with this health you can heal other players for example, if you have 100hp on the medkit, and the other player has 50hp, you take 50hp from your medkit and heal the player 50hp, leaving your medkit with 50hp and the other player with 100hp(it heals the player little by little), when another player dies you can go to his dead body and revive him with the medkit pressing right button(takes a few seconds being stopped), spending 50hp from your medkit to do that, the medkit regenerates its hp over time. I think you guys should add a system similar to this one, because the way the game currently is, makes the game too easy, it incentivates players to die because besides being too quick to respawn, you respawn with full health, while on the sven coop mode it's the opposite, if you die there is a higher risk because if the other player dies you will have to start all over again, and you can only respawn if he uses the medkit to you (and there might be situations where he can't cause he will be fighting mobs and it takes a few seconds to respawn other players leaving the player who is respawning vulnerable to danger). https://svencoopedia.fandom.com/wiki/Medkit

BlueRaja commented 2 years ago

+1 to OP, this should be the default. Not much challenge if you can just respawn.

What happens currently with sourcecoop_respawntime 0 (which, according to the docs, disables respawn)?

Alienmario commented 2 years ago

I'm planning on adding this soon. I might call it "Survival mode" as that may be familiar to more players. Initially it would have the features in the first post. Reviving would be difficult to implement at first, as dead bodies don't stay serverside and there are no medkits (we would have to use the use key). However, a parameter could relatively easily be added to checkpoints which indicates whether to respawn the dead. Respawning on every checkpoint we have would be too easy, imo.

Balimbanana commented 2 years ago

For getting the player's ragdoll, you can use: GetEntPropEnt(client, Prop_Send, "m_hRagdoll"); Then you just have to check if the player is dead, as the ragdolls sometimes stay behind for some time, this index is updated every time they die, or when it is removed. The only issue is that even if a player explodes, their ragdoll is still returned which might need additional detection for if they exploded or not.

You could respawn players by the built-in checkpoints by trigger_autosave and inputs of Save to logic_autosave. Those are usually more sparse in the original maps.

BlueRaja commented 2 years ago

If you need anyone to help test this, let me know. We've been looking forward to this feature for a while.

Balimbanana commented 2 years ago

There is a version now in #68 if there are any features that you think should be there, or adjustments I can implement them.