From 7bbebbb23f78fd9b3f0e0e756b6e6c4deed587ea Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Thu, 2 Jan 2025 03:36:07 -0500 Subject: [PATCH] Ports Anti-magic from TG. (#27560) * the rest of the fucking owl * OK hands need work but otherwise good * fuck time out fix vampire after * temporary codersprite do not merge this lmao * codersprite up * pause, time out * deploy the antimagic * Update code/__HELPERS/trait_helpers.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> * Update code/datums/status_effects/buffs.dm Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/gamemodes/wizard/magic_tarot.dm Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com> --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --- code/__DEFINES/dcs/atom_signals.dm | 4 + code/__DEFINES/dcs/mob_signals.dm | 9 +- code/__DEFINES/magic_defines.dm | 16 ++ code/__HELPERS/trait_helpers.dm | 6 + code/_globalvars/traits.dm | 3 + code/datums/components/anti_magic.dm | 166 ++++++++++++++++++ code/datums/spell.dm | 13 ++ .../alien_spells/basetype_alien_spell.dm | 1 + .../alien_spells/basetype_alien_touch.dm | 1 + code/datums/spells/banana_touch.dm | 3 +- code/datums/spells/bloodcrawl.dm | 1 + code/datums/spells/chaplain_bless.dm | 1 + code/datums/spells/chef.dm | 1 + code/datums/spells/horsemask.dm | 7 + code/datums/spells/lightning.dm | 6 + code/datums/spells/mime.dm | 2 + code/datums/spells/mime_malaise.dm | 3 +- code/datums/spells/mind_transfer.dm | 4 + code/datums/spells/night_vision.dm | 1 + code/datums/spells/rathens.dm | 2 + code/datums/spells/spacetime_dist.dm | 6 + code/datums/spells/wizard_spells.dm | 10 ++ code/datums/status_effects/buffs.dm | 5 +- code/game/dna/mutations/mutation_powers.dm | 9 + code/game/gamemodes/cult/blood_magic.dm | 6 + code/game/gamemodes/cult/runes.dm | 5 +- .../gamemodes/malfunction/Malf_Modules.dm | 1 + .../demons/shadow_demon/shadow_demon.dm | 2 + .../miniantags/guardian/host_actions.dm | 3 + .../miniantags/morph/spells/pass_airlock.dm | 1 + .../pulsedemon/pulsedemon_abilities.dm | 1 + .../miniantags/revenant/revenant_abilities.dm | 2 + code/game/gamemodes/wizard/godhand.dm | 29 ++- code/game/gamemodes/wizard/magic_tarot.dm | 18 +- code/game/gamemodes/wizard/spellbook.dm | 4 +- code/game/objects/effects/forcefields.dm | 6 + .../objects/items/weapons/holy_weapons.dm | 18 +- .../antagonists/mind_flayer/flayer_power.dm | 1 + .../modules/antagonists/vampire/vamp_datum.dm | 16 +- .../vampire_powers/dantalion_powers.dm | 4 + .../vampire_powers/gargantua_powers.dm | 2 + .../vampire/vampire_powers/vampire_powers.dm | 7 + .../antagonists/zombie/zombie_spells.dm | 1 + code/modules/clothing/suits/wiz_robe.dm | 11 ++ .../mining/lavaland/loot/tendril_loot.dm | 18 +- .../mining/lavaland/necropolis_chests.dm | 4 + code/modules/mob/living/carbon/superheroes.dm | 1 + code/modules/mob/living/silicon/pai/pai.dm | 1 + .../hostile/terror_spiders/prince.dm | 1 + code/modules/mob/mob.dm | 87 +++++++++ code/modules/mod/mod_types.dm | 8 +- code/modules/mod/modules/modules_antag.dm | 18 ++ code/modules/projectiles/guns/chaos_bolt.dm | 3 +- code/modules/projectiles/guns/magic.dm | 4 + .../projectile/magic_projectiles.dm | 40 ++++- .../surgery/organs/augments_internal.dm | 1 + icons/mob/genetics.dmi | Bin 0 -> 15533 bytes icons/obj/weapons/magical_weapons.dmi | Bin 27452 -> 29910 bytes paradise.dme | 4 +- sound/magic/magic_block.ogg | Bin 0 -> 33954 bytes sound/magic/magic_block_holy.ogg | Bin 0 -> 36508 bytes sound/magic/magic_block_mind.ogg | Bin 0 -> 35633 bytes 62 files changed, 580 insertions(+), 28 deletions(-) create mode 100644 code/__DEFINES/magic_defines.dm create mode 100644 code/datums/components/anti_magic.dm create mode 100644 icons/mob/genetics.dmi create mode 100644 sound/magic/magic_block.ogg create mode 100644 sound/magic/magic_block_holy.ogg create mode 100644 sound/magic/magic_block_mind.ogg diff --git a/code/__DEFINES/dcs/atom_signals.dm b/code/__DEFINES/dcs/atom_signals.dm index 294e5bd5aac..42745166c8d 100644 --- a/code/__DEFINES/dcs/atom_signals.dm +++ b/code/__DEFINES/dcs/atom_signals.dm @@ -134,5 +134,9 @@ #define COMPONENT_NO_MOUSEDROP (1<<0) ///from base of atom/MouseDrop_T: (/atom/from, /mob/user) #define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto" + +/// Called on the atom being hit, from /datum/component/anti_magic/on_attack() : (obj/item/weapon, mob/user, antimagic_flags) +#define COMSIG_ATOM_HOLY_ATTACK "atom_holyattacked" /// On a ranged attack: base of mob/living/carbon/human/RangedAttack (/mob/living/carbon/human) #define COMSIG_ATOM_RANGED_ATTACKED "atom_range_attacked" + diff --git a/code/__DEFINES/dcs/mob_signals.dm b/code/__DEFINES/dcs/mob_signals.dm index 3d0406f583e..e9b71bdc58b 100644 --- a/code/__DEFINES/dcs/mob_signals.dm +++ b/code/__DEFINES/dcs/mob_signals.dm @@ -22,11 +22,14 @@ #define COMSIG_MOB_ALTCLICKON "mob_altclickon" #define COMSIG_MOB_CANCEL_CLICKON (1<<0) +///from base of mob/can_cast_magic(): (mob/user, magic_flags, charge_cost) +#define COMSIG_MOB_RESTRICT_MAGIC "mob_cast_magic" +///from base of mob/can_block_magic(): (mob/user, casted_magic_flags, charge_cost) +#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" + #define COMPONENT_MAGIC_BLOCKED (1<<0) + ///from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj #define COMSIG_MOB_ALLOWED "mob_allowed" -///from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) -#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" - #define COMPONENT_BLOCK_MAGIC (1<<0) ///from base of mob/create_mob_hud(): () #define COMSIG_MOB_HUD_CREATED "mob_hud_created" ///from base of atom/attack_hand(): (mob/user) diff --git a/code/__DEFINES/magic_defines.dm b/code/__DEFINES/magic_defines.dm new file mode 100644 index 00000000000..9d0ee8158cd --- /dev/null +++ b/code/__DEFINES/magic_defines.dm @@ -0,0 +1,16 @@ +// Bitflags for magic resistance types +/// Default magic resistance that blocks normal magic (wizard, spells, magical staff projectiles) +#define MAGIC_RESISTANCE (1<<0) +/// Tinfoil hat magic resistance that blocks mental magic (telepathy / mind links, mind curses, abductors) +#define MAGIC_RESISTANCE_MIND (1<<1) +/// Holy magic resistance that blocks unholy magic (revenant, vampire, voice of god) +#define MAGIC_RESISTANCE_HOLY (1<<2) + +DEFINE_BITFIELD(antimagic_flags, list( + "MAGIC_RESISTANCE" = MAGIC_RESISTANCE, + "MAGIC_RESISTANCE_HOLY" = MAGIC_RESISTANCE_HOLY, + "MAGIC_RESISTANCE_MIND" = MAGIC_RESISTANCE_MIND, +)) + +/// Whether the spell can be cast while the user has antimagic on them that corresponds to the spell's own antimagic flags. +#define SPELL_REQUIRES_NO_ANTIMAGIC (1 << 0) diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index 245fcc291bb..095e02a0fa8 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -244,6 +244,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EMP_RESIST "emp_resist" //The mob will take less damage from EMPs #define TRAIT_MINDFLAYER_NULLIFIED "flayer_nullified" //The mindflayer will not be able to activate their abilities, or drain swarms from people #define TRAIT_FLYING "flying" +/// This mob is antimagic, and immune to spells / cannot cast spells +#define TRAIT_ANTIMAGIC "anti_magic" +/// This allows a person who has antimagic to cast spells without getting blocked +#define TRAIT_ANTIMAGIC_NO_SELFBLOCK "anti_magic_no_selfblock" +/// This mob recently blocked magic with some form of antimagic +#define TRAIT_RECENTLY_BLOCKED_MAGIC "recently_blocked_magic" #define TRAIT_UNKNOWN "unknown" // The person with this trait always appears as 'unknown'. #define TRAIT_CRYO_DESPAWNING "cryo_despawning" // dont adminbus this please diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 525e2cddb76..e0be5bf3b90 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -106,6 +106,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CANNOT_PULL" = TRAIT_CANNOT_PULL, "TRAIT_BSG_IMMUNE" = TRAIT_BSG_IMMUNE, "TRAIT_FLYING" = TRAIT_FLYING, + "TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC, + "TRAIT_ANTIMAGIC_NO_SELFBLOCK" = TRAIT_ANTIMAGIC_NO_SELFBLOCK, + "TRAIT_RECENTLY_BLOCKED_MAGIC" = TRAIT_RECENTLY_BLOCKED_MAGIC, "TRAIT_UNKNOWN" = TRAIT_UNKNOWN ), diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm new file mode 100644 index 00000000000..645e579a709 --- /dev/null +++ b/code/datums/components/anti_magic.dm @@ -0,0 +1,166 @@ +/// This provides different types of magic resistance on an object +/datum/component/anti_magic + /// A bitflag with the types of magic resistance on the object + var/antimagic_flags + /// The amount of times the object can protect the user from magic + /// Set to INFINITY to have, well, infinite charges. + var/charges + /// The inventory slot the object must be located at in order to activate + var/inventory_flags + /// The callback invoked when we have been drained a antimagic charge + var/datum/callback/drain_antimagic + /// The callback invoked when twe have been depleted of all charges + var/datum/callback/expiration + /// Whether we should, on equipping, alert the caster that this item can block any of their spells + /// This changes between true and false on equip and drop, don't set it outright to something + var/alert_caster_on_equip = TRUE + +/** + * Adds magic resistances to an object + * + * Magic resistance will prevent magic from affecting the user if it has the correct resistance + * against the type of magic being used + * + * args: + * * antimagic_flags (optional) A bitflag with the types of magic resistance on the object + * * charges (optional) The amount of times the object can protect the user from magic + * * inventory_flags (optional) The inventory slot the object must be located at in order to activate + * * drain_antimagic (optional) The proc that is triggered when an object has been drained a antimagic charge + * * expiration (optional) The proc that is triggered when the object is depleted of charges + * * + * antimagic bitflags: (see code/__DEFINES/magic.dm) + * * MAGIC_RESISTANCE - Default magic resistance that blocks normal magic (wizard, spells, staffs) + * * MAGIC_RESISTANCE_MIND - Tinfoil hat magic resistance that blocks mental magic (telepathy, abductors, jelly people) + * * MAGIC_RESISTANCE_HOLY - Holy magic resistance that blocks unholy magic (revenant, cult, vampire, voice of god) +**/ +/datum/component/anti_magic/Initialize( + antimagic_flags = MAGIC_RESISTANCE, + charges = INFINITY, + inventory_flags = ~ITEM_SLOT_IN_BACKPACK, // items in a backpack won't activate, anywhere else is fine + datum/callback/drain_antimagic, + datum/callback/expiration, + ) + + + var/atom/movable/movable = parent + if(!istype(movable)) + return COMPONENT_INCOMPATIBLE + + var/compatible = FALSE + if(isitem(movable)) + RegisterSignal(movable, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(movable, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(movable, COMSIG_ATTACK, PROC_REF(on_attack)) + compatible = TRUE + else if(ismob(movable)) + register_antimagic_signals(movable) + compatible = TRUE + + if(movable.can_buckle) + RegisterSignal(movable, COMSIG_MOVABLE_BUCKLE, PROC_REF(on_buckle)) + RegisterSignal(movable, COMSIG_MOVABLE_UNBUCKLE, PROC_REF(on_unbuckle)) + compatible = TRUE + + if(!compatible) + return COMPONENT_INCOMPATIBLE + + src.antimagic_flags = antimagic_flags + src.charges = charges + src.inventory_flags = inventory_flags + src.drain_antimagic = drain_antimagic + src.expiration = expiration + +/datum/component/anti_magic/Destroy(force) + drain_antimagic = null + expiration = null + return ..() + +/datum/component/anti_magic/proc/register_antimagic_signals(datum/on_what) + RegisterSignal(on_what, COMSIG_MOB_RECEIVE_MAGIC, PROC_REF(block_receiving_magic), override = TRUE) + RegisterSignal(on_what, COMSIG_MOB_RESTRICT_MAGIC, PROC_REF(restrict_casting_magic), override = TRUE) + +/datum/component/anti_magic/proc/unregister_antimagic_signals(datum/on_what) + UnregisterSignal(on_what, list(COMSIG_MOB_RECEIVE_MAGIC, COMSIG_MOB_RESTRICT_MAGIC)) + +/datum/component/anti_magic/proc/on_buckle(atom/movable/source, mob/living/bucklee) + SIGNAL_HANDLER // COMSIG_MOVABLE_BUCKLE + register_antimagic_signals(bucklee) + +/datum/component/anti_magic/proc/on_unbuckle(atom/movable/source, mob/living/bucklee) + SIGNAL_HANDLER // COMSIG_MOVABLE_UNBUCKLE + unregister_antimagic_signals(bucklee) + +/datum/component/anti_magic/proc/on_equip(atom/movable/source, mob/equipper, slot) + SIGNAL_HANDLER // COMSIG_ITEM_EQUIPPED + addtimer(CALLBACK(src, PROC_REF(on_equip_part_2), source, equipper, slot), 0.1 SECONDS) //We wait a moment to see if the item grants antimagic flags + +/datum/component/anti_magic/proc/on_equip_part_2(atom/movable/source, mob/equipper, slot) + if(!(inventory_flags & slot)) //Check that the slot is valid for antimagic + unregister_antimagic_signals(equipper) + return + + register_antimagic_signals(equipper) + if(HAS_TRAIT(equipper, TRAIT_ANTIMAGIC_NO_SELFBLOCK)) //If they do not care about antimagic, don't warn them + return + if(!alert_caster_on_equip) + return + + // Check to see if we have any spells that are blocked due to antimagic + if(!equipper.mind) + return + for(var/datum/spell/knownspell in equipper.mind.spell_list) + if(!(knownspell.spell_requirements & SPELL_REQUIRES_NO_ANTIMAGIC)) + continue + + if(!(antimagic_flags & knownspell.antimagic_flags)) + continue + + to_chat(equipper, "[parent] is interfering with your ability to cast magic!") + alert_caster_on_equip = FALSE + break + +/datum/component/anti_magic/proc/on_drop(atom/movable/source, mob/user) + SIGNAL_HANDLER //COMSIG_ITEM_DROPPED + + // Reset alert + if(source.loc != user) + alert_caster_on_equip = TRUE + unregister_antimagic_signals(user) + +/datum/component/anti_magic/proc/block_receiving_magic(mob/living/carbon/source, casted_magic_flags, charge_cost, list/antimagic_sources) + SIGNAL_HANDLER // COMSIG_MOB_RECEIVE_MAGIC + + // We do not block this type of magic, good day + if(!(casted_magic_flags & antimagic_flags)) + return NONE + + // We have already blocked this spell + if(parent in antimagic_sources) + return NONE + + // Block success! Add this parent to the list of antimagic sources + antimagic_sources += parent + + if((charges != INFINITY) && charge_cost > 0) + drain_antimagic?.Invoke(source, parent) + charges -= charge_cost + if(charges <= 0) + expiration?.Invoke(source, parent) + qdel(src) // no more antimagic + + return COMPONENT_MAGIC_BLOCKED + +/// cannot cast magic with the same type of antimagic present +/datum/component/anti_magic/proc/restrict_casting_magic(mob/user, magic_flags) + SIGNAL_HANDLER // COMSIG_MOB_RESTRICT_MAGIC + + if(magic_flags & antimagic_flags) + if(HAS_TRAIT(user, TRAIT_ANTIMAGIC_NO_SELFBLOCK)) // this trait bypasses magic casting restrictions + return NONE + return COMPONENT_MAGIC_BLOCKED + + return NONE + +/datum/component/anti_magic/proc/on_attack(obj/item/source, mob/living/target, mob/living/user) + SIGNAL_HANDLER //COMSIG_ATTACK + SEND_SIGNAL(target, COMSIG_ATOM_HOLY_ATTACK, source, user, antimagic_flags) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index cd595686d61..3604140c819 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -134,6 +134,13 @@ GLOBAL_LIST_INIT(spells, typesof(/datum/spell)) var/static/list/spell_handlers = list() /// handles a given spells cooldowns. tracks the time until its off cooldown, var/datum/spell_cooldown/cooldown_handler + /// Flag for certain states that the spell requires the user be in to cast. + var/spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + /// This determines what type of antimagic is needed to block the spell. + /// (MAGIC_RESISTANCE, MAGIC_RESISTANCE_MIND, MAGIC_RESISTANCE_HOLY) + /// If SPELL_REQUIRES_NO_ANTIMAGIC is set in Spell requirements, + /// The spell cannot be cast if the caster has any of the antimagic flags set. + var/antimagic_flags = MAGIC_RESISTANCE /* Checks if the user can cast the spell * @param charge_check If the proc should do the cooldown check @@ -467,6 +474,12 @@ GLOBAL_LIST_INIT(spells, typesof(/datum/spell)) if(T && is_admin_level(T.z)) return FALSE + // If the spell requires the user has no antimagic equipped, and they're holding antimagic + // that corresponds with the spell's antimagic, then they can't actually cast the spell + if((spell_requirements & SPELL_REQUIRES_NO_ANTIMAGIC) && !user.can_cast_magic(antimagic_flags)) + to_chat(user, "Some form of antimagic is preventing you from casting [src]!") + return FALSE + if(!holy_area_cancast && user.holy_check()) return FALSE diff --git a/code/datums/spells/alien_spells/basetype_alien_spell.dm b/code/datums/spells/alien_spells/basetype_alien_spell.dm index 12d98e8e489..02ac8ddab2a 100644 --- a/code/datums/spells/alien_spells/basetype_alien_spell.dm +++ b/code/datums/spells/alien_spells/basetype_alien_spell.dm @@ -24,6 +24,7 @@ Updates the spell's actions on use as well, so they know when they can or can't create_attack_logs = FALSE /// Every alien spell creates only logs, no attack messages on someone placing weeds, but you DO get attack messages on neurotoxin and corrosive acid create_custom_logs = TRUE + antimagic_flags = NONE /// How much plasma it costs to use this var/plasma_cost = 0 diff --git a/code/datums/spells/alien_spells/basetype_alien_touch.dm b/code/datums/spells/alien_spells/basetype_alien_touch.dm index c58ff15bed2..f979b2af6ba 100644 --- a/code/datums/spells/alien_spells/basetype_alien_touch.dm +++ b/code/datums/spells/alien_spells/basetype_alien_touch.dm @@ -6,6 +6,7 @@ base_cooldown = 1 action_background_icon_state = "bg_alien" clothes_req = FALSE + antimagic_flags = NONE create_attack_logs = FALSE /// Every alien spell creates only logs, no attack messages on someone placing weeds, but you DO get attack messages on neurotoxin and corrosive acid create_custom_logs = TRUE diff --git a/code/datums/spells/banana_touch.dm b/code/datums/spells/banana_touch.dm index b09b68d0639..9dc684f061a 100644 --- a/code/datums/spells/banana_touch.dm +++ b/code/datums/spells/banana_touch.dm @@ -27,10 +27,11 @@ /obj/item/melee/touch_attack/banana/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() + if(is_apprentice_spell && iswizard(target) && target != user) to_chat(user, "Seriously?! Honk THEM, not me!") return - if(!proximity_flag || target == user || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + if(!proximity_flag || target == user || blocked_by_antimagic || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return var/datum/effect_system/smoke_spread/s = new diff --git a/code/datums/spells/bloodcrawl.dm b/code/datums/spells/bloodcrawl.dm index 007ff329932..9bc2864a656 100644 --- a/code/datums/spells/bloodcrawl.dm +++ b/code/datums/spells/bloodcrawl.dm @@ -8,6 +8,7 @@ overlay = null action_icon_state = "bloodcrawl" action_background_icon_state = "bg_demon" + antimagic_flags = NONE var/allowed_type = /obj/effect/decal/cleanable var/phased = FALSE diff --git a/code/datums/spells/chaplain_bless.dm b/code/datums/spells/chaplain_bless.dm index 970cebd638c..518f51207c8 100644 --- a/code/datums/spells/chaplain_bless.dm +++ b/code/datums/spells/chaplain_bless.dm @@ -7,6 +7,7 @@ clothes_req = FALSE invocation = "none" invocation_type = "none" + antimagic_flags = NONE selection_activated_message = "You prepare a blessing. Click on a target to start blessing." selection_deactivated_message = "The crew will be blessed another time." diff --git a/code/datums/spells/chef.dm b/code/datums/spells/chef.dm index a28438b397a..2e42e0b1be6 100644 --- a/code/datums/spells/chef.dm +++ b/code/datums/spells/chef.dm @@ -4,6 +4,7 @@ clothes_req = FALSE base_cooldown = 5 SECONDS human_req = TRUE + antimagic_flags = NONE action_icon_state = "chef" action_background_icon_state = "bg_default" still_recharging_msg = "All this thinking makes your head hurt, wait a bit longer." diff --git a/code/datums/spells/horsemask.dm b/code/datums/spells/horsemask.dm index f0614edddd5..32d5cab3dcb 100644 --- a/code/datums/spells/horsemask.dm +++ b/code/datums/spells/horsemask.dm @@ -27,6 +27,13 @@ var/mob/living/carbon/human/target = targets[1] + if(target.can_block_magic(antimagic_flags)) + target.visible_message("[target]'s face bursts into flames, which instantly burst outward, leaving [target.p_them()] unharmed!", + "Your face starts burning up, but the flames are repulsed by your anti-magic protection!", + ) + to_chat(user, "The spell had no effect!") + return FALSE + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead magichead.flags |= NODROP | DROPDEL //curses! magichead.flags_inv = null //so you can still see their face diff --git a/code/datums/spells/lightning.dm b/code/datums/spells/lightning.dm index d4a141c1ccb..c7e79e2e103 100644 --- a/code/datums/spells/lightning.dm +++ b/code/datums/spells/lightning.dm @@ -38,6 +38,12 @@ origin.Beam(target, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 5) /datum/spell/charge_up/bounce/lightning/apply_bounce_effect(mob/origin, mob/living/target, energy, mob/user) + if(target.can_block_magic(antimagic_flags)) + target.visible_message( + "[target] absorbs the spell, remaining unharmed!", + "You absorb the spell, remaining unharmed!" + ) + return if(damaging) target.electrocute_act(energy, "Lightning Bolt", flags = SHOCK_NOGLOVES) else diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index 2e139981d64..eda8b982241 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -9,6 +9,7 @@ clothes_req = FALSE cast_sound = null human_req = TRUE + antimagic_flags = NONE action_icon_state = "mime" action_background_icon_state = "bg_mime" @@ -87,6 +88,7 @@ clothes_req = FALSE base_cooldown = 30 SECONDS human_req = TRUE + antimagic_flags = NONE action_icon_state = "fingergun" action_background_icon_state = "bg_mime" diff --git a/code/datums/spells/mime_malaise.dm b/code/datums/spells/mime_malaise.dm index f5e0011860c..67de6301334 100644 --- a/code/datums/spells/mime_malaise.dm +++ b/code/datums/spells/mime_malaise.dm @@ -20,7 +20,8 @@ /obj/item/melee/touch_attack/mime_malaise/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + + if(!proximity_flag || target == user || blocked_by_antimagic || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return var/datum/effect_system/smoke_spread/s = new diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index 4690dec4972..2e3bad262cf 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -9,6 +9,7 @@ selection_activated_message = "You prepare to transfer your mind. Click on a target to cast the spell." selection_deactivated_message = "You decide that your current form is good enough." cooldown_min = 200 //100 deciseconds reduction per rank + antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND var/list/protected_roles = list(SPECIAL_ROLE_WIZARD, SPECIAL_ROLE_CHANGELING, SPECIAL_ROLE_CULTIST) //which roles are immune to the spell var/paralysis_amount_caster = 40 SECONDS //how much the caster is paralysed for after the spell var/paralysis_amount_victim = 40 SECONDS //how much the victim is paralysed for after the spell @@ -47,6 +48,9 @@ Also, you never added distance checking after target is selected. I've went ahea if(issilicon(target)) to_chat(user, "You feel this enslaved being is just as dead as its cold, hard exoskeleton.") return + if(target.can_block_magic(antimagic_flags)) + to_chat(user, "Their mind is resisting your spell.") + return var/mob/living/victim = target//The target of the spell whos body will be transferred to. var/mob/living/caster = user//The wizard/whomever doing the body transferring. diff --git a/code/datums/spells/night_vision.dm b/code/datums/spells/night_vision.dm index de085eae199..ae5c94f9761 100644 --- a/code/datums/spells/night_vision.dm +++ b/code/datums/spells/night_vision.dm @@ -4,6 +4,7 @@ base_cooldown = 10 clothes_req = FALSE + antimagic_flags = NONE message = "You toggle your night vision!" diff --git a/code/datums/spells/rathens.dm b/code/datums/spells/rathens.dm index 19510324444..22969027c46 100644 --- a/code/datums/spells/rathens.dm +++ b/code/datums/spells/rathens.dm @@ -15,6 +15,8 @@ /datum/spell/rathens/cast(list/targets, mob/user = usr) for(var/mob/living/carbon/human/H in targets) + if(H.can_block_magic(antimagic_flags)) + continue var/datum/effect_system/smoke_spread/s = new s.set_up(5, FALSE, H) s.start() diff --git a/code/datums/spells/spacetime_dist.dm b/code/datums/spells/spacetime_dist.dm index 2e7a45c95ee..9d7b09c1629 100644 --- a/code/datums/spells/spacetime_dist.dm +++ b/code/datums/spells/spacetime_dist.dm @@ -82,6 +82,8 @@ desc = "A distortion in spacetime. You can hear faint music..." icon_state = "nothing" /// A flags which save people from being thrown about + var/antimagic_flags = MAGIC_RESISTANCE + /// A flags which save people from being thrown about var/obj/effect/cross_action/spacetime_dist/linked_dist /// Used to prevent an infinite loop in the space tiime continuum var/cant_teleport = FALSE @@ -101,6 +103,10 @@ AddElement(/datum/element/connect_loc, loc_connections) /obj/effect/cross_action/spacetime_dist/proc/walk_link(atom/movable/AM) + if(ismob(AM)) + var/mob/M = AM + if(M.can_block_magic(antimagic_flags, charge_cost = 0)) + return if(linked_dist && walks_left > 0) flick("purplesparkles", src) linked_dist.get_walker(AM) diff --git a/code/datums/spells/wizard_spells.dm b/code/datums/spells/wizard_spells.dm index 5466ee845cf..c62f868f401 100644 --- a/code/datums/spells/wizard_spells.dm +++ b/code/datums/spells/wizard_spells.dm @@ -313,6 +313,10 @@ return var/mob/living/target = targets[1] + if(target.can_block_magic(antimagic_flags)) + to_chat(target, "Your eye itches, but it passes momentarily.") + to_chat(user, "The spell had no effect!") + return FALSE target.EyeBlurry(40 SECONDS) target.EyeBlind(30 SECONDS) @@ -414,6 +418,10 @@ playMagSound() for(var/turf/T in targets) //Done this way so things don't get thrown all around hilariously. for(var/atom/movable/AM in T) + if(ismob(AM)) + var/mob/victim_mob = AM + if(victim_mob.can_block_magic(antimagic_flags)) + continue thrownatoms += AM for(var/am in thrownatoms) @@ -457,6 +465,8 @@ /datum/spell/sacred_flame/cast(list/targets, mob/user = usr) for(var/mob/living/L in targets) + if(L.can_block_magic(antimagic_flags)) + continue L.adjust_fire_stacks(20) if(isliving(user)) var/mob/living/U = user diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index c4795b8d71a..aa8dfa6c23d 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -92,9 +92,12 @@ var/found_someone = FALSE for(var/mob/living/L in oview(9, owner)) - found_someone = TRUE playsound(owner, 'sound/magic/teleport_diss.ogg', 50, TRUE) L.Beam(owner, "grabber_beam", time = 1 SECONDS, maxdistance = 9) + if(L.can_block_magic(MAGIC_RESISTANCE)) + to_chat(L, "You shake off the tendrils that try to wrap around you!") + continue + found_someone = TRUE L.apply_status_effect(STATUS_EFFECT_VOID_PRICE) if(found_someone) owner.visible_message("The violet light around [owner] glows black... and shoots off to those around [owner.p_them()]!", "The tendrils around you cinch tightly... but then unwravel and fly at others!") diff --git a/code/game/dna/mutations/mutation_powers.dm b/code/game/dna/mutations/mutation_powers.dm index f9cb5574c82..078633409f4 100644 --- a/code/game/dna/mutations/mutation_powers.dm +++ b/code/game/dna/mutations/mutation_powers.dm @@ -301,6 +301,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS + antimagic_flags = NONE selection_activated_message = "Your mind grow cold. Click on a target to cast the spell." selection_deactivated_message = "Your mind returns to normal." @@ -372,6 +373,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = NONE action_icon_state = "genetic_eat" @@ -511,6 +513,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = NONE action_icon_state = "genetic_jump" var/leap_distance = 10 @@ -636,6 +639,7 @@ selection_deactivated_message = "Your body calms down again." invocation_type = "none" + antimagic_flags = NONE action_icon_state = "genetic_poly" @@ -684,6 +688,7 @@ human_req = TRUE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = MAGIC_RESISTANCE_MIND action_icon_state = "genetic_empath" @@ -793,6 +798,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = NONE action_icon_state = "genetic_morph" @@ -983,6 +989,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = MAGIC_RESISTANCE_MIND action_icon_state = "genetic_project" @@ -1017,6 +1024,7 @@ base_cooldown = 0 clothes_req = FALSE stat_allowed = CONSCIOUS + antimagic_flags = MAGIC_RESISTANCE_MIND invocation_type = "none" action_icon_state = "genetic_mindscan" var/list/expanded_minds = list() @@ -1105,6 +1113,7 @@ clothes_req = FALSE stat_allowed = CONSCIOUS invocation_type = "none" + antimagic_flags = MAGIC_RESISTANCE_MIND action_icon_state = "genetic_view" diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm index 6f97e380e15..12b80aa8da5 100644 --- a/code/game/gamemodes/cult/blood_magic.dm +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -385,6 +385,7 @@ var/uses = 1 var/health_cost = 0 //The amount of health taken from the user when invoking the spell var/datum/action/innate/cult/blood_spell/source + var/antimagic_flags = MAGIC_RESISTANCE_HOLY /obj/item/melee/blood_magic/Initialize(mapload, spell) . = ..() @@ -418,6 +419,11 @@ uses = 0 qdel(src) return + if(M.can_block_magic(MAGIC_RESISTANCE_HOLY)) + to_chat(user, "[M] absorbs your spell!") + uses = 0 + qdel(src) + return add_attack_logs(user, M, "used a cult spell ([src]) on") M.lastattacker = user.real_name diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ebe886ff10c..9592e8ecaf4 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -249,9 +249,8 @@ structure_check() searches for nearby cultist structures required for the invoca qdel(src) /mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes - var/obj/item/nullrod/N = locate() in src - if(N) - return N + if(can_block_magic(MAGIC_RESISTANCE_HOLY)) + return TRUE return FALSE //Rite of Enlightenment: Converts a normal crewmember to the cult, or offer them as sacrifice if cant be converted. diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 87b88676d3c..90ba39865b7 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -13,6 +13,7 @@ base_cooldown = 0 var/uses //If we have multiple uses of the same power var/auto_use_uses = TRUE //If we automatically use up uses on each activation + antimagic_flags = NONE /datum/spell/ai_spell/create_new_targeting() return new /datum/spell_targeting/self diff --git a/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm b/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm index df5df3aae74..d44adb00d17 100644 --- a/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm +++ b/code/game/gamemodes/miniantags/demons/shadow_demon/shadow_demon.dm @@ -212,6 +212,8 @@ return hit = TRUE // to prevent double hits from the pull . = ..() + if(!.) + return for(var/atom/extinguish_target in range(2, src)) extinguish_target.extinguish_light(TRUE) if(!isliving(target)) diff --git a/code/game/gamemodes/miniantags/guardian/host_actions.dm b/code/game/gamemodes/miniantags/guardian/host_actions.dm index 4a4ff5144ba..e21f2509415 100644 --- a/code/game/gamemodes/miniantags/guardian/host_actions.dm +++ b/code/game/gamemodes/miniantags/guardian/host_actions.dm @@ -106,6 +106,7 @@ name = "Place Teleportation Beacon" desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon requires an anchor, will not work on space tiles." clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 300 SECONDS action_icon_state = "no_state" action_background_icon = 'icons/mob/guardian.dmi' @@ -129,6 +130,7 @@ name = "Set Surveillance Snare" desc = "Places an invisible Surveillance Snare on the ground, if someone walks over it you'll be alerted. Max of 6 snares active at a time" clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 3 SECONDS action_icon_state = "no_state" action_background_icon = 'icons/mob/guardian.dmi' @@ -160,6 +162,7 @@ name = "Change battlecry" desc = "Changes your battlecry." clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 1 SECONDS action_icon_state = "no_state" action_background_icon = 'icons/mob/guardian.dmi' diff --git a/code/game/gamemodes/miniantags/morph/spells/pass_airlock.dm b/code/game/gamemodes/miniantags/morph/spells/pass_airlock.dm index b8f2f1623bc..847ee5cce00 100644 --- a/code/game/gamemodes/miniantags/morph/spells/pass_airlock.dm +++ b/code/game/gamemodes/miniantags/morph/spells/pass_airlock.dm @@ -5,6 +5,7 @@ action_background_icon_state = "bg_morph" action_icon_state = "morph_airlock" clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 10 SECONDS selection_activated_message = "Click on an airlock to try pass it." diff --git a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm index d248e460ba2..97c86faf060 100644 --- a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm +++ b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_abilities.dm @@ -10,6 +10,7 @@ /datum/spell/pulse_demon clothes_req = FALSE + antimagic_flags = NONE action_background_icon_state = "bg_pulsedemon" var/locked = TRUE var/unlock_cost = 1 KJ diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 0a167ec7724..ad6da8561d8 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -134,6 +134,7 @@ clothes_req = FALSE action_icon_state = "r_transmit" action_background_icon_state = "bg_revenant" + antimagic_flags = MAGIC_RESISTANCE_HOLY|MAGIC_RESISTANCE_MIND /datum/spell/revenant_transmit/create_new_targeting() var/datum/spell_targeting/targeted/T = new() @@ -165,6 +166,7 @@ var/unlock_amount = 100 /// How much essence it costs to use var/cast_amount = 50 + antimagic_flags = MAGIC_RESISTANCE_HOLY /datum/spell/aoe/revenant/New() ..() diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm index c9ffe3584e3..f75c5a692b8 100644 --- a/code/game/gamemodes/wizard/godhand.dm +++ b/code/game/gamemodes/wizard/godhand.dm @@ -16,6 +16,8 @@ throw_range = 0 throw_speed = 0 new_attack_chain = TRUE + /// Has it been blocked by antimagic? If so, abort. + var/blocked_by_antimagic = FALSE /obj/item/melee/touch_attack/New(spell) attached_spell = spell @@ -37,6 +39,17 @@ to_chat(user, "You can't reach out!") return FINISH_ATTACK +/obj/item/melee/touch_attack/after_attack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + var/mob/mob_victim = target + if(istype(mob_victim) && mob_victim.can_block_magic(attached_spell.antimagic_flags)) + to_chat(user, "[mob_victim] absorbs your spell!") + blocked_by_antimagic = TRUE + if(attached_spell && attached_spell.cooldown_handler) + attached_spell.cooldown_handler.start_recharge(attached_spell.cooldown_handler.recharge_duration * 0.5) + qdel(src) + return + /obj/item/melee/touch_attack/proc/handle_delete(mob/user) if(catchphrase) user.say(catchphrase) @@ -53,9 +66,10 @@ icon_state = "disintegrate" item_state = "disintegrate" + /obj/item/melee/touch_attack/disintegrate/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //exploding after touching yourself would be bad + if(!proximity_flag || target == user || blocked_by_antimagic || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //exploding after touching yourself would be bad return var/mob/M = target do_sparks(4, 0, M.loc) //no idea what the 0 is @@ -72,7 +86,8 @@ /obj/item/melee/touch_attack/fleshtostone/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !isliving(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //getting hard after touching yourself would also be bad + + if(!proximity_flag || target == user || blocked_by_antimagic || !isliving(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //getting hard after touching yourself would also be bad return var/mob/living/L = target L.Stun(4 SECONDS) @@ -90,12 +105,14 @@ /obj/item/melee/touch_attack/plushify/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !isliving(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //There are better ways to get a good nights sleep in a bed. + + if(!proximity_flag || target == user || blocked_by_antimagic || !isliving(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //There are better ways to get a good nights sleep in a bed. return var/mob/living/L = target L.plushify() handle_delete(user) + /obj/item/melee/touch_attack/fake_disintegrate name = "toy plastic hand" desc = "This hand of mine glows with an awesome power! Ok, maybe just batteries." @@ -107,7 +124,8 @@ /obj/item/melee/touch_attack/fake_disintegrate/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //not exploding after touching yourself would be bad + + if(!proximity_flag || target == user || blocked_by_antimagic || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //not exploding after touching yourself would be bad return do_sparks(4, 0, target.loc) playsound(target.loc, 'sound/goonstation/effects/gib.ogg', 50, 1) @@ -123,7 +141,8 @@ /obj/item/melee/touch_attack/cluwne/after_attack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!proximity_flag || target == user || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //clowning around after touching yourself would unsurprisingly, be bad + + if(!proximity_flag || target == user || blocked_by_antimagic || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //clowning around after touching yourself would unsurprisingly, be bad return if(iswizard(target)) diff --git a/code/game/gamemodes/wizard/magic_tarot.dm b/code/game/gamemodes/wizard/magic_tarot.dm index 5f7eed073e9..b6d2cbc6140 100644 --- a/code/game/gamemodes/wizard/magic_tarot.dm +++ b/code/game/gamemodes/wizard/magic_tarot.dm @@ -232,6 +232,11 @@ qdel(src) /obj/item/magic_tarot_card/proc/pre_activate(mob/user, atom/movable/thrower) + if(user != thrower) //Ignore antimagic stuff if the user is the thrower (aka self activation) + if(user.can_block_magic(our_tarot.antimagic_flags, 1)) + visible_message("[src] burns up in a flash on contact with [user]!") + qdel(src) + return has_been_activated = TRUE forceMove(user) var/obj/effect/temp_visual/card_preview/tarot/draft = new(user, "tarot_[our_tarot.card_icon]") @@ -288,6 +293,8 @@ var/card_icon = "the_unknown" /// Are we reversed? Used for the card back. var/reversed = FALSE + /// What antimagic flags do we have? + var/antimagic_flags = MAGIC_RESISTANCE /datum/tarot/proc/activate(mob/living/target) stack_trace("A bugged tarot card was spawned and used. Please make an issue report! Type was [src.type]") @@ -688,8 +695,11 @@ var/sparkle_path = /obj/effect/temp_visual/gravpush for(var/turf/T in range(5, target)) //Done this way so things don't get thrown all around hilariously. for(var/atom/movable/AM in T) + if(ismob(AM)) + var/mob/victim_mob = AM + if(victim_mob.can_block_magic(antimagic_flags)) + continue thrown_atoms += AM - for(var/atom/movable/AM as anything in thrown_atoms) if(AM == target || AM.anchored || (ismob(AM) && !isliving(AM))) continue @@ -729,6 +739,9 @@ /datum/tarot/reversed/the_empress/activate(mob/living/target) for(var/mob/living/L in oview(9, target)) + if(L.can_block_magic(antimagic_flags)) + to_chat(L, "You feel calm for a second, but it quickly passes.") + continue L.apply_status_effect(STATUS_EFFECT_PACIFIED) /datum/tarot/reversed/the_emperor @@ -763,6 +776,8 @@ for(var/mob/living/M in shuffle(orange(7, target))) if(M.stat == DEAD) //Let us not have dead mobs be used to make a disco inferno. continue + if(M.can_block_magic(antimagic_flags)) //Be spared! + continue if(active_chasers >= 2) return var/obj/effect/temp_visual/hierophant/chaser/C = new(get_turf(target), target, M, 1, FALSE) @@ -959,6 +974,7 @@ desc = "May you remember lost memories." extended_desc = "will reveal the memories of everyone in range to the user." card_icon = "the_moon?" + antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND /datum/tarot/reversed/the_moon/activate(mob/living/target) for(var/mob/living/L in view(5, target)) //Shorter range as this kinda can give away antagonists, though that is also funny. diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index ab14142c562..22e844b1917 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -499,7 +499,9 @@ //Weapons and Armors /datum/spellbook_entry/item/battlemage name = "Battlemage Armor" - desc = "An ensorceled spaceproof suit of protective yet light armor, protected by a powerful shield. The shield can completely negate 15 attacks before permanently failing." + desc = "An ensorceled spaceproof suit of protective yet light armor, protected by a powerful shield. The shield can completely negate 15 attacks before permanently failing. \ + This armor grants you full protection from magical attacks, and allows you to cast magic despite that. However, this means it will also block wands or staffs of \ + healing from working on you, and should be removed before application." item_path = /obj/item/storage/box/wizard/hardsuit limit = 1 category = "Weapons and Armors" diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index 7c59c10efe1..b86ae670a39 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -17,6 +17,8 @@ /obj/effect/forcefield/wizard var/mob/wizard + /// Flags for what antimagic can just ignore our forcefields + var/antimagic_flags = MAGIC_RESISTANCE /obj/effect/forcefield/wizard/Initialize(mapload, mob/summoner) . = ..() @@ -25,6 +27,10 @@ /obj/effect/forcefield/wizard/CanPass(atom/movable/mover, border_dir) if(mover == wizard) return TRUE + if(isliving(mover)) + var/mob/living/living_mover = mover + if(living_mover.can_block_magic(antimagic_flags, charge_cost = 0)) + return TRUE return FALSE ///////////Mimewalls/////////// diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index a1179c68167..0b567a426af 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -21,9 +21,12 @@ var/list/fluff_transformations = list() /// Extra 'Holy' burn damage for ERT null rods var/sanctify_force = 0 + /// The antimagic type the nullrod has. + var/antimagic_type = MAGIC_RESISTANCE_HOLY /obj/item/nullrod/Initialize(mapload) . = ..() + AddComponent(/datum/component/anti_magic, antimagic_type) if(!length(variant_names)) for(var/I in typesof(/obj/item/nullrod)) var/obj/item/nullrod/rod = I @@ -37,11 +40,6 @@ /obj/item/nullrod/attack__legacy__attackchain(mob/M, mob/living/carbon/user) ..() - var/datum/antagonist/vampire/V = M.mind?.has_antag_datum(/datum/antagonist/vampire) - if(ishuman(M) && V && HAS_MIND_TRAIT(M, TRAIT_HOLY)) - if(!V.get_ability(/datum/vampire_passive/full)) - to_chat(M, "The nullrod's power interferes with your own!") - V.adjust_nullification(30 + sanctify_force, 15 + sanctify_force) if(!sanctify_force) return if(isliving(M)) @@ -593,6 +591,16 @@ to_chat(user, "Your prayer to [SSticker.Bible_deity_name] was interrupted.") praying = FALSE + +/obj/item/nullrod/nazar + name = "nazar" + icon_state = "nazar" + item_state = null + desc = "A set of glass beads and amulet, which has been forged to provide powerful magic protection to the wielder." + force = 0 + throwforce = 0 + antimagic_type = ALL + /obj/item/nullrod/salt name = "Holy Salt" icon = 'icons/obj/food/containers.dmi' diff --git a/code/modules/antagonists/mind_flayer/flayer_power.dm b/code/modules/antagonists/mind_flayer/flayer_power.dm index b48c9c25ca9..481c3d0a78a 100644 --- a/code/modules/antagonists/mind_flayer/flayer_power.dm +++ b/code/modules/antagonists/mind_flayer/flayer_power.dm @@ -3,6 +3,7 @@ desc = "This spell needs a description!" human_req = TRUE clothes_req = FALSE + antimagic_flags = NONE /// A reference to the owner mindflayer's antag datum. var/datum/antagonist/mindflayer/flayer diff --git a/code/modules/antagonists/vampire/vamp_datum.dm b/code/modules/antagonists/vampire/vamp_datum.dm index 3fe4dcc7660..b6e97c0c671 100644 --- a/code/modules/antagonists/vampire/vamp_datum.dm +++ b/code/modules/antagonists/vampire/vamp_datum.dm @@ -93,6 +93,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire) mob_override.dna?.species.hunger_icon = initial(mob_override.dna.species.hunger_icon) owner.current.alpha = 255 REMOVE_TRAITS_IN(owner.current, "vampire") + UnregisterSignal(owner, COMSIG_ATOM_HOLY_ATTACK) #define BLOOD_GAINED_MODIFIER 0.5 @@ -362,8 +363,21 @@ RESTRICT_TYPE(/datum/antagonist/vampire) mob_override.dna?.species.hunger_icon = 'icons/mob/screen_hunger_vampire.dmi' check_vampire_upgrade(FALSE) + RegisterSignal(mob_override, COMSIG_ATOM_HOLY_ATTACK, PROC_REF(holy_attack_reaction)) - +/datum/antagonist/vampire/proc/holy_attack_reaction(mob/target, obj/item/source, mob/user, antimagic_flags) + SIGNAL_HANDLER // COMSIG_ATOM_HOLY_ATTACK + if(!HAS_MIND_TRAIT(user, TRAIT_HOLY)) // Sec officer with a nullrod, or miner with a talisman, does not get to do this + return + if(!source.force) // Needs force to work. + return + var/bonus_force = 0 + if(istype(source, /obj/item/nullrod)) + var/obj/item/nullrod/N = source + bonus_force = N.sanctify_force + if(!get_ability(/datum/vampire_passive/full)) + to_chat(owner.current, "[source]'s power interferes with your own!") + adjust_nullification(30 + bonus_force, 15 + bonus_force) /datum/antagonist/vampire/custom_blurb() return "On the date [GLOB.current_date_string], at [station_time_timestamp()],\n in the [station_name()], [get_area_name(owner.current, TRUE)]...\nThe hunt begins again..." diff --git a/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm b/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm index d749bfccee3..c38b8523e3d 100644 --- a/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm @@ -161,6 +161,10 @@ /datum/spell/vampire/switch_places/cast(list/targets, mob/user) var/mob/living/target = targets[1] + if(target.can_block_magic(antimagic_flags)) + to_chat(user, "The spell had no effect!") + to_chat(target, "You feel space bending, but it rapidly dissipates.") + return FALSE var/turf/user_turf = get_turf(user) var/turf/target_turf = get_turf(target) if(!(SEND_SIGNAL(target, COMSIG_MOVABLE_TELEPORTING, user_turf) & COMPONENT_BLOCK_TELEPORT)) diff --git a/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm b/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm index 20071ab2ebf..5207ccf7d97 100644 --- a/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/gargantua_powers.dm @@ -157,6 +157,8 @@ /obj/item/projectile/magic/demonic_grasp/on_hit(atom/target, blocked, hit_zone) . = ..() + if(!.) + return if(!isliving(target)) return var/mob/living/L = target diff --git a/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm b/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm index ff227c1774b..21e6b97f5fa 100644 --- a/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm @@ -3,6 +3,9 @@ //Other vampires and thralls aren't affected if(mind?.has_antag_datum(/datum/antagonist/vampire) || mind?.has_antag_datum(/datum/antagonist/mindslave/thrall)) return FALSE + /// Chaplains with their nullrod can block a full power vampire, but a chaplain by themselfs or a crew with a null rod can not. + if(can_block_magic(MAGIC_RESISTANCE_HOLY) && HAS_MIND_TRAIT(src, TRAIT_HOLY)) + return FALSE //Vampires who have reached their full potential can affect nearly everything var/datum/antagonist/vampire/V = user?.mind.has_antag_datum(/datum/antagonist/vampire) if(V?.get_ability(/datum/vampire_passive/full)) @@ -10,12 +13,15 @@ //Holy characters are resistant to vampire powers if(HAS_MIND_TRAIT(src, TRAIT_HOLY)) return FALSE + if(can_block_magic(MAGIC_RESISTANCE_HOLY)) + return FALSE return TRUE /datum/spell/vampire action_background_icon_state = "bg_vampire" human_req = TRUE clothes_req = FALSE + antimagic_flags = MAGIC_RESISTANCE_HOLY /// How much blood this ability costs to use var/required_blood var/deduct_blood_on_cast = TRUE @@ -52,6 +58,7 @@ action_icon_state = "vampire_rejuvinate" base_cooldown = 20 SECONDS stat_allowed = UNCONSCIOUS + antimagic_flags = NONE // So. If you have a null rod on your person, you can't cast vampire spells. I would rather not have officers abuse this by putting a nullrod in their pocket or something to block rejuvinate. /datum/spell/vampire/self/rejuvenate/cast(list/targets, mob/user = usr) var/mob/living/U = user diff --git a/code/modules/antagonists/zombie/zombie_spells.dm b/code/modules/antagonists/zombie/zombie_spells.dm index 3739a953438..39d02fa9982 100644 --- a/code/modules/antagonists/zombie/zombie_spells.dm +++ b/code/modules/antagonists/zombie/zombie_spells.dm @@ -5,6 +5,7 @@ action_background_icon_state = "bg_vampire" human_req = TRUE clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 0 SECONDS var/list/our_claws = list() var/infection_stage = 1 // mostly for adminbus and testing diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 6a4511534f1..7314f898497 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -200,6 +200,17 @@ /obj/item/clothing/suit/space/hardsuit/wizard/setup_shielding() AddComponent(/datum/component/shielded, max_charges = 15, recharge_start_delay = 0 SECONDS) +/obj/item/clothing/suit/space/hardsuit/wizard/equipped(mob/user, slot) + . = ..() + ADD_TRAIT(user, TRAIT_ANTIMAGIC, "[UID(src)]") + ADD_TRAIT(user, TRAIT_ANTIMAGIC_NO_SELFBLOCK, "[UID(src)]") + +/obj/item/clothing/suit/space/hardsuit/wizard/dropped(mob/user) + . = ..() + REMOVE_TRAIT(user, TRAIT_ANTIMAGIC, "[UID(src)]") + REMOVE_TRAIT(user, TRAIT_ANTIMAGIC_NO_SELFBLOCK, "[UID(src)]") + + /obj/item/clothing/suit/space/hardsuit/wizard/arch desc = "For the arch wizard in need of additional protection." min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index d0329bf4fcb..4cf0d24f8ce 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -338,6 +338,7 @@ max_charges = 1 flags = NOBLUDGEON force = 18 + antimagic_flags = NONE /obj/item/ammo_casing/magic/hook name = "hook" @@ -384,7 +385,7 @@ //Immortality Talisman /obj/item/immortality_talisman - name = "Immortality Talisman" + name = "\improper Immortality Talisman" desc = "A dread talisman that can render you completely invulnerable." icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "talisman" @@ -393,6 +394,21 @@ actions_types = list(/datum/action/item_action/immortality) var/cooldown = 0 +/obj/item/immortality_talisman/Initialize(mapload) + . = ..() + AddComponent(/datum/component/anti_magic, ALL) + +/obj/item/immortality_talisman/equipped(mob/user, slot) + ..() + if(slot != ITEM_SLOT_IN_BACKPACK) + var/user_UID = user.UID() + ADD_TRAIT(user, TRAIT_ANTIMAGIC_NO_SELFBLOCK, user_UID) + +/obj/item/immortality_talisman/dropped(mob/user, silent) + . = ..() + var/user_UID = user.UID() + REMOVE_TRAIT(user, TRAIT_ANTIMAGIC_NO_SELFBLOCK, user_UID) + /datum/action/item_action/immortality name = "Immortality" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index e4b1f52529d..89e0de5217f 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -184,6 +184,10 @@ ) hide_tail_by_species = list("Unathi", "Tajaran", "Vox", "Vulpkanin") +/obj/item/clothing/suit/hooded/berserker/Initialize(mapload) + . = ..() + AddComponent(/datum/component/anti_magic, ALL, inventory_flags = ITEM_SLOT_OUTER_SUIT) + /obj/item/clothing/head/hooded/berserker name = "berserker helmet" desc = "Peering into the eyes of the helmet is enough to seal damnation." diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index a7f63bd6e07..cb497112049 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -143,6 +143,7 @@ desc = "Allows you to recruit a conscious, non-braindead, non-catatonic human to be part of the Greyshirts, your personal henchmen. This works on Assistants only and you can recruit a maximum of 3!." base_cooldown = 450 clothes_req = FALSE + antimagic_flags = NONE action_icon_state = "spell_greytide" var/recruiting = 0 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index dd136add437..653a6c7cdb3 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -242,6 +242,7 @@ name = "Unfold/Fold Chassis" desc = "Allows you to fold in/out of your mobile form." clothes_req = FALSE + antimagic_flags = NONE base_cooldown = 20 SECONDS action_icon_state = "repairbot" action_background_icon_state = "bg_tech_blue" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index 05f9e655b73..cd32ea73e96 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -63,6 +63,7 @@ gain_desc = "You can now charge at a target on screen, dealing massive damage and destroying structures." base_cooldown = 30 SECONDS clothes_req = FALSE + antimagic_flags = NONE action_icon_state = "terror_prince" /datum/spell/princely_charge/create_new_targeting() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 10f65af02b1..7583e3bf47e 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1428,3 +1428,90 @@ GLOBAL_LIST_INIT(holy_areas, typecacheof(list( if(user.incapacitated()) return return relaydrive(user, direction) + + +/** + * Checks to see if the mob can cast normal magic spells. + * + * args: + * * magic_flags (optional) A bitfield with the type of magic being cast (see flags at: /datum/component/anti_magic) +**/ +/mob/proc/can_cast_magic(magic_flags = MAGIC_RESISTANCE) + if(magic_flags == NONE) // magic with the NONE flag can always be cast + return TRUE + + var/restrict_magic_flags = SEND_SIGNAL(src, COMSIG_MOB_RESTRICT_MAGIC, magic_flags) + return restrict_magic_flags == NONE + +/** + * Checks to see if the mob can block magic + * + * args: + * * casted_magic_flags (optional) A bitfield with the types of magic resistance being checked (see flags at: /datum/component/anti_magic) + * * charge_cost (optional) The cost of charge to block a spell that will be subtracted from the protection used +**/ +/mob/proc/can_block_magic(casted_magic_flags = MAGIC_RESISTANCE, charge_cost = 1) + if(casted_magic_flags == NONE) // magic with the NONE flag is immune to blocking + return FALSE + + // A list of all things which are providing anti-magic to us + var/list/antimagic_sources = list() + var/is_magic_blocked = FALSE + + if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, casted_magic_flags, charge_cost, antimagic_sources) & COMPONENT_MAGIC_BLOCKED) + is_magic_blocked = TRUE + if(HAS_TRAIT(src, TRAIT_ANTIMAGIC)) + is_magic_blocked = TRUE + if((casted_magic_flags & MAGIC_RESISTANCE_HOLY) && HAS_TRAIT(src, TRAIT_HOLY)) + is_magic_blocked = TRUE + + if(is_magic_blocked && charge_cost > 0 && !HAS_TRAIT(src, TRAIT_RECENTLY_BLOCKED_MAGIC)) + on_block_magic_effects(casted_magic_flags, antimagic_sources) + + return is_magic_blocked + +/// Called whenever a magic effect with a charge cost is blocked and we haven't recently blocked magic. +/mob/proc/on_block_magic_effects(magic_flags, list/antimagic_sources) + return + +/mob/living/on_block_magic_effects(magic_flags, list/antimagic_sources) + ADD_TRAIT(src, TRAIT_RECENTLY_BLOCKED_MAGIC, MAGIC_TRAIT) + addtimer(CALLBACK(src, PROC_REF(remove_recent_magic_block)), 6 SECONDS) + + var/mutable_appearance/antimagic_effect + var/antimagic_color + var/atom/antimagic_source = length(antimagic_sources) ? pick(antimagic_sources) : src + + if(magic_flags & MAGIC_RESISTANCE) + visible_message( + "[src] pulses red as [ismob(antimagic_source) ? p_they() : antimagic_source] absorbs magic energy!", + "An intense magical aura pulses around [ismob(antimagic_source) ? "you" : antimagic_source] as it dissipates into the air!", + ) + antimagic_effect = mutable_appearance('icons/effects/effects.dmi', "shield-red", ABOVE_MOB_LAYER) + antimagic_color = LIGHT_COLOR_BLOOD_MAGIC + playsound(src, 'sound/magic/magic_block.ogg', 50, TRUE) + + else if(magic_flags & MAGIC_RESISTANCE_HOLY) + visible_message( + "[src] starts to glow as [ismob(antimagic_source) ? p_they() : antimagic_source] emits a halo of light!", + "A feeling of warmth washes over [ismob(antimagic_source) ? "you" : antimagic_source] as rays of light surround your body and protect you!", + ) + antimagic_effect = mutable_appearance('icons/mob/genetics.dmi', "servitude", ABOVE_MOB_LAYER) + antimagic_color = LIGHT_COLOR_HOLY_MAGIC + playsound(src, 'sound/magic/magic_block_holy.ogg', 50, TRUE) + + else if(magic_flags & MAGIC_RESISTANCE_MIND) + visible_message( + "[src] forehead shines as [ismob(antimagic_source) ? p_they() : antimagic_source] repulses magic from their mind!", + "A feeling of cold splashes on [ismob(antimagic_source) ? "you" : antimagic_source] as your forehead reflects magic usering your mind!", + ) + antimagic_effect = mutable_appearance('icons/mob/genetics.dmi', "telekinesishead", ABOVE_MOB_LAYER) + antimagic_color = LIGHT_COLOR_DARK_BLUE + playsound(src, 'sound/magic/magic_block_mind.ogg', 50, TRUE) + + mob_light(_color = antimagic_color, _range = 2, _power = 2, _duration = 5 SECONDS) + add_overlay(antimagic_effect) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), antimagic_effect), 5 SECONDS) + +/mob/living/proc/remove_recent_magic_block() + REMOVE_TRAIT(src, TRAIT_RECENTLY_BLOCKED_MAGIC, MAGIC_TRAIT) diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 74176c1a164..af6292a6284 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -366,12 +366,17 @@ var/insignia_type = /obj/item/mod/module/insignia /// Additional module we add, as a treat. var/additional_module + /// Inquisitorial module, as we have reached that point. + var/inquisitorial_module /obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin, new_core) applied_modules.Insert(1, insignia_type) if(additional_module) applied_modules += additional_module default_pins += additional_module + if(inquisitorial_module) + applied_modules += inquisitorial_module + return ..() /obj/item/mod/control/pre_equipped/responsory/commander @@ -410,9 +415,10 @@ insignia_type = /obj/item/mod/module/insignia/chaplain additional_module = /obj/item/mod/module/injector -/// Diffrent look, as well as magic proof on TG. We don't have the magic proof stuff here, but it's perfect for inqusitors. Or if you want to give your ERT a fancy look. +/// Diffrent look, as well as magic proof. It's perfect for inqusitors. Or if you want to give your ERT a fancy look. At this time, the other ones are unused, and frankly I don't like the idea of antimagic gamma. /obj/item/mod/control/pre_equipped/responsory/inquisitory applied_skin = "inquisitory" + inquisitorial_module = /obj/item/mod/module/anti_magic /obj/item/mod/control/pre_equipped/responsory/inquisitory/commander insignia_type = /obj/item/mod/module/insignia/commander diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index f33db48aa27..002de3f3b30 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -527,6 +527,24 @@ /obj/item/mod/module/energy_shield/gamma shield_icon = "shield-old" +///Magic Nullifier - Protects you from magic. +/obj/item/mod/module/anti_magic + name = "MOD magic nullifier module" + desc = "A series of obsidian rods installed into critical points around the suit, \ + vibrated at a certain low frequency to enable them to resonate. \ + This creates a low-range, yet strong, magic nullification field around the user, \ + aided by a full replacement of the suit's normal coolant with holy water. \ + Spells will spall right off this field, though it'll do nothing to help others believe you about all this." + icon_state = "magic_nullifier" + removable = FALSE + incompatible_modules = list(/obj/item/mod/module/anti_magic) + +/obj/item/mod/module/anti_magic/on_suit_activation() + ADD_TRAIT(mod.wearer, TRAIT_ANTIMAGIC, "[UID(src)]") + +/obj/item/mod/module/anti_magic/on_suit_deactivation(deleting = FALSE) + REMOVE_TRAIT(mod.wearer, TRAIT_ANTIMAGIC, "[UID(src)]") + /obj/item/mod/module/anomaly_locked/teslawall name = "MOD arc-shield module" // temp desc = "A module that uses a flux core to project an unstable protective shield." //change diff --git a/code/modules/projectiles/guns/chaos_bolt.dm b/code/modules/projectiles/guns/chaos_bolt.dm index fab8d9955f4..cd197bd8275 100644 --- a/code/modules/projectiles/guns/chaos_bolt.dm +++ b/code/modules/projectiles/guns/chaos_bolt.dm @@ -18,7 +18,8 @@ /obj/item/projectile/magic/chaos/on_hit(atom/target, blocked = 0) . = ..() - + if(!.) + return if(iswallturf(target) || isobj(target)) target.color = pick(GLOB.random_color_list) return diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index c542ffa0041..795e3176086 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -15,6 +15,7 @@ var/can_charge = TRUE var/ammo_type var/no_den_usage + var/antimagic_flags = MAGIC_RESISTANCE origin_tech = null clumsy_check = FALSE trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses magic instead @@ -31,6 +32,9 @@ return else no_den_usage = 0 + if(!user.can_cast_magic(antimagic_flags)) + to_chat(user, "[src] whizzles quietly.") + return FALSE ..() /obj/item/gun/magic/can_shoot() diff --git a/code/modules/projectiles/projectile/magic_projectiles.dm b/code/modules/projectiles/projectile/magic_projectiles.dm index 99c40d5929c..7f06491c7e9 100644 --- a/code/modules/projectiles/projectile/magic_projectiles.dm +++ b/code/modules/projectiles/projectile/magic_projectiles.dm @@ -6,6 +6,28 @@ nodamage = 1 armour_penetration_percentage = 100 flag = MAGIC + /// determines what type of antimagic can block the spell projectile + var/antimagic_flags = MAGIC_RESISTANCE + /// determines the drain cost on the antimagic item + var/antimagic_charge_cost = 1 + +/obj/item/projectile/magic/prehit(atom/target) + if(isliving(target)) + var/mob/living/victim = target + if(victim.can_block_magic(antimagic_flags, antimagic_charge_cost)) + visible_message("[src] fizzles on contact with [victim]!") + damage = 0 + nodamage = 1 + return FALSE + return ..() + +/obj/item/projectile/magic/on_hit(atom/target, blocked, hit_zone) + if(isliving(target)) + var/mob/living/victim = target + if(victim.can_block_magic(antimagic_flags, antimagic_charge_cost)) // Yes we have to check this twice welcome to bullet hell code + return FALSE + return ..() + /obj/item/projectile/magic/death name = "bolt of death" @@ -21,7 +43,7 @@ muzzle_flash_range = 2 muzzle_flash_color_override = LIGHT_COLOR_PURPLE impact_light_intensity = 7 - impact_light_range = 2.5 + impact_light_range = 2.5 impact_light_color_override = LIGHT_COLOR_PURPLE /obj/item/projectile/magic/fireball @@ -41,6 +63,8 @@ /obj/item/projectile/magic/death/on_hit(mob/living/carbon/target) . = ..() + if(!.) + return . if(isliving(target)) if(target.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead if(target.revive()) @@ -75,6 +99,8 @@ /obj/item/projectile/magic/fireball/on_hit(target) . = ..() + if(!.) + return . var/turf/T = get_turf(target) explosion(T, exp_devastate, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire) if(ismob(target)) //multiple flavors of pain @@ -95,6 +121,8 @@ /obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target) . = ..() + if(!.) + return . if(ismob(target)) if(target.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead target.death(FALSE) @@ -121,6 +149,8 @@ /obj/item/projectile/magic/teleport/on_hit(mob/target) . = ..() + if(!.) + return . var/teleammount = 0 var/teleloc = target if(!isturf(target)) @@ -142,6 +172,8 @@ /obj/item/projectile/magic/door/on_hit(atom/target) . = ..() + if(!.) + return . var/atom/T = target.loc if(isturf(target) && target.density) if(!(istype(target, /turf/simulated/wall/indestructible))) @@ -179,6 +211,8 @@ /obj/item/projectile/magic/change/on_hit(atom/change) . = ..() + if(!.) + return . wabbajack(change) GLOBAL_LIST_INIT(wabbajack_hostile_animals, list( @@ -380,6 +414,9 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list( SpinAnimation() /obj/item/projectile/magic/slipping/on_hit(atom/target, blocked = 0) + . = ..() + if(!.) + return . if(ishuman(target)) var/mob/living/carbon/human/H = target H.slip(src, slip_weaken, 0, FALSE, TRUE) //Slips even with noslips/magboots on. NO ESCAPE! @@ -394,7 +431,6 @@ GLOBAL_LIST_INIT(wabbajack_docile_animals, list( to_chat(target, "You get splatted by [src].") L.Weaken(slip_weaken) L.Stun(slip_stun) - . = ..() /obj/item/projectile/magic/arcane_barrage name = "arcane bolt" diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index b9084c82162..a96307d18a7 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -506,6 +506,7 @@ clothes_req = FALSE invocation = "none" invocation_type = "none" + antimagic_flags = NONE selection_activated_message = "You warm up your Binyat deck, there's an idle buzzing at the back of your mind as it awaits a target." selection_deactivated_message = "Your hacking deck makes an almost disappointed sounding buzz at the back of your mind as it powers down." action_icon_state = "hackerman" diff --git a/icons/mob/genetics.dmi b/icons/mob/genetics.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cb5a3df029c9c860647a97d36a548d658cdcba9d GIT binary patch literal 15533 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

cSM2_vGGT_;;LX1D+0bG21-<{0quHwo~ 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 literal 0 HcmV?d00001 diff --git a/sound/magic/magic_block_holy.ogg b/sound/magic/magic_block_holy.ogg new file mode 100644 index 0000000000000000000000000000000000000000..eb34f01a89607f9cbcfd8054f824e32f0c40182e GIT binary patch literal 36508 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 FeG!yI*W~~J literal 0 HcmV?d00001 diff --git a/sound/magic/magic_block_mind.ogg b/sound/magic/magic_block_mind.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3b824da3e4c4ef03d8bcf1c1b2023902959191e3 GIT binary patch literal 35633 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