mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 05:27:01 +01:00
* datumized spells * finished * last changes * conflict * Update code/datums/spells/alien_spells/transfer_plasma.dm * conflicts * shitty runtime fix until i get to this tomorrow * Update code/datums/spell.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spell_handler/alien_spell_handler.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/alien_spells/regurgitate.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/alien_spells/regurgitate.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/bloodcrawl.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/bloodcrawl.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/awaymissions/mission_code/ruins/wizardcrash.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/research/xenobiology/xenobiology.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/mob/living/carbon/superheroes.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/conjure.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/ethereal_jaunt.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/emplosion.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/turf_teleport.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/dna/mutations/mutation_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/dna/mutations/mutation_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/gamemodes/miniantags/revenant/revenant_abilities.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * guess who just rework the entire malf ai actionsf ai * gc better --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
90 lines
2.3 KiB
Plaintext
90 lines
2.3 KiB
Plaintext
/datum/spell/area_teleport
|
|
nonabstract_req = TRUE
|
|
|
|
var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list
|
|
var/invocation_area = 1 //if the invocation appends the selected area
|
|
|
|
var/sound1 = 'sound/weapons/zapbang.ogg'
|
|
var/sound2 = 'sound/weapons/zapbang.ogg'
|
|
var/area/selected_area
|
|
|
|
/datum/spell/area_teleport/before_cast(list/targets, mob/user)
|
|
..()
|
|
selected_area = null // Reset it
|
|
var/area_name
|
|
|
|
if(!randomise_selection)
|
|
area_name = tgui_input_list(user, "Area to teleport to", "Teleport", SSmapping.teleportlocs)
|
|
else
|
|
area_name = pick(SSmapping.teleportlocs)
|
|
|
|
if(!area_name)
|
|
smoke_type = SMOKE_NONE
|
|
return
|
|
|
|
var/area/thearea = SSmapping.teleportlocs[area_name]
|
|
|
|
if(thearea.tele_proof && !istype(thearea, /area/wizard_station))
|
|
to_chat(user, "A mysterious force disrupts your arcane spell matrix, and you remain where you are.")
|
|
return
|
|
|
|
selected_area = thearea
|
|
|
|
/datum/spell/area_teleport/cast(list/targets, mob/living/user)
|
|
if(!selected_area)
|
|
revert_cast(user)
|
|
return
|
|
|
|
smoke_type = SMOKE_HARMLESS
|
|
playsound(get_turf(user), sound1, 50,1)
|
|
for(var/mob/living/target in targets)
|
|
var/list/L = list()
|
|
for(var/turf/T in get_area_turfs(selected_area.type))
|
|
if(!T.density)
|
|
var/clear = 1
|
|
for(var/obj/O in T)
|
|
if(O.density)
|
|
clear = 0
|
|
break
|
|
if(clear)
|
|
L+=T
|
|
|
|
if(!L.len)
|
|
to_chat(usr, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.")
|
|
return
|
|
|
|
if(target && target.buckled)
|
|
target.buckled.unbuckle_mob(target, force = TRUE)
|
|
|
|
if(target && target.has_buckled_mobs())
|
|
target.unbuckle_all_mobs(force = TRUE)
|
|
|
|
var/list/tempL = L
|
|
var/attempt = null
|
|
var/success = 0
|
|
while(tempL.len)
|
|
attempt = pick(tempL)
|
|
success = target.Move(attempt)
|
|
if(!success)
|
|
tempL.Remove(attempt)
|
|
else
|
|
break
|
|
|
|
if(!success)
|
|
target.forceMove(pick(L))
|
|
playsound(get_turf(user), sound2, 50,1)
|
|
|
|
user.update_action_buttons_icon() //Update action buttons as some spells might now be castable
|
|
|
|
return
|
|
|
|
/datum/spell/area_teleport/invocation(mob/user)
|
|
if(!invocation_area || !selected_area)
|
|
return
|
|
switch(invocation_type)
|
|
if("shout")
|
|
user.say("[invocation] [uppertext(selected_area.name)]")
|
|
if("whisper")
|
|
user.whisper("[invocation] [uppertext(selected_area.name)]")
|
|
|