Files
Bubberstation/code/datums/components/slime_friends.dm
SkyratBot 6f4684076c [MIRROR] Adds 9 wizard perks (#28875)
* Adds 9 wizard perks (#83262)

## About The Pull Request

Add new spells category for wizards: Perks. perks are not really spells,
but useful (and not so useful) improvements for your wizard which
provide more variety for builds.
https://youtu.be/eeVvUkVE3xQ
All perks cost 2 points, they work without wizard’s uniform, cannot
refund, effect start only at the station (perks will not work at the
wizard’s base). Perk can only be purchased once.

9 added perks:
1. Four Hands - gives you 2 extra hands.
2. Worm Born - on death, wizard turns into a large worm and can no
longer return to his previous form.
![Снимок экрана 2024-06-02
223645](https://github.com/tgstation/tgstation/assets/120736708/2dfac647-4c3c-4824-8320-73fc98cc61fd)
3. Dejavu - every 60 seconds returns wizard to where he was 60 seconds
ago and restores his health to the amount he had 60 seconds ago.
4. Sale Off - When buying something from a book of spells, wizard has a
chance not to spend points for the purchase, depending on the purchase
price. 1/2/3/4 price chance 50/25/15/10%. You can no longer refund
purchases.
5. Gamble - Give wizard 2 random perks.
6. Heart Eater - By eating someone's heart, the wizard has a chance to
either increase his maximum HP and stamina by 25 or lose 10 percent of
his maximum HP but get a random mutation.
7. Slime Friends - Slimes is your friends now. Every 20 Seconds you
spend 50 nutriments to spawn random big angry slime.
8. Transparence - wizard becomes half transparent, any projectiles pass
through, but you loses 25% of max HP and you get a stalker who will
follow you to the station to kill you.
9. Magnetism - Wizard gain gravitational anomaly that orbit around him,
which attracts objects and people.
https://youtu.be/gp6ZtTrZu7I

## Why It's Good For The Game

Gives the wizard more options to create a fun and interesting builds

## Changelog

🆑
add: new wizard spells category - perks.
add: adds 9 wizard perks.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Adds 9 wizard perks

---------

Co-authored-by: Xackii <120736708+Xackii@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2024-07-16 10:49:29 +05:30

62 lines
2.0 KiB
Plaintext

/datum/component/slime_friends
/// Slime maker timer.
var/timer
/// List to pick from when we need slime colour.
var/static/colours = list(
/datum/slime_type/adamantine,
/datum/slime_type/black,
/datum/slime_type/blue,
/datum/slime_type/bluespace,
/datum/slime_type/cerulean,
/datum/slime_type/darkblue,
/datum/slime_type/darkpurple,
/datum/slime_type/gold,
/datum/slime_type/green,
/datum/slime_type/grey,
/datum/slime_type/lightpink,
/datum/slime_type/metal,
/datum/slime_type/oil,
/datum/slime_type/orange,
/datum/slime_type/pink,
/datum/slime_type/purple,
/datum/slime_type/pyrite,
/datum/slime_type/rainbow,
/datum/slime_type/red,
/datum/slime_type/sepia,
/datum/slime_type/silver,
/datum/slime_type/yellow,
)
/datum/component/slime_friends/Initialize(...)
. = ..()
if(!isliving(parent))
return COMPONENT_INCOMPATIBLE
var/mob/living/living_parent = parent
living_parent.faction |= FACTION_SLIME
RegisterSignal(living_parent, COMSIG_ENTER_AREA, PROC_REF(start_slime_prodaction))
/datum/component/slime_friends/Destroy(force)
. = ..()
var/mob/living/living_parent = parent
living_parent.faction -= FACTION_SLIME
timer = null
/// Start slime prodaction when we leave wizden.
/datum/component/slime_friends/proc/start_slime_prodaction(mob/living/friend, area/new_area)
if(new_area == GLOB.areas_by_type[/area/centcom/wizard_station])
return
timer = addtimer(CALLBACK(src, PROC_REF(make_slime_friend), friend), 20 SECONDS)
UnregisterSignal(friend, COMSIG_ENTER_AREA)
/// Slime prodactor proc.
/datum/component/slime_friends/proc/make_slime_friend(mob/living/friend)
timer = addtimer(CALLBACK(src, PROC_REF(make_slime_friend), friend), 20 SECONDS)
if(get_area(friend) == GLOB.areas_by_type[/area/centcom/wizard_station])
return
var/turf/where = get_turf(friend)
var/new_colour = pick(colours)
var/mob/living/basic/slime/new_friend = new(where, new_colour, SLIME_LIFE_STAGE_ADULT)
new_friend.faction = friend.faction.Copy()
new_friend.set_enraged_behaviour()
friend.nutrition -= 50