Skip to content

Commit

Permalink
Buffs the Prince of Terror (#22421)
Browse files Browse the repository at this point in the history
* The fast prince of belair

* The charging prince of belair

* Lewc review

* Update code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm

Co-authored-by: Henri215 <[email protected]>

* Sean review

* Sirryan Review

* Range is now 9 for widescreen

---------

Co-authored-by: Henri215 <[email protected]>
  • Loading branch information
DGamerL and Henri215 authored Nov 13, 2023
1 parent 370adae commit 09181bb
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 3 deletions.
1 change: 1 addition & 0 deletions code/datums/spell.dm
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
return FALSE

return TRUE

/obj/effect/proc_holder/spell/summonmob
name = "Summon Servant"
desc = "This spell can be used to call your servant, whenever you need it."
Expand Down
5 changes: 2 additions & 3 deletions code/modules/events/spider_terror.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,8 @@
var/mob/M = pick_n_take(candidates)
S.key = M.key
dust_if_respawnable(M)
if(infestation_type != PRINCE_SPIDER)
S.forceMove(vent)
S.add_ventcrawl(vent)
S.forceMove(vent)
S.add_ventcrawl(vent)
SEND_SOUND(S, sound('sound/ambience/antag/terrorspider.ogg'))
S.give_intro_text()
spawncount--
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
maxHealth = 600 // 30 laser shots
health = 600
regen_points_per_hp = 6 // double the normal - IE halved regen speed
move_to_delay = 3
speed = 0.5
melee_damage_lower = 30
melee_damage_upper = 40
ventcrawler = 0
Expand All @@ -40,3 +42,67 @@
L.KnockDown(10 SECONDS)
L.adjustStaminaLoss(40)
return ..()

/mob/living/simple_animal/hostile/poison/terror_spider/prince/Initialize(mapload)
. = ..()
if(mind)
var/obj/effect/proc_holder/spell/spell = new /obj/effect/proc_holder/spell/princely_charge()
mind.AddSpell(spell)
else
RegisterSignal(src, COMSIG_MOB_LOGIN, TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/terror_spider/prince, give_spell))

/mob/living/simple_animal/hostile/poison/terror_spider/prince/proc/give_spell()
SIGNAL_HANDLER
var/obj/effect/proc_holder/spell/spell = new /obj/effect/proc_holder/spell/princely_charge()
mind.AddSpell(spell)
UnregisterSignal(src, COMSIG_MOB_LOGIN)

/obj/effect/proc_holder/spell/princely_charge
name = "Princely Charge"
desc = "You charge at wherever you click on screen, dealing large amounts of damage, stunning and destroying walls and other objects."
gain_desc = "You can now charge at a target on screen, dealing massive damage and destroying structures."
base_cooldown = 30 SECONDS
clothes_req = FALSE
action_icon_state = "terror_prince"

/obj/effect/proc_holder/spell/princely_charge/create_new_targeting()
return new /datum/spell_targeting/clicked_atom

/obj/effect/proc_holder/spell/princely_charge/cast(list/targets, mob/user)
var/target = targets[1]
if(isliving(user))
var/mob/living/L = user
L.apply_status_effect(STATUS_EFFECT_CHARGING)
L.throw_at(target, 9, 1, L, FALSE, callback = CALLBACK(L, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_CHARGING))

/mob/living/simple_animal/hostile/poison/terror_spider/prince/throw_impact(atom/hit_atom, throwingdatum)
. = ..()
if(!has_status_effect(STATUS_EFFECT_CHARGING) || has_status_effect(STATUS_EFFECT_IMPACT_IMMUNE))
return

var/hit_something = FALSE
if(ismovable(hit_atom))
var/atom/movable/AM = hit_atom
var/atom/throw_target = get_edge_target_turf(AM, dir)
if(!AM.anchored || ismecha(AM))
AM.throw_at(throw_target, 5, 12, src)
hit_something = TRUE
if(isobj(hit_atom))
var/obj/O = hit_atom
O.take_damage(150, BRUTE)
hit_something = TRUE
if(isliving(hit_atom))
var/mob/living/L = hit_atom
L.adjustBruteLoss(60)
L.KnockDown(12 SECONDS)
L.Confused(10 SECONDS)
shake_camera(L, 4, 3)
hit_something = TRUE
if(isturf(hit_atom))
var/turf/T = hit_atom
if(iswallturf(T))
T.dismantle_wall(TRUE)
hit_something = TRUE
if(hit_something)
visible_message("<span class='danger'>[src] slams into [hit_atom]!</span>", "<span class='userdanger'>You slam into [hit_atom]!</span>")
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100, TRUE)
Original file line number Diff line number Diff line change
Expand Up @@ -474,3 +474,7 @@ GLOBAL_LIST_EMPTY(ts_infected_list)
. = ..()
if(pulling && !ismob(pulling) && pulling.density)
. += 6 // Drastic move speed penalty for dragging anything that is not a mob or a non dense object

/mob/living/simple_animal/hostile/poison/terror_spider/Login()
. = ..()
SEND_SIGNAL(src, COMSIG_MOB_LOGIN)
Binary file modified icons/mob/actions/actions.dmi
Binary file not shown.

0 comments on commit 09181bb

Please sign in to comment.