mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Wizard Update Part 1
- Wands will no longer display a missing sprite if you try to fire one while it is drained. (Only change that wasn't ported from /tg/) - When using a staff of change on somebody, you can now turn them into a goat or space bats, and when turning them into a cyborg, there is a chance of that cyborg being a syndicate cyborg. - Ports over page-based UI for the Wizard's spellbook from /tg/. - Ports over the Wand Belt, Staff of Chaos, and Staff of Door Creation from /tg/. The Wand Belt contains several useful wands, however all of them have limited charges. The Staff of Chaos will cause a different projectile spell effect each time it is cast, and can currently imitate any of the wands. The Staff of Door creation will create wooden doors over any solid turf they contact, doing so removes said turf. - Mind swap will no longer remove spells from the wizard due to RNG. - The charge spell will no longer damage the charge of weapons that normally recharge by themselves. - Adds Staff of Door Creation to the Summon Magic list, removes the staff of change from the normal Summon Magic list and makes it part of the special list - If Summon Magic rolls to create an item on the special list, it will create that item once, and will no longer create anything else from the special list. (List consists of the Staff of Change, Staff of Animation, Wand Belt, Staff of Chaos, and Contract).
This commit is contained in:
@@ -34,3 +34,28 @@ obj/item/weapon/gun/magic/staff/healing
|
||||
icon_state = "staffofhealing"
|
||||
item_state = "staffofhealing"
|
||||
max_charges = 8 //8, 4, 4, 3
|
||||
|
||||
obj/item/weapon/gun/magic/staff/chaos
|
||||
name = "staff of chaos"
|
||||
desc = "An artefact that spits bolts of chaotic magic that can potentially do anything."
|
||||
projectile_type = "/obj/item/projectile/magic"
|
||||
icon_state = "staffofhealing"
|
||||
item_state = "staffofhealing"
|
||||
max_charges = 10
|
||||
recharge_rate = 2
|
||||
|
||||
/obj/item/weapon/gun/magic/staff/chaos/process_chambered() //Snowflake proc, because this uses projectile_type instead of ammo_casing for whatever reason.
|
||||
projectile_type = pick(typesof(/obj/item/projectile/magic))
|
||||
if(in_chamber) return 1
|
||||
if(!charges) return 0
|
||||
in_chamber = new projectile_type(src)
|
||||
return 1
|
||||
|
||||
obj/item/weapon/gun/magic/staff/door
|
||||
name = "staff of door creation"
|
||||
desc = "An artefact that spits bolts of transformative magic that can create doors in walls."
|
||||
projectile_type = "/obj/item/projectile/magic/door"
|
||||
icon_state = "staffofhealing"
|
||||
item_state = "staffofhealing"
|
||||
max_charges = 10
|
||||
recharge_rate = 2
|
||||
@@ -8,6 +8,7 @@
|
||||
can_charge = 0
|
||||
max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths)
|
||||
var/variable_charges = 1
|
||||
var/drained = false
|
||||
|
||||
/obj/item/weapon/gun/magic/wand/New()
|
||||
if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges
|
||||
@@ -35,9 +36,10 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob)
|
||||
if(!charges)
|
||||
if(!charges && !drained)
|
||||
user << "<span class='warning'>The [name] whizzles quietly.<span>"
|
||||
icon_state = "[icon_state]-drained"
|
||||
drained = true
|
||||
return
|
||||
if(target == user)
|
||||
zap_self(user)
|
||||
|
||||
@@ -151,7 +151,10 @@ proc/wabbajack(mob/living/M)
|
||||
new_mob = new /mob/living/carbon/monkey(M.loc)
|
||||
new_mob.universal_speak = 1
|
||||
if("robot")
|
||||
new_mob = new /mob/living/silicon/robot(M.loc)
|
||||
if(prob(30))
|
||||
new_mob = new /mob/living/silicon/robot/syndicate(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/silicon/robot(M.loc)
|
||||
new_mob.gender = M.gender
|
||||
new_mob.invisibility = 0
|
||||
new_mob.job = "Cyborg"
|
||||
@@ -179,12 +182,14 @@ proc/wabbajack(mob/living/M)
|
||||
new_mob.universal_speak = 1*/
|
||||
if("animal")
|
||||
if(prob(50))
|
||||
var/beast = pick("carp","bear","mushroom","statue")
|
||||
var/beast = pick("carp","bear","mushroom","statue", "bat", "goat")
|
||||
switch(beast)
|
||||
if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc)
|
||||
if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc)
|
||||
if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc)
|
||||
if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc)
|
||||
if("bat") new_mob = new /mob/living/simple_animal/hostile/scarybat(M.loc)
|
||||
if("goat") new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc)
|
||||
else
|
||||
var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick","fox")
|
||||
switch(animal)
|
||||
@@ -217,6 +222,9 @@ proc/wabbajack(mob/living/M)
|
||||
for (var/obj/effect/proc_holder/spell/wizard/S in M.spell_list)
|
||||
new_mob.spell_list += new S.type
|
||||
|
||||
new_mob.attack_log = M.attack_log
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>[M.real_name] ([M.ckey]) became [new_mob.real_name].</font>")
|
||||
|
||||
new_mob.a_intent = "harm"
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_mob)
|
||||
@@ -241,15 +249,16 @@ proc/wabbajack(mob/living/M)
|
||||
if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects))
|
||||
if(istype(change, /obj/structure/closet/statue))
|
||||
for(var/mob/living/carbon/human/H in change.contents)
|
||||
var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc)
|
||||
var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc, firer)
|
||||
S.name = "statue of [H.name]"
|
||||
S.faction = list("\ref[firer]")
|
||||
S.icon = change.icon
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(S)
|
||||
S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator."
|
||||
del(H)
|
||||
del(change)
|
||||
S << "You are an animated statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator."
|
||||
H = change
|
||||
H.loc = S
|
||||
del(src)
|
||||
else
|
||||
var/obj/O = change
|
||||
new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer)
|
||||
|
||||
Reference in New Issue
Block a user