Files
Fluffy b8902e2e16 Runtime map now loads in ~11 seconds instead of ~40, sped up various other things (#19957)
Runtime map now has a bunch of new areas / items with often-tested
stuffs, and some hard-to-put-at-runtime stuffs.
Runtime map jobs now are positioned to make it faster to reach the
aforementioned often-tested stuffs.
Runtime map doesn't generate an overmap anymore by default, which speeds
up the process.
Runtime map now loads in ~11 seconds instead of ~40 seconds as it was
before.
Updated the maploader to be faster in parsing maps.
Bapi is not engaged anymore if we're only measuring the map size, which
speeds up the process.
In fastboot we do not generate the codexes anymore, which speeds up the
process.
In fastboot and if exoplanets and away sites are not enabled, we do not
parse the map templates anymore, which speeds up the process.
Updated the icon smoothing to be faster.
Optimized cargo area code.
Other optimizations.
2024-10-06 21:31:01 +00:00

120 lines
4.0 KiB
Plaintext

#define TORNADO_COMBO "HHD"
#define THROWBACK_COMBO "DHD"
#define PLASMA_COMBO "HDDDH"
/datum/martial_art/plasma_fist
name = "Plasma Fist"
help_verb = /datum/martial_art/plasma_fist/proc/plasma_fist_help
/datum/martial_art/plasma_fist/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
if(findtext(streak,TORNADO_COMBO))
streak = ""
Tornado(A,D)
return 1
if(findtext(streak,THROWBACK_COMBO))
streak = ""
Throwback(A,D)
return 1
if(findtext(streak,PLASMA_COMBO))
streak = ""
Plasma(A,D)
return 1
return 0
/datum/martial_art/plasma_fist/proc/Tornado(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
A.say("Tornado sweep!")
TornadoAnimate(A)
var/list/thrownatoms = list()
var/atom/throwtarget
var/distfromcaster
for(var/turf/T in range(1,A))
for(var/atom/movable/AM in T)
thrownatoms += AM
for(var/am in thrownatoms)
var/atom/movable/AM = am
if(AM == A || AM.anchored)
continue
throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(AM, A)))
distfromcaster = get_dist(A, AM)
if(distfromcaster == 0)
if(istype(AM, /mob/living))
var/mob/living/M = AM
M.Weaken(5)
M.adjustBruteLoss(5)
to_chat(M, SPAN_DANGER("You're slammed into the floor by a mystical force!"))
else
if(istype(AM, /mob/living))
var/mob/living/M = AM
M.Weaken(2)
to_chat(M, SPAN_DANGER("You're thrown back by a mystical force!"))
AM.throw_at(throwtarget, ((clamp((5 - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, 5))), 1)
log_and_message_admins("used tornado sweep(Plasma Fist)", "[A]")
return
/datum/martial_art/plasma_fist/proc/Throwback(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
D.visible_message(SPAN_DANGER("[A] has hit [D] with plasma punch!"), \
SPAN_DANGER("[A] has hit [D] with plasma punch!"))
playsound(D.loc, "punch", 50, 1, -1)
var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A)))
D.throw_at(throw_target, 200, 4,A)
A.say("Plasma punch!")
log_and_message_admins("[A] used threw back (Plasma Fist) against [D]")
return
/datum/martial_art/plasma_fist/proc/Plasma(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
A.do_attack_animation(D)
playsound(D.loc, 'sound/magic/Disintegrate.ogg', 50, 1, -1)
A.say("PLASMA FIST!")
D.visible_message(SPAN_DANGER("[A] has hit [D] with the plasma fist technique!"), \
SPAN_DANGER("[A] has hit [D] with the plasma fist technique!"))
D.gib()
log_and_message_admins("[A] gibbed [D] with the plasma fist (Plasma Fist)")
return
/datum/martial_art/plasma_fist/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
add_to_streak("H",D)
if(check_streak(A,D))
return 1
basic_hit(A,D)
return 1
/datum/martial_art/plasma_fist/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
add_to_streak("D",D)
if(check_streak(A,D))
return 1
basic_hit(A,D)
return 1
/datum/martial_art/plasma_fist/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
add_to_streak("G",D)
if(check_streak(A,D))
return 1
basic_hit(A,D)
return 1
/datum/martial_art/plasma_fist/proc/plasma_fist_help()
set name = "Recall Plasma Fist"
set desc = "Remember the martial techniques of the Plasma Fist."
set category = "Abilities"
to_chat(usr, "<b><i>You clench your fists and have a flashback of knowledge...</i></b>")
to_chat(usr, "<span class='notice'>Tornado Sweep</span>: Harm Harm Disarm. Repulses target and everyone back.")
to_chat(usr, "<span class='notice'>Throwback</span>: Disarm Harm Disarm. Throws the target and an item at them.")
to_chat(usr, "<span class='notice'>The Plasma Fist</span>: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.")
/obj/item/martial_manual/plasma_fist
name = "frayed scroll"
desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism."
icon_state = "scroll"
item_state = "scroll"
martial_art = /datum/martial_art/plasma_fist
#undef TORNADO_COMBO
#undef THROWBACK_COMBO
#undef PLASMA_COMBO