mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-22 16:12:19 +00:00
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
212 lines
5.6 KiB
Plaintext
212 lines
5.6 KiB
Plaintext
/obj/item/projectile/ion
|
|
name = "ion bolt"
|
|
icon_state = "ion"
|
|
damage = 0
|
|
damage_type = BURN
|
|
nodamage = 1
|
|
check_armour = "energy"
|
|
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)
|
|
empulse(target, 1, 1)
|
|
return 1
|
|
|
|
|
|
/obj/item/projectile/bullet/gyro
|
|
name ="explosive bolt"
|
|
icon_state= "bolter"
|
|
damage = 50
|
|
check_armour = "bullet"
|
|
sharp = 1
|
|
edge = 1
|
|
|
|
on_impact(var/atom/A)
|
|
explosion(A, -1, 0, 2)
|
|
..()
|
|
|
|
/obj/item/projectile/bullet/gyro/law
|
|
name ="high-ex round"
|
|
icon_state= "bolter"
|
|
damage = 15
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)
|
|
explosion(target, -1, 0, 2)
|
|
sleep(0)
|
|
var/obj/T = target
|
|
var/throwdir = get_dir(firer,target)
|
|
T.throw_at(get_edge_target_turf(target, throwdir),3,3)
|
|
return 1
|
|
|
|
/obj/item/projectile/temp
|
|
name = "freeze beam"
|
|
icon_state = "ice_2"
|
|
damage = 0
|
|
damage_type = BURN
|
|
nodamage = 1
|
|
check_armour = "energy"
|
|
//var/temperature = 300
|
|
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)//These two could likely check temp protection on the mob
|
|
if(istype(target, /mob/living))
|
|
var/mob/M = target
|
|
M.bodytemperature = -273
|
|
return 1
|
|
|
|
/obj/item/projectile/meteor
|
|
name = "meteor"
|
|
icon = 'icons/obj/meteor.dmi'
|
|
icon_state = "smallf"
|
|
damage = 0
|
|
damage_type = BRUTE
|
|
nodamage = 1
|
|
check_armour = "bullet"
|
|
|
|
Bump(atom/A as mob|obj|turf|area)
|
|
if(A == firer)
|
|
loc = A.loc
|
|
return
|
|
|
|
sleep(-1) //Might not be important enough for a sleep(-1) but the sleep/spawn itself is necessary thanks to explosions and metoerhits
|
|
|
|
if(src)//Do not add to this if() statement, otherwise the meteor won't delete them
|
|
if(A)
|
|
|
|
A.ex_act(2)
|
|
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
|
|
|
|
for(var/mob/M in range(10, src))
|
|
if(!M.stat && !istype(M, /mob/living/silicon/ai))\
|
|
shake_camera(M, 3, 1)
|
|
qdel(src)
|
|
return 1
|
|
else
|
|
return 0
|
|
|
|
/obj/item/projectile/energy/floramut
|
|
name = "alpha somatoray"
|
|
icon_state = "energy"
|
|
damage = 0
|
|
damage_type = TOX
|
|
nodamage = 1
|
|
check_armour = "energy"
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)
|
|
var/mob/living/M = target
|
|
if(ishuman(target))
|
|
var/mob/living/carbon/human/H = M
|
|
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
|
|
if(prob(15))
|
|
M.apply_effect((rand(30,80)),IRRADIATE)
|
|
M.Weaken(5)
|
|
for (var/mob/V in viewers(src))
|
|
V.show_message("\red [M] writhes in pain as \his vacuoles boil.", 3, "\red You hear the crunching of leaves.", 2)
|
|
if(prob(35))
|
|
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
|
|
// V.show_message("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2)
|
|
if(prob(80))
|
|
randmutb(M)
|
|
domutcheck(M,null)
|
|
else
|
|
randmutg(M)
|
|
domutcheck(M,null)
|
|
else
|
|
M.adjustFireLoss(rand(5,15))
|
|
M.show_message("\red The radiation beam singes you!")
|
|
// for (var/mob/V in viewers(src))
|
|
// V.show_message("\red [M] is singed by the radiation beam.", 3, "\red You hear the crackle of burning leaves.", 2)
|
|
else if(istype(target, /mob/living/carbon/))
|
|
// for (var/mob/V in viewers(src))
|
|
// V.show_message("The radiation beam dissipates harmlessly through [M]", 3)
|
|
M.show_message("\blue The radiation beam dissipates harmlessly through your body.")
|
|
else
|
|
return 1
|
|
|
|
/obj/item/projectile/energy/florayield
|
|
name = "beta somatoray"
|
|
icon_state = "energy2"
|
|
damage = 0
|
|
damage_type = TOX
|
|
nodamage = 1
|
|
check_armour = "energy"
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)
|
|
var/mob/M = target
|
|
if(ishuman(target)) //These rays make plantmen fat.
|
|
var/mob/living/carbon/human/H = M
|
|
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
|
|
M.nutrition += 30
|
|
else if (istype(target, /mob/living/carbon/))
|
|
M.show_message("\blue The radiation beam dissipates harmlessly through your body.")
|
|
else
|
|
return 1
|
|
|
|
|
|
/obj/item/projectile/beam/mindflayer
|
|
name = "flayer ray"
|
|
|
|
on_hit(var/atom/target, var/blocked = 0)
|
|
if(ishuman(target))
|
|
var/mob/living/carbon/human/M = target
|
|
M.adjustBrainLoss(5)
|
|
M.hallucination += 20
|
|
|
|
/obj/item/projectile/bullet/trod
|
|
name ="tungsten rod"
|
|
icon_state= "gauss"
|
|
damage = 75
|
|
check_armour = "bomb"
|
|
sharp = 1
|
|
edge = 1
|
|
|
|
on_impact(var/atom/A)
|
|
explosion(A, 0, 0, 4)
|
|
..()
|
|
|
|
/obj/item/projectile/chameleon
|
|
name = "bullet"
|
|
icon_state = "bullet"
|
|
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
|
|
embed = 0 // nope
|
|
nodamage = 1
|
|
damage_type = HALLOSS
|
|
muzzle_type = /obj/effect/projectile/bullet/muzzle
|
|
|
|
//magic
|
|
|
|
/obj/item/projectile/magic
|
|
name = "bolt of nothing"
|
|
icon = 'icons/obj/projectiles.dmi'
|
|
icon_state = "spell"
|
|
damage = 0
|
|
check_armour = "energy"
|
|
embed = 0
|
|
damage_type = HALLOSS
|
|
|
|
/obj/item/projectile/magic/fireball
|
|
name = "fireball"
|
|
icon_state = "fireball"
|
|
damage = 20
|
|
damage_type = BURN
|
|
|
|
/obj/item/projectile/magic/fireball/on_impact(var/atom/A)
|
|
explosion(A, 0, 0, 4)
|
|
..()
|
|
|
|
/obj/item/projectile/magic/teleport //literaly bluespace crystal code, because i am lazy and it seems to work
|
|
name = "bolt of teleportation"
|
|
icon = 'icons/obj/projectiles.dmi'
|
|
icon_state = "energy2"
|
|
var/blink_range = 8
|
|
|
|
/obj/item/projectile/magic/teleport/on_hit(var/atom/hit_atom)
|
|
var/turf/T = get_turf(hit_atom)
|
|
single_spark(T)
|
|
playsound(src.loc, "sparks", 50, 1)
|
|
if(isliving(hit_atom))
|
|
blink_mob(hit_atom)
|
|
return ..()
|
|
|
|
/obj/item/projectile/magic/teleport/proc/blink_mob(mob/living/L)
|
|
do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg')
|