Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xeno fix for event #2823

Merged
merged 14 commits into from
May 20, 2024
4 changes: 4 additions & 0 deletions code/modules/mob/living/carbon/alien/alien.dm
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,7 @@
/mob/living/carbon/alien/on_standing_up()
. = ..()
update_icons()

/mob/living/carbon/alien/examine(mob/user)
. = ..()
. += "It's a strange creature."
FalloutFalcon marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ Doesn't work on other aliens/AI.*/

/obj/effect/proc_holder/alien/sneak/fire(mob/living/carbon/alien/humanoid/user)
if(!active)
user.alpha = 25
user.alpha = 150
user.sneaking = TRUE
active = TRUE
to_chat(user, "<span class='noticealien'>You blend into the shadows...</span>")
Expand Down
6 changes: 2 additions & 4 deletions code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@
return

else //Maybe uses plasma in the future, although that wouldn't make any sense...
leaping = 1
weather_immunities += "lava"
leaping = TRUE
update_icons()
throw_at(leap_target, MAX_ALIEN_LEAP_DIST, 2, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(leap_end)))

Expand All @@ -115,7 +114,6 @@
* the icons of the hunter.
*/
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
leaping = 0
LAZYREMOVE(weather_immunities, "lava")
leaping = FALSE
update_icons()

3 changes: 2 additions & 1 deletion code/modules/mob/living/carbon/alien/special/alien_embryo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@

if(gib_on_success)
new_xeno.visible_message("<span class='danger'>[new_xeno] bursts out of [owner] in a shower of gore!</span>", "<span class='userdanger'>You exit [owner], your previous host.</span>", "<span class='hear'>You hear organic matter ripping and tearing!</span>")
owner.gib()
owner.adjustBruteLoss(200)
owner.cut_overlay(overlay)
else
new_xeno.visible_message("<span class='danger'>[new_xeno] wriggles out of [owner]!</span>", "<span class='userdanger'>You exit [owner], your previous host.</span>")
owner.adjustBruteLoss(40)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/alien/special/facehugger.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
/// Whether or not this facehugger can actually impregnate targets
var/sterile = FALSE
/// How long it takes for a facehugger to impregnate a target once attached
var/pregnation_time = 10 SECONDS
var/pregnation_time = 5 SECONDS
/// How long it takes between coupling attempts
var/couple_retry_time = 15 SECONDS
/// The mob's internal mask version, stored within the mob when the facehugger isn't being used as an item.
Expand Down
48 changes: 24 additions & 24 deletions code/modules/mob/living/carbon/human/human_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -284,30 +284,30 @@
return TRUE
apply_damage(damage, BRUTE, affecting, armor_block)

if(M.a_intent == INTENT_DISARM) //Always drop item in hand on first go. If no item exists, try to shove them back. If you share the tile with the target, slam them directly into the ground to stun them and slightly damage them.
var/obj/item/I = get_active_held_item()
if(I && dropItemToGround(I))
playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] disarms [src]!</span>", \
"<span class='userdanger'>[M] disarms you!</span>", "<span class='hear'>You hear aggressive shuffling!</span>", null, M)
to_chat(M, "<span class='danger'>You disarm [src]!</span>")
else if(get_dist(src, M) != 0)
playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
var/shovetarget = get_edge_target_turf(M, get_dir(M, get_step_away(src, M)))
Knockdown(0.3 SECONDS)
throw_at(shovetarget, 4, 2, M, force = MOVE_FORCE_OVERPOWERING)
log_combat(M, src, "shoved")
visible_message("<span class='danger'>[M] tackles [src] down!</span>", \
"<span class='userdanger'>[M] shoves you with great force!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", null, M)
to_chat(M, "<span class='danger'>You shove [src] with great force!</span>")
else
Paralyze(3 SECONDS)
adjustBruteLoss(5)
playsound(loc, 'sound/weapons/punch3.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] slams [src] into the floor!</span>", \
"<span class='userdanger'>[M] slams you into the ground!</span>", "<span class='hear'>You hear something slam loudly onto the floor!</span>", null, M)
to_chat(M, "<span class='danger'>You slam [src] into the floor beneath you!</span>")
log_combat(M, src, "slammed into the ground")
if(M.a_intent == INTENT_DISARM) //Always drop item in hand on first go. If no item exists, try to shove them back. If you share the tile with the target, slam them directly into the ground to stun them and slightly damage them.
var/obj/item/I = get_active_held_item()
if(I && dropItemToGround(I) && prob(50))
playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] disarms [src]!</span>", \
"<span class='userdanger'>[M] disarms you!</span>", "<span class='hear'>You hear aggressive shuffling!</span>", null, M)
to_chat(M, "<span class='danger'>You disarm [src]!</span>")
else if(get_dist(src, M) != 0)
playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
var/shovetarget = get_edge_target_turf(M, get_dir(M, get_step_away(src, M)))
Knockdown(0.3 SECONDS)
throw_at(shovetarget, 4, 2, M, force = MOVE_FORCE_OVERPOWERING)
log_combat(M, src, "shoved")
visible_message("<span class='danger'>[M] tackles [src] down!</span>", \
"<span class='userdanger'>[M] shoves you with great force!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", null, M)
to_chat(M, "<span class='danger'>You shove [src] with great force!</span>")
else
Paralyze(1 SECONDS)
adjustBruteLoss(5)
playsound(loc, 'sound/weapons/punch3.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] slams [src] into the floor!</span>", \
"<span class='userdanger'>[M] slams you into the ground!</span>", "<span class='hear'>You hear something slam loudly onto the floor!</span>", null, M)
to_chat(M, "<span class='danger'>You slam [src] into the floor beneath you!</span>")
log_combat(M, src, "slammed into the ground")

/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L)

Expand Down
2 changes: 1 addition & 1 deletion code/modules/spells/spell.dm
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
smoke.start()


/obj/effect/proc_holder/spell/proc/cast(list/targets,mob/user = usr)
/obj/effect/proc_holder/spell/proc/cast(list/targets, mob/user = usr)
return

/obj/effect/proc_holder/spell/proc/view_or_range(distance = world.view, center=usr, type="view")
Expand Down
50 changes: 19 additions & 31 deletions code/modules/spells/spell_types/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -242,46 +242,34 @@
sound = 'sound/magic/repulse.ogg'
var/maxthrow = 5
var/sparkle_path = /obj/effect/temp_visual/gravpush
var/anti_magic_check = TRUE
var/repulse_force = MOVE_FORCE_EXTREMELY_STRONG

var/stun_amt = 5
action_icon_state = "repulse"

/obj/effect/proc_holder/spell/aoe_turf/repulse/cast(list/targets,mob/user = usr, stun_amt = 5)
/obj/effect/proc_holder/spell/aoe_turf/repulse/cast(list/hit_turfs, mob/user = usr)
var/list/thrownatoms = list()
var/atom/throwtarget
var/distfromcaster
playMagSound()
for(var/atom/movable/hit_target as anything in targets) //Done this way so things don't get thrown all around hilariously.
thrownatoms += hit_target

for(var/am in thrownatoms)
var/atom/movable/AM = am
for(var/turf/T in hit_turfs)
for(var/atom/movable/hit_target in T.contents)
thrownatoms += hit_target

for(var/thrown_atom in thrownatoms)
if(!ismovable(thrown_atom))
continue
var/atom/movable/AM = thrown_atom
if(AM == user || AM.anchored)
continue

if(ismob(AM))
var/mob/M = AM
if(M.anti_magic_check(anti_magic_check, FALSE))
continue

throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
distfromcaster = get_dist(user, AM)
if(distfromcaster == 0)
if(isliving(AM))
var/mob/living/M = AM
M.Paralyze(40)
M.adjustBruteLoss(5)
shake_camera(AM, 2, 1)
to_chat(M, "<span class='userdanger'>You're slammed into the floor by [user]!</span>")
else
new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own
if(isliving(AM))
var/mob/living/M = AM
shake_camera(AM, 2, 1)
var/atom/throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own
if(isliving(AM))
var/mob/living/M = AM
shake_camera(AM, 2, 1)
if(stun_amt)
M.Paralyze(stun_amt)
to_chat(M, "<span class='userdanger'>You're thrown back by [user]!</span>")
AM.safe_throw_at(throwtarget, ((clamp((maxthrow - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user, force = repulse_force)//So stuff gets tossed around at the same time.
to_chat(M, "<span class='userdanger'>You're thrown back by [user]!</span>")
AM.safe_throw_at(throwtarget, ((clamp((maxthrow - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user, force = repulse_force)//So stuff gets tossed around at the same time.

/obj/effect/proc_holder/spell/aoe_turf/repulse/xeno //i fixed conflicts only to find out that this is in the WIZARD file instead of the xeno file?!
name = "Tail Sweep"
Expand All @@ -297,7 +285,7 @@
action_icon = 'icons/mob/actions/actions_xeno.dmi'
action_icon_state = "tailsweep"
action_background_icon_state = "bg_alien"
anti_magic_check = FALSE
stun_amt = 0

/obj/effect/proc_holder/spell/aoe_turf/repulse/xeno/cast(list/targets,mob/user = usr)
if(iscarbon(user))
Expand Down
Loading