mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 09:35:30 +01:00
Just fuck my shit up fam
This commit is contained in:
@@ -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 .
|
||||
Reference in New Issue
Block a user