mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
Cryokinesis and Geladikinesis mutations (#42453)
* Adds cryokinesis and renames the cold resistence file to space adaptation * adds cryokinesis * fixes icon conflict is there actually a proper way to fix them thats not copying master and reimplimenting your own sprites? * fixes a typo and lowers instability of cryokines by 5 * Apply suggestions from code review Co-Authored-By: Time-Green <timkoster1@hotmail.com> * maybe reverts line ending? * unfucks flags? * probably unfucks line endings i swear to fucking god why does it even do this. i never even touched the file and reverting it to master doesnt do anything. fuck you git
This commit is contained in:
41
code/datums/mutations/cold.dm
Normal file
41
code/datums/mutations/cold.dm
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/datum/mutation/human/geladikinesis
|
||||||
|
name = "Geladikinetic Creation"
|
||||||
|
desc = "Allows the user to concentrate moisture and sub-zero forces into snow."
|
||||||
|
quality = POSITIVE
|
||||||
|
text_gain_indication = "<span class='notice'>Your hand feels cold.</span>"
|
||||||
|
instability = 10
|
||||||
|
difficulty = 10
|
||||||
|
power = /obj/effect/proc_holder/spell/targeted/conjure_item/snow
|
||||||
|
|
||||||
|
/obj/effect/proc_holder/spell/targeted/conjure_item/snow
|
||||||
|
name = "Create Snow"
|
||||||
|
desc = "Concentrates cryokinetic forces to create snow, useful for snow-like construction."
|
||||||
|
item_type = /obj/item/stack/sheet/mineral/snow
|
||||||
|
charge_max = 50
|
||||||
|
delete_old = FALSE
|
||||||
|
action_icon_state = "snow"
|
||||||
|
|
||||||
|
|
||||||
|
/datum/mutation/human/cryokinesis
|
||||||
|
name = "Cryokinesis"
|
||||||
|
desc = "Draws negative energy from the sub-zero void to freeze surrounding temperatures at subject's will."
|
||||||
|
quality = POSITIVE //upsides and downsides
|
||||||
|
text_gain_indication = "<span class='notice'>Your hand feels cold.</span>"
|
||||||
|
instability = 20
|
||||||
|
difficulty = 12
|
||||||
|
power = /obj/effect/proc_holder/spell/aimed/cryo
|
||||||
|
|
||||||
|
/obj/effect/proc_holder/spell/aimed/cryo
|
||||||
|
name = "Cryobeam"
|
||||||
|
desc = "This power fires a frozen bolt at a target."
|
||||||
|
charge_max = 150
|
||||||
|
cooldown_min = 150
|
||||||
|
clothes_req = FALSE
|
||||||
|
range = 3
|
||||||
|
projectile_type = /obj/item/projectile/temp/cryo
|
||||||
|
base_icon_state = "icebeam"
|
||||||
|
action_icon_state = "icebeam"
|
||||||
|
active_msg = "You focus your cryokinesis!"
|
||||||
|
deactive_msg = "You relax."
|
||||||
|
active = FALSE
|
||||||
|
|
||||||
@@ -342,9 +342,10 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
|
|||||||
merge_type = /obj/item/stack/sheet/mineral/snow
|
merge_type = /obj/item/stack/sheet/mineral/snow
|
||||||
|
|
||||||
GLOBAL_LIST_INIT(snow_recipes, list ( \
|
GLOBAL_LIST_INIT(snow_recipes, list ( \
|
||||||
new/datum/stack_recipe("Snow Wall", /turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \
|
new/datum/stack_recipe("Snow wall", /turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \
|
||||||
new/datum/stack_recipe("Snowman", /obj/structure/statue/snow/snowman, 5, one_per_turf = 1, on_floor = 1), \
|
new/datum/stack_recipe("Snowman", /obj/structure/statue/snow/snowman, 5, one_per_turf = 1, on_floor = 1), \
|
||||||
new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \
|
new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \
|
||||||
|
new/datum/stack_recipe("Snow tile", /obj/item/stack/tile/mineral/snow, 1, 4, 20), \
|
||||||
))
|
))
|
||||||
|
|
||||||
/obj/item/stack/sheet/mineral/snow/Initialize(mapload, new_amount, merge = TRUE)
|
/obj/item/stack/sheet/mineral/snow/Initialize(mapload, new_amount, merge = TRUE)
|
||||||
|
|||||||
@@ -191,9 +191,15 @@
|
|||||||
var/obj/O
|
var/obj/O
|
||||||
if(R.max_res_amount > 1) //Is it a stack?
|
if(R.max_res_amount > 1) //Is it a stack?
|
||||||
O = new R.result_type(usr.drop_location(), R.res_amount * multiplier)
|
O = new R.result_type(usr.drop_location(), R.res_amount * multiplier)
|
||||||
|
else if(ispath(R.result_type, /turf))
|
||||||
|
var/turf/T = usr.drop_location()
|
||||||
|
if(!isturf(T))
|
||||||
|
return
|
||||||
|
T.PlaceOnTop(R.result_type)
|
||||||
else
|
else
|
||||||
O = new R.result_type(usr.drop_location())
|
O = new R.result_type(usr.drop_location())
|
||||||
O.setDir(usr.dir)
|
if(O)
|
||||||
|
O.setDir(usr.dir)
|
||||||
use(R.req_amount * multiplier)
|
use(R.req_amount * multiplier)
|
||||||
|
|
||||||
//START: oh fuck i'm so sorry
|
//START: oh fuck i'm so sorry
|
||||||
|
|||||||
@@ -77,4 +77,12 @@
|
|||||||
icon_state = "tile_darkshuttle"
|
icon_state = "tile_darkshuttle"
|
||||||
turf_type = /turf/open/floor/mineral/plastitanium
|
turf_type = /turf/open/floor/mineral/plastitanium
|
||||||
mineralType = "plastitanium"
|
mineralType = "plastitanium"
|
||||||
materials = list(MAT_TITANIUM=250, MAT_PLASMA=250)
|
materials = list(MAT_TITANIUM=250, MAT_PLASMA=250)
|
||||||
|
|
||||||
|
/obj/item/stack/tile/mineral/snow
|
||||||
|
name = "snow tile"
|
||||||
|
singular_name = "snow tile"
|
||||||
|
desc = "A layer of snow."
|
||||||
|
icon_state = "tile_snow"
|
||||||
|
turf_type = /turf/open/floor/grass/snow
|
||||||
|
mineralType = "snow"
|
||||||
@@ -16,3 +16,14 @@
|
|||||||
/obj/item/projectile/temp/hot
|
/obj/item/projectile/temp/hot
|
||||||
name = "heat beam"
|
name = "heat beam"
|
||||||
temperature = 400
|
temperature = 400
|
||||||
|
|
||||||
|
/obj/item/projectile/temp/cryo
|
||||||
|
name = "cryo beam"
|
||||||
|
range = 3
|
||||||
|
|
||||||
|
/obj/item/projectile/temp/cryo/on_range()
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
if(isopenturf(T))
|
||||||
|
var/turf/open/O = T
|
||||||
|
O.freon_gas_act()
|
||||||
|
return ..()
|
||||||
|
|||||||
@@ -80,11 +80,11 @@
|
|||||||
school = "conjuration"
|
school = "conjuration"
|
||||||
charge_max = 150
|
charge_max = 150
|
||||||
cooldown_min = 10
|
cooldown_min = 10
|
||||||
|
var/delete_old = TRUE //TRUE to delete the last summoned object if it's still there, FALSE for infinite item stream weeeee
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/targeted/conjure_item/cast(list/targets, mob/user = usr)
|
/obj/effect/proc_holder/spell/targeted/conjure_item/cast(list/targets, mob/user = usr)
|
||||||
if (item && !QDELETED(item))
|
if (delete_old && item && !QDELETED(item))
|
||||||
qdel(item)
|
QDEL_NULL(item)
|
||||||
item = null
|
|
||||||
else
|
else
|
||||||
for(var/mob/living/carbon/C in targets)
|
for(var/mob/living/carbon/C in targets)
|
||||||
if(C.dropItemToGround(C.get_active_held_item()))
|
if(C.dropItemToGround(C.get_active_held_item()))
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -465,11 +465,12 @@
|
|||||||
#include "code\datums\mutations\actions.dm"
|
#include "code\datums\mutations\actions.dm"
|
||||||
#include "code\datums\mutations\body.dm"
|
#include "code\datums\mutations\body.dm"
|
||||||
#include "code\datums\mutations\chameleon.dm"
|
#include "code\datums\mutations\chameleon.dm"
|
||||||
#include "code\datums\mutations\cold_resistance.dm"
|
#include "code\datums\mutations\cold.dm"
|
||||||
#include "code\datums\mutations\combined.dm"
|
#include "code\datums\mutations\combined.dm"
|
||||||
#include "code\datums\mutations\hulk.dm"
|
#include "code\datums\mutations\hulk.dm"
|
||||||
#include "code\datums\mutations\radioactive.dm"
|
#include "code\datums\mutations\radioactive.dm"
|
||||||
#include "code\datums\mutations\sight.dm"
|
#include "code\datums\mutations\sight.dm"
|
||||||
|
#include "code\datums\mutations\space_adaptation.dm"
|
||||||
#include "code\datums\mutations\speech.dm"
|
#include "code\datums\mutations\speech.dm"
|
||||||
#include "code\datums\mutations\telekinesis.dm"
|
#include "code\datums\mutations\telekinesis.dm"
|
||||||
#include "code\datums\mutations\touch.dm"
|
#include "code\datums\mutations\touch.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user