Files
Bubberstation/code/__DEFINES/magic.dm
Tim b1a793f840 Refactor and improve antimagic to be more robust (#64124)
This refactors the antimagic component to use and have bitflags, documentation, defines, code comments, named arguments, and renames variable names for clarity. 

- /obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult is not used anywhere and has been removed
- /obj/effect/proc_holder/spell/targeted/turf_teleport/blink/cult is not used anywhere and has been removed

- New sound effects are played when magic is blocked. Depending on the type of magic being used it will be either:

- Equipping antimagic now properly updates the magic buttons
- Any magic being blocked or restricting casting now displays a message
- MAGIC_RESISTANCE_MIND now properly blocks telepathy effects
- Removes blood splatter when fireball is blocked
- Magic projectiles for staff of locker no longer spawn lockers when blocked by antimagic
- Fire breath is no longer blocked by antimagic
- Spellcards are now blocked by antimagic

Any antimagic on a mob blocks that magic type from being casted. (certain spells such as mime abilities completely ignore antimagic)

- Foilhats prevent someone from casting mind magic (telepathy, mindswap, etc.)
- Bibles, ritual Totems, nullrods, holymelons, and TRAIT_HOLY prevent someone from casting unholy magic (cult spells, etc.)
- Nullrods, ritual totem, and holymelons prevent someone from casting wizard magic (fireball, magic missile, etc.)
- Immorality talismans, berserker suits, and TRAIT_ANTIMAGIC prevents all types of magic (except stuff like mime abilities)
- Touch of Madness and Mindswap is now blocked with MAGIC_RESISTANCE and MAGIC_RESISTANCE_MIND
- Voice of god is now blocked with MAGIC_RESISTANCE_HOLY and MAGIC_RESISTANCE_MIND
2022-04-08 20:04:09 -05:00

38 lines
1.9 KiB
Plaintext

//schools of magic - unused for years and years on end, finally has a use with chaplains getting punished for using "evil" spells
//use this if your spell isn't actually a spell, it's set by default (and actually, i really suggest if that's the case you should use datum/actions instead - see spider.dm for an example)
#define SCHOOL_UNSET "unset"
//GOOD SCHOOLS (allowed by honorbound gods, some of these you can get on station)
#define SCHOOL_HOLY "holy"
#define SCHOOL_MIME "mime"
#define SCHOOL_RESTORATION "restoration" //heal shit
//NEUTRAL SPELLS (punished by honorbound gods if you get caught using it)
#define SCHOOL_EVOCATION "evocation" //kill or destroy shit, usually out of thin air
#define SCHOOL_TRANSMUTATION "transmutation" //transform shit
#define SCHOOL_TRANSLOCATION "translocation" //movement based
#define SCHOOL_CONJURATION "conjuration" //summoning
//EVIL SPELLS (instant smite + banishment)
#define SCHOOL_NECROMANCY "necromancy" //>>>necromancy
#define SCHOOL_FORBIDDEN "forbidden" //>heretic shit and other fucked up magic
//invocation types - what does the wizard need to do to invoke (cast) the spell?
///Allows being able to cast the spell without saying anything.
#define INVOCATION_NONE "none"
///Forces the wizard to shout (and be able to) to cast the spell.
#define INVOCATION_SHOUT "shout"
///Forces the wizard to emote (and be able to) to cast the spell.
#define INVOCATION_EMOTE "emote"
///Forces the wizard to whisper (and be able to) to cast the spell.
#define INVOCATION_WHISPER "whisper"
/// 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 curses, abductors, jelly people)
#define MAGIC_RESISTANCE_MIND (1<<1)
/// Holy magic resistance that blocks unholy magic (revenant, cult, vampire, voice of god)
#define MAGIC_RESISTANCE_HOLY (1<<2)