Files
Aurora.3/code/modules/spells/monster_manual.dm
Alberyk ed6dbee896 Bay wizard port/rework (#1635)
Ports the newest bay wizard version, with some additions and changes.

General changes:
-ported the newest bay wizard
-wizards can select some school of magic, which also changes their spell selection as whole.
-added several new spells, like raise dead, contracts that bind the person with the wizard, and more.
-added wands, limited sources of certain types of effects/spell, also with their own bad effects for non wizards
-changed the wizard checks to a faction check instead of a mind check
-fixed wizards without certain slots due to race being fucked over due to it
-added new artifacts
-balanced some spells like the emp
-added a lot of new sounds to spell, mostly from tg
-remove horse mask from spell selection, also, you can melt the mask with acid now
-wizard's spell are now displayed at round end like traitors and what they did buy
-also fixes vaurca, and vox, antags spawning without a mask by default
2017-02-07 18:45:42 +02:00

98 lines
3.6 KiB
Plaintext

/obj/item/weapon/monster_manual
name = "bestiarum"
desc = "A book detailing various magical creatures."
icon = 'icons/obj/library.dmi'
icon_state = "bookHacking"
throw_speed = 1
throw_range = 5
w_class = 2
var/uses = 1
var/temp = null
var/list/monster = list(/mob/living/simple_animal/familiar/pet/cat,
/mob/living/simple_animal/familiar/pet/mouse,
/mob/living/simple_animal/familiar/carcinus,
/mob/living/simple_animal/familiar/horror,
/mob/living/simple_animal/familiar/goat,
/mob/living/simple_animal/familiar/pike
)
var/list/monster_info = list( "It is well known that the blackest of cats make good familiars.",
"Mice are full of mischief and magic. A simple animal, yes, but one of the wizard's finest.",
"A mortal decendant of the original Carcinus, it is said their shells are near impenetrable and their claws as sharp as knives.",
"A creature from other plane, its very own presence is enough to shatter the sanity of men.",
"A magical goat known for its healing powers and nearly-pacifist ways.",
"The more carnivorous and knowledge hungry cousin of the space carp. Keep away from books."
)
/obj/item/weapon/monster_manual/attack_self(mob/user as mob)
if(!user)
return
if(!(user.faction == "Space Wizard"))
user <<"<span class='warning'>When you try to open the book, horrors pours out from among the pages!</span>"
new /mob/living/simple_animal/hostile/creature(user.loc)
playsound(user, 'sound/magic/Summon_Karp.ogg', 100, 1)
return
else
user.set_machine(src)
interact(user)
/obj/item/weapon/monster_manual/interact(mob/user as mob)
var/dat
if(temp)
dat = "[temp]<br><a href='byond://?src=\ref[src];temp=1'>Return</a>"
else
dat = "<center><h3>bestiarum</h3>You have [uses] uses left.</center>"
for(var/i=1;i<=monster_info.len;i++)
var/mob/M = monster[i]
var/name = capitalize(initial(M.name))
dat += "<BR><a href='byond://?src=\ref[src];path=[monster[i]]'>[name]</a> - [monster_info[i]]</BR>"
user << browse(dat,"window=monstermanual")
onclose(user,"monstermanual")
/obj/item/weapon/monster_manual/Topic(href, href_list)
..()
if(!Adjacent(usr))
usr << browse(null,"window=monstermanual")
return
if(href_list["temp"])
temp = null
if(href_list["path"])
if(uses == 0)
usr << "This book is out of uses."
return
var/client/C = get_player()
if(!C)
usr << "There are no souls willing to become a familiar."
return
var path = text2path(href_list["path"])
if(!ispath(path))
usr << "Invalid mob path in [src]. Contact a coder."
return
var/mob/living/simple_animal/familiar/F = new path(get_turf(src))
F.ckey = C.ckey
F.faction = usr.faction
F.add_spell(new /spell/contract/return_master(usr),"const_spell_ready")
if(C.mob && C.mob.mind)
C.mob.mind.transfer_to(F)
F << "<B>You are [F], a familiar to [usr]. He is your master and your friend. Aid him in his wizarding duties to the best of your ability.</B>"
var/newname = input(F,"Please choose a name. Leaving it blank or canceling will choose the default.", "Name",F.name) as null|text
if(newname)
F.name = newname
temp = "You have summoned \the [F]"
uses--
if(Adjacent(usr))
src.interact(usr)
else
usr << browse(null,"window=monstermanual")
/obj/item/weapon/monster_manual/proc/get_player()
for(var/mob/O in dead_mob_list)
if(O.client)
var/getResponse = alert(O,"A wizard is requesting a familiar. Would you like to play as one?", "Wizard familiar summons","Yes","No")
if(getResponse == "Yes")
return O.client
return null