Basic Wizards (#79476)

## About The Pull Request

Makes NPC wizard mobs into basic mobs. These aren't actually used
anywhere, since their away mission was removed, so I figured I'd have
some fun with them.


![image](https://github.com/tgstation/tgstation/assets/105025397/901f3a92-74a3-492b-8435-43813ad2afa8)

Noteworthy changes are as follows:
- Wizard mobs can now wear any of the four basic colors of wizard robe
and hat. Rarely, they will wear the witch ("Marisa") outfit instead.
There was going to be a rare Tape Wizard spawn too, but the outfit
doesn't work correctly for some reason (see comments below).
- Wizard mobs no longer have a set spell loadout. Instead, they always
receive a random **targeted, primary spell**, a random **untargeted,
secondary spell**, and the spell **Blink**.
- Wizard subtypes (or var-edited wizards) can have any of the above
specified rather than random.
- Wizard AI will try to avoid ever being in melee, and will fire off
spells whenever possible with the priority order of primary > secondary
> blink. There is a mandatory 1-second waiting period between casts.
- Wizard mobs use "lesser" versions of Fireball and Blink. Lesser
Fireball does a little less damage and has a smaller explosion, though
it is still extremely dangerous. Lesser Blink simply has a smaller blink
radius so that wizard mobs don't just decide to leave.

Depending on their spell loadout, wizards can be _incredibly_ dangerous
mobs - stunning you with tesla blasts, shooting you with fireballs, and
more. Even weakened, fireball is the nastiest of these by far, able to
set you on fire or remove your limbs if you aren't properly protected.
Watch out!

The random lists have been kept pretty small, since I only wanted to use
spells that I know for sure work. Spell cards is pretty weak in AI
hands, since they don't take advantage of the fact that a human player
can spam it, but I wanted there to be a little variety in primary
attacks.

I included an UpdatePaths script here in case a downstream is using
these, but I doubt it was necessary.
## Why It's Good For The Game

Removes another simplemob.

The actual impact of this change is negligible, since this is an unused
mob, but it's possible that this lays the groundwork for these actually
being used - particularly since mappers can make them as powerful or
weak as they want by specifying a spell loadout. Wizards may make for a
tough boss challenge for a ruin or away mission, or a very mean surprise
for an admin to drop on an unsuspecting station.
## Changelog
As this is an unused mob, there are no player-facing changes.
This commit is contained in:
lizardqueenlexi
2023-11-04 16:22:19 +00:00
committed by GitHub
parent 9dba26fdf6
commit 07f2214ac4
10 changed files with 212 additions and 81 deletions
@@ -221,6 +221,21 @@
facial_haircolor = COLOR_WHITE
skin_tone = "caucasian1"
/obj/effect/mob_spawn/corpse/human/wizard/red
outfit = /datum/outfit/wizardcorpse/red
/obj/effect/mob_spawn/corpse/human/wizard/yellow
outfit = /datum/outfit/wizardcorpse/yellow
/obj/effect/mob_spawn/corpse/human/wizard/black
outfit = /datum/outfit/wizardcorpse/black
/obj/effect/mob_spawn/corpse/human/wizard/marisa
outfit = /datum/outfit/wizardcorpse/marisa
/obj/effect/mob_spawn/corpse/human/wizard/tape
outfit = /datum/outfit/wizardcorpse/tape
/datum/outfit/wizardcorpse
name = "Space Wizard Corpse"
uniform = /obj/item/clothing/under/color/lightpurple
@@ -228,6 +243,27 @@
shoes = /obj/item/clothing/shoes/sandal/magic
head = /obj/item/clothing/head/wizard
/datum/outfit/wizardcorpse/red
suit = /obj/item/clothing/suit/wizrobe/red
head = /obj/item/clothing/head/wizard/red
/datum/outfit/wizardcorpse/yellow
suit = /obj/item/clothing/suit/wizrobe/yellow
head = /obj/item/clothing/head/wizard/yellow
/datum/outfit/wizardcorpse/black
suit = /obj/item/clothing/suit/wizrobe/black
head = /obj/item/clothing/head/wizard/black
/datum/outfit/wizardcorpse/marisa
suit = /obj/item/clothing/suit/wizrobe/marisa
head = /obj/item/clothing/head/wizard/marisa
shoes = /obj/item/clothing/shoes/sneakers/marisa
/datum/outfit/wizardcorpse/tape
suit = /obj/item/clothing/suit/wizrobe/tape
head = /obj/item/clothing/head/wizard/tape
/obj/effect/mob_spawn/corpse/human/wizard/dark
name = "Dark Wizard Corpse"
outfit = /datum/outfit/wizardcorpse/dark