[MIRROR] Regular CTF no longer has wounding (#2652)

* Regular CTF no longer has wounding (#56093)

🆑 coiax
tweak: Regular Capture-The-Flag players can no longer be wounded.
Simulated participants in the Medieval Shuttle can still be violently
murdered with wounds however.
/🆑

CTF is very fast paced, and if you've taken damage without your shield,
you are nearly dead most of the time. However, if you do survive, you're
supposed to slowly heal, but wounds are untreatable on the battlefield.

People still being able to be bloodily stabbed in the Medieval Shuttle
is definitely a feature.

- Aliens (xenomorphs) are still immune to wounds, but that immunity is
  now done with a trait, rather than a typecheck.

* Regular CTF no longer has wounding

Co-authored-by: coiax <jack@billbuddy.co.uk>
This commit is contained in:
SkyratBot
2021-01-12 02:04:03 +01:00
committed by GitHub
co-authored by coiax
parent f9a65ae84f
commit 577db30351
7 changed files with 16 additions and 1 deletions
+1
View File
@@ -171,6 +171,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NOLIMBDISABLE "no_limb_disable"
#define TRAIT_EASILY_WOUNDED "easy_limb_wound"
#define TRAIT_HARDLY_WOUNDED "hard_limb_wound"
#define TRAIT_NEVER_WOUNDED "never_wounded"
#define TRAIT_TOXINLOVER "toxinlover"
#define TRAIT_NOBREATH "no_breath"
#define TRAIT_ANTIMAGIC "anti_magic"
+1
View File
@@ -64,6 +64,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE,
"TRAIT_EASILY_WOUNDED" = TRAIT_EASILY_WOUNDED,
"TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED,
"TRAIT_NEVER_WOUNDED" = TRAIT_NEVER_WOUNDED,
"TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER,
"TRAIT_NOBREATH" = TRAIT_NOBREATH,
"TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC,
+1 -1
View File
@@ -110,7 +110,7 @@
* * smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented)
*/
/datum/wound/proc/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE)
if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !L.is_organic_limb())
if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || !L.is_organic_limb() || HAS_TRAIT(L.owner, TRAIT_NEVER_WOUNDED))
qdel(src)
return
@@ -186,6 +186,9 @@
var/instagib_gear = /datum/outfit/ctf/instagib
var/ammo_type = /obj/effect/ctf/ammo
// Fast paced gameplay, no real time for burn infections.
var/player_traits = list(TRAIT_NEVER_WOUNDED)
var/list/dead_barricades = list()
var/static/arena_reset = FALSE
@@ -322,6 +325,8 @@
M.faction += team
M.equipOutfit(chosen_class)
RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/ctf_qdelled_player) //just in case CTF has some map hazards (read: chasms). bit shorter than dust
for(var/trait in player_traits)
ADD_TRAIT(M, trait, CAPTURE_THE_FLAG_TRAIT)
spawned_mobs[M] = chosen_class
team_members |= new_team_member.ckey
return M //used in medisim.dm
@@ -32,6 +32,8 @@
create_internal_organs()
ADD_TRAIT(src, TRAIT_NEVER_WOUNDED, ROUNDSTART_TRAIT)
. = ..()
/mob/living/carbon/alien/create_internal_organs()
+3
View File
@@ -11,6 +11,9 @@
/obj/machinery/capture_the_flag/medisim/Initialize(mapload)
. = ..()
// Ensure that the historical simulation is extra bloody.
player_traits -= TRAIT_NEVER_WOUNDED
start_ctf() //both machines initialize, so both will call start_ctf instead of toggle_id_ctf calling it for both, twice.
/obj/machinery/capture_the_flag/medisim/victory()
@@ -404,6 +404,9 @@
* * bare_wound_bonus- The bare_wound_bonus of an attack
*/
/obj/item/bodypart/proc/check_wounding(woundtype, damage, wound_bonus, bare_wound_bonus)
if(HAS_TRAIT(owner, TRAIT_NEVER_WOUNDED))
return
// note that these are fed into an exponent, so these are magnified
if(HAS_TRAIT(owner, TRAIT_EASILY_WOUNDED))
damage *= 1.5