mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
eee8878024
* 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>
112 lines
3.7 KiB
Plaintext
112 lines
3.7 KiB
Plaintext
/obj/item/clothing/under/punpun
|
|
name = "fancy uniform"
|
|
desc = "It looks like it was tailored for a monkey."
|
|
icon_state = "punpun"
|
|
item_color = "punpun"
|
|
species_restricted = list("Monkey")
|
|
species_exception = list(/datum/species/monkey)
|
|
|
|
icon = 'icons/obj/clothing/under/misc.dmi'
|
|
sprite_sheets = list("Monkey" = 'icons/mob/clothing/under/misc.dmi')
|
|
|
|
/mob/living/carbon/human/monkey/punpun/Initialize(mapload)
|
|
. = ..()
|
|
name = "Pun Pun"
|
|
real_name = name
|
|
equip_to_slot(new /obj/item/clothing/under/punpun(src), SLOT_HUD_JUMPSUIT)
|
|
|
|
/mob/living/carbon/human/monkey/teeny/Initialize(mapload)
|
|
. = ..()
|
|
name = "Mr. Teeny"
|
|
real_name = name
|
|
resize = 0.8
|
|
update_transform()
|
|
|
|
/mob/living/carbon/human/monkey/magic
|
|
/// Stores the timer ID of the timer that happens in Life() to prevent multiple of the same timer happening.
|
|
var/return_timer
|
|
|
|
/mob/living/carbon/human/monkey/magic/Initialize(mapload)
|
|
. = ..()
|
|
var/headwear = pick(/obj/item/clothing/head/wizard, /obj/item/clothing/head/wizard/red, /obj/item/clothing/head/wizard/black)
|
|
|
|
name = pick(GLOB.wizard_first)
|
|
if(prob(20))
|
|
name = "[name] [pick(GLOB.wizard_second)]"
|
|
if(prob(0.1))
|
|
name = "MERLIN THE MAGNIFICENT"
|
|
headwear = /obj/item/clothing/head/wizard // he's gotta wear blue, ya know?
|
|
resize = 2
|
|
update_transform()
|
|
real_name = name
|
|
|
|
equip_to_slot_or_del(new headwear(src), SLOT_HUD_HEAD)
|
|
RegisterSignal(src, list(COMSIG_HUMAN_ATTACKED, COMSIG_HOSTILE_ATTACKINGTARGET), PROC_REF(ouch))
|
|
|
|
for(var/trait in list(TRAIT_RESISTHEAT, TRAIT_NOBREATH, TRAIT_RESISTCOLD, TRAIT_RESISTHIGHPRESSURE, TRAIT_RESISTLOWPRESSURE))
|
|
ADD_TRAIT(src, trait, MAGIC_TRAIT)
|
|
|
|
/mob/living/carbon/human/monkey/magic/proc/ouch(mob/living/victim, mob/living/attacker)
|
|
SIGNAL_HANDLER
|
|
if(src == attacker)
|
|
return // I'm afraid you do not get a free blink
|
|
if(blink_away())
|
|
return COMPONENT_CANCEL_ATTACK_CHAIN // prevent people from attacking the monkey
|
|
|
|
/mob/living/carbon/human/monkey/magic/proc/blink_away()
|
|
if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED))
|
|
return
|
|
|
|
// A monkey, with a blink spell? Preposterous
|
|
playsound(get_turf(src), 'sound/magic/blink.ogg', 50, TRUE)
|
|
|
|
var/list/turfs = list()
|
|
var/list/target_turfs = range(src, 5) - range(src, 1)
|
|
for(var/turf/T in target_turfs)
|
|
if(isspaceturf(T))
|
|
continue
|
|
if(is_blocked_turf(T))
|
|
continue
|
|
if(T.x > world.maxx - 5 || T.x < 5)
|
|
continue //putting them at the edge is dumb
|
|
if(T.y > world.maxy - 5 || T.y < 5)
|
|
continue
|
|
if(islava(T) || ischasm(T))
|
|
continue
|
|
turfs += T
|
|
|
|
var/turf/picked = pick(turfs)
|
|
if(!picked || !isturf(picked))
|
|
return
|
|
|
|
visible_message("<span class='warning'>[src] blinks away!</span>", "<span class='danger'>Your instincts kick in, and you blink away!</span>")
|
|
INVOKE_ASYNC(src, PROC_REF(after_the_attack), picked)
|
|
|
|
playsound(get_turf(src), 'sound/magic/blink.ogg', 50, TRUE)
|
|
return_timer = null
|
|
return TRUE
|
|
|
|
/mob/living/carbon/human/monkey/magic/proc/after_the_attack(turf/picked)
|
|
forceMove(picked)
|
|
|
|
var/datum/effect_system/smoke_spread/smoke = new /datum/effect_system/smoke_spread()
|
|
smoke.set_up(1, FALSE, src)
|
|
smoke.start()
|
|
|
|
/mob/living/carbon/human/monkey/magic/proc/i_want_to_go_home()
|
|
if(client || !istype(loc, /turf/simulated/floor/plating/asteroid))
|
|
return
|
|
blink_away()
|
|
|
|
/mob/living/carbon/human/monkey/magic/Life(seconds, times_fired)
|
|
. = ..()
|
|
if(!client && !return_timer && prob(10) && istype(loc, /turf/simulated/floor/plating/asteroid))
|
|
return_timer = addtimer(CALLBACK(src, PROC_REF(i_want_to_go_home)), 5 MINUTES)
|
|
// I'm out out the wizard's den, I want to go back inside!
|
|
|
|
/mob/living/carbon/human/monkey/magic/mind_checks()
|
|
if(!..())
|
|
return FALSE
|
|
mind.AddSpell(new /datum/spell/turf_teleport/blink(null))
|
|
mind.special_role = SPECIAL_ROLE_WIZARD
|