Just fuck my shit up fam

This commit is contained in:
as334
2015-11-29 13:48:58 -05:00
181 changed files with 3361 additions and 1092 deletions
@@ -429,7 +429,7 @@
if (WT.remove_fuel(0, user)) //The welder has 1u of fuel consumed by it's afterattack, so we don't need to worry about taking any away.
if(src == user)
user << "<span class='notice'>You start fixing youself...</span>"
if(!do_after(user, 50, target = src))
if(!do_after(user, 50/W.toolspeed, target = src))
return
adjustBruteLoss(-30)
@@ -510,7 +510,7 @@
else
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You start to unfasten [src]'s securing bolts...</span>"
if(do_after(user, 50, target = src) && !cell)
if(do_after(user, 50/W.toolspeed, target = src) && !cell)
user.visible_message("[user] deconstructs [src]!", "<span class='notice'>You unfasten the securing bolts, and [src] falls to pieces!</span>")
deconstruct()
@@ -154,4 +154,11 @@
corpsehelmet = /obj/item/clothing/head/bearpelt
/obj/effect/landmark/mobcorpse/russian/ranged
corpsehelmet = /obj/item/clothing/head/ushanka
corpsehelmet = /obj/item/clothing/head/ushanka
/obj/effect/landmark/mobcorpse/wizard
name = "Space Wizard"
corpseuniform = /obj/item/clothing/under/color/lightpurple
corpsesuit = /obj/item/clothing/suit/wizrobe
corpseshoes = /obj/item/clothing/shoes/sandal
corpsehelmet = /obj/item/clothing/head/wizard
@@ -98,7 +98,7 @@
if(istype(I, /obj/item/weapon/screwdriver) && stat != DEAD)
if(health < maxHealth)
user << "<span class='notice'>You start to tighten loose screws on [src]...</span>"
if(do_after(user,80,target=user))
if(do_after(user,80/I.toolspeed,target=user))
adjustBruteLoss(-getBruteLoss())
visible_message("<span class='notice'>[user] tightens [src == user ? "their" : "[src]'s"] loose screws!</span>", "<span class='notice'>You tighten [src == user ? "your" : "[src]'s"] loose screws.</span>")
else
@@ -110,7 +110,7 @@
user.visible_message("<span class='notice'>[user] starts resetting [src]...</span>", \
"<span class='notice'>You press down on [src]'s factory reset control...</span>")
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
if(!do_after(user, 50, target = src))
if(!do_after(user, 50/I.toolspeed, target = src))
return
user.visible_message("<span class='notice'>[user] resets [src]!</span>", \
"<span class='notice'>You reset [src]'s directives to factory defaults!</span>")
@@ -156,6 +156,33 @@
log_say("[src.real_name]/[src.key] : [text]")
/mob/living/proc/guardian_recall()
set name = "Recall Guardian"
set category = "Guardian"
set desc = "Forcibly recall your guardian."
for(var/mob/living/simple_animal/hostile/guardian/G in mob_list)
if(G.summoner == src)
G.Recall()
/mob/living/proc/guardian_reset()
set name = "Reset Guardian Player (One Use)"
set category = "Guardian"
set desc = "Re-rolls which ghost will control your Guardian. One use."
for(var/mob/living/simple_animal/hostile/guardian/G in mob_list)
if(G.summoner == src)
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100)
var/mob/dead/observer/new_stand = null
if(candidates.len)
new_stand = pick(candidates)
G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance."
src << "Your guardian has been successfully reset."
message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])")
G.ghostize()
G.key = new_stand.key
src.verbs -= /mob/living/proc/guardian_reset
else
src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now."
/mob/living/simple_animal/hostile/guardian/proc/ToggleLight()
if(!luminosity)
SetLuminosity(3)
@@ -598,6 +625,8 @@
G << "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself."
G << "[G.playstyle_string]"
user.verbs += /mob/living/proc/guardian_comm
user.verbs += /mob/living/proc/guardian_recall
user.verbs += /mob/living/proc/guardian_reset
switch (theme)
if("magic")
G.name = "[mob_name] [capitalize(picked_color)]"
@@ -80,7 +80,7 @@
if(!origin.changeling)
M.make_changeling()
if(origin.changeling.can_absorb_dna(M, owner))
origin.changeling.add_profile(owner, M)
origin.changeling.add_new_profile(owner, M)
origin.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
M.key = origin.key
@@ -163,7 +163,7 @@
clothes_req = 0
range = 14
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets,mob/user = usr)
for(var/turf/T in targets)
for(var/obj/machinery/light/L in T)
L.flicker()
@@ -179,7 +179,7 @@
clothes_req = 0
range = 10
/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets,mob/user = usr)
for(var/mob/living/L in living_mob_list)
var/turf/T = get_turf(L.loc)
if(T && T in targets)
@@ -198,7 +198,7 @@
range = -1
include_user = 1
/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets,mob/user = usr)
for(var/mob/living/target in targets)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
@@ -0,0 +1,79 @@
/mob/living/simple_animal/hostile/wizard
name = "Space Wizard"
desc = "EI NATH?"
icon_state = "wizard"
icon_living = "wizard"
icon_dead = "wizard_dead"
speak_chance = 0
turns_per_move = 3
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
speed = 0
maxHealth = 100
health = 100
harm_intent_damage = 5
melee_damage_lower = 5
melee_damage_upper = 5
attacktext = "punches"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = "harm"
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 15
faction = list("wizard")
status_flags = CANPUSH
retreat_distance = 3 //out of fireball range
minimum_distance = 3
var/obj/effect/proc_holder/spell/dumbfire/fireball/fireball = null
var/obj/effect/proc_holder/spell/targeted/turf_teleport/blink/blink = null
var/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/mm = null
var/next_cast = 0
/mob/living/simple_animal/hostile/wizard/New()
..()
fireball = new /obj/effect/proc_holder/spell/dumbfire/fireball
fireball.clothes_req = 0
fireball.human_req = 0
fireball.player_lock = 0
AddSpell(fireball)
mm = new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
mm.clothes_req = 0
mm.human_req = 0
mm.player_lock = 0
AddSpell(mm)
blink = new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink
blink.clothes_req = 0
blink.human_req = 0
blink.player_lock = 0
blink.outer_tele_radius = 3
AddSpell(blink)
/mob/living/simple_animal/hostile/wizard/death(gibbed)
..(gibbed)
new /obj/effect/landmark/mobcorpse/wizard(src.loc)
new /obj/item/weapon/staff(src.loc)
qdel(src)
return
/mob/living/simple_animal/hostile/wizard/handle_automated_action()
. = ..()
if(target && next_cast < world.time)
if((get_dir(src,target) in list(SOUTH,EAST,WEST,NORTH)) && fireball.cast_check(0,src)) //Lined up for fireball
src.dir = get_dir(src,target)
fireball.choose_targets(src)
next_cast = world.time + 10 //One spell per second
return .
if(mm.cast_check(0,src))
mm.choose_targets(src)
next_cast = world.time + 10
return .
if(blink.cast_check(0,src)) //Spam Blink when you can
blink.choose_targets(src)
next_cast = world.time + 10
return .