diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index b667dce3037..9ccd329f429 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -168,6 +168,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTCOLD "resist_cold" #define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure" #define TRAIT_RESISTLOWPRESSURE "resist_low_pressure" +#define TRAIT_EXPLOSION_PROOF "explosion_proof" // Note, this only works for humans. #define TRAIT_RADIMMUNE "rad_immunity" #define TRAIT_GENELESS "geneless" #define TRAIT_VIRUSIMMUNE "virus_immunity" diff --git a/code/game/gamemodes/wizard/wizloadouts.dm b/code/game/gamemodes/wizard/wizloadouts.dm index b08bac86595..61a80989d37 100644 --- a/code/game/gamemodes/wizard/wizloadouts.dm +++ b/code/game/gamemodes/wizard/wizloadouts.dm @@ -124,7 +124,7 @@ /datum/spellbook_entry/loadout/fireball name = "Fireball. Fireball. Fireball." desc = "Who cares about the rest of the spells. Become an expert in fire magic. Devote yourself to the craft. The only spell you need anyways is Fireball.
\ - Provides fire immunity, homing fireballs, rapid-fire fireballs, and some fireball wands. Provides no mobility spells. Replaces your robes with infernal versions." + Provides fire & explosion immunity, homing fireballs, rapid-fire fireballs, and some fireball wands. Provides no mobility spells. Replaces your robes with infernal versions." spells_path = list(/datum/spell/sacred_flame, /datum/spell/fireball/homing, /datum/spell/infinite_guns/fireball) category = "Unique" destroy_spellbook = TRUE @@ -137,6 +137,7 @@ to_chat(user, "You feel fireproof.") ADD_TRAIT(user, TRAIT_RESISTHEAT, MAGIC_TRAIT) ADD_TRAIT(user, TRAIT_RESISTHIGHPRESSURE, MAGIC_TRAIT) + ADD_TRAIT(user, TRAIT_EXPLOSION_PROOF, MAGIC_TRAIT) user.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red/fireball(user), ITEM_SLOT_OUTER_SUIT) user.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red/fireball(user), ITEM_SLOT_HEAD) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 2a57bece0ce..b3ffde3d1df 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -85,7 +85,7 @@ var/turf/M_turf = get_turf(M) if(M_turf && M_turf.z == z0) var/dist = get_dist(M_turf, epicenter) - if(isliving(M) && dist <= flash_range) + if(isliving(M) && dist <= flash_range && !HAS_TRAIT(M, TRAIT_EXPLOSION_PROOF)) var/mob/living/to_flash = M var/is_very_close_to_the_explosion = flash_range > (dist * 2) to_flash.flash_eyes(is_very_close_to_the_explosion * 2, is_very_close_to_the_explosion, is_very_close_to_the_explosion) // Gets past sunglasses diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm index 16f919405b1..95e9aa5b0a6 100644 --- a/code/modules/mob/living/carbon/human/human_mob.dm +++ b/code/modules/mob/living/carbon/human/human_mob.dm @@ -269,7 +269,7 @@ status_tab_data[++status_tab_data.len] = list("Usable Blood:", "[V.bloodusable]") /mob/living/carbon/human/ex_act(severity) - if(status_flags & GODMODE) + if((status_flags & GODMODE) || HAS_TRAIT(src, TRAIT_EXPLOSION_PROOF)) return FALSE var/brute_loss = 0