Ports /vg/'s Nas-Sie remake.

First phase: Port cultify procs.
This commit is contained in:
PsiOmega
2015-04-11 13:56:55 +02:00
parent 09b69db537
commit f3be9b41f0
28 changed files with 297 additions and 31 deletions

View File

@@ -319,6 +319,3 @@ var/global/ManifestJSON
/obj/effect/spawner
name = "object spawner"
/obj/proc/cultify()
qdel(src)

View File

@@ -29,6 +29,7 @@ var/datum/antagonist/cultist/cult
var/list/startwords = list("blood","join","self","hell")
var/list/allwords = list("travel","self","see","hell","blood","join","tech","destroy", "other", "hide")
var/list/sacrificed = list()
var/list/harvested = list()
/datum/antagonist/cultist/New()
..()

View File

@@ -8,6 +8,8 @@
throwforce = 10
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/melee/cultblade/cultify()
return
/obj/item/weapon/melee/cultblade/attack(mob/living/target as mob, mob/living/carbon/human/user as mob)
if(iscultist(user))
@@ -40,15 +42,22 @@
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0
/obj/item/clothing/head/culthood/cultify()
return
/obj/item/clothing/head/culthood/magus
name = "magus helm"
icon_state = "magus"
item_state = "magus"
desc = "A helm worn by the followers of Nar-Sie."
flags_inv = HIDEFACE
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
body_parts_covered = HEAD|FACE|EYES
/obj/item/clothing/head/culthood/alt
icon_state = "cult_hoodalt"
item_state = "cult_hoodalt"
/obj/item/clothing/suit/cultrobes/alt
icon_state = "cultrobesalt"
item_state = "cultrobesalt"
/obj/item/clothing/suit/cultrobes
name = "cult robes"
desc = "A set of armored robes worn by the followers of Nar-Sie"
@@ -60,27 +69,20 @@
flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0
/obj/item/clothing/head/magus
name = "magus helm"
icon_state = "magus"
item_state = "magus"
desc = "A helm worn by the followers of Nar-Sie."
flags_inv = HIDEFACE
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
body_parts_covered = HEAD|FACE|EYES
armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0
/obj/item/clothing/suit/cultrobes/cultify()
return
/obj/item/clothing/suit/magusred
/obj/item/clothing/suit/cultrobes/alt
icon_state = "cultrobesalt"
item_state = "cultrobesalt"
/obj/item/clothing/suit/cultrobes/magusred
name = "magus robes"
desc = "A set of armored robes worn by the followers of Nar-Sie"
icon_state = "magusred"
item_state = "magusred"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade)
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 0
/obj/item/clothing/head/helmet/space/cult
name = "cult helmet"
@@ -90,6 +92,8 @@
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0
/obj/item/clothing/head/helmet/space/cult/cultify()
return
/obj/item/clothing/suit/space/cult
name = "cult armour"
@@ -101,4 +105,7 @@
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
/obj/item/clothing/suit/space/cult/cultify()
return

View File

@@ -3,6 +3,9 @@
anchored = 1
icon = 'icons/obj/cult.dmi'
/obj/structure/cult/cultify()
return
/obj/structure/cult/talisman
name = "Altar"
desc = "A bloodstained altar dedicated to Nar-Sie"
@@ -98,4 +101,4 @@
/obj/effect/gateway/Crossed(AM as mob|obj)
spawn(0)
return
return
return

View File

@@ -0,0 +1,28 @@
/mob/proc/cultify()
return
/mob/dead/cultify()
if(icon_state != "ghost-narsie")
icon = 'icons/mob/mob.dmi'
icon_state = "ghost-narsie"
overlays = 0
invisibility = 0
src << "<span class='sinister'>Even as a non-corporal being, you can feel Nar-Sie's presence altering you. You are now visible to everyone.</span>"
/mob/living/cultify()
if(iscultist(src) && client)
var/mob/living/simple_animal/construct/harvester/C = new(get_turf(src))
mind.transfer_to(C)
C << "<span class='sinister'>The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.<br>Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.<br>You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.</span>"
dust()
else if(client)
var/mob/dead/G = (ghostize())
G.icon = 'icons/mob/mob.dmi'
G.icon_state = "ghost-narsie"
G.overlays = 0
G.invisibility = 0
G << "<span class='sinister'>You feel relieved as what's left of your soul finally escapes its prison of flesh.</span>"
cult.harvested += G.mind
else
dust()

View File

@@ -0,0 +1,145 @@
/obj/proc/cultify()
qdel(src)
/obj/effect/decal/cleanable/blood/cultify()
return
/obj/effect/decal/remains/cultify()
return
/obj/effect/overlay/cultify()
return
/obj/item/device/flashlight/lamp/cultify()
new /obj/structure/cult/pylon(loc)
..()
/obj/item/stack/sheet/wood/cultify()
return
/obj/item/weapon/book/cultify()
new /obj/item/weapon/book/tome(loc)
..()
/obj/item/weapon/claymore/cultify()
new /obj/item/weapon/melee/cultblade(loc)
..()
/obj/item/weapon/storage/backpack/cultify()
new /obj/item/weapon/storage/backpack/cultpack(loc)
..()
/obj/item/weapon/storage/backpack/cultpack/cultify()
return
/obj/item/weapon/table_parts/cultify()
new /obj/item/weapon/table_parts/wood(loc)
..()
/obj/item/weapon/table_parts/wood/cultify()
return
/obj/machinery/cultify()
// We keep the number of cultified machines down by only converting those that are dense
// The alternative is to keep a separate file of exceptions.
if(density)
var/list/random_structure = list(
/obj/structure/cult/talisman,
/obj/structure/cult/forge,
/obj/structure/cult/tome
)
var/I = pick(random_structure)
new I(loc)
..()
/obj/machinery/power/apc/cultify()
return
/obj/machinery/atmospherics/cultify()
if(src.invisibility != INVISIBILITY_MAXIMUM)
src.invisibility = INVISIBILITY_MAXIMUM
/obj/machinery/cooking/cultify()
new /obj/structure/cult/talisman(loc)
qdel(src)
/obj/machinery/computer/cultify()
new /obj/structure/cult/tome(loc)
qdel(src)
/obj/machinery/door/cultify()
new /obj/structure/mineral_door/wood(loc)
icon_state = "null"
density = 0
c_animation = new /atom/movable/overlay(src.loc)
c_animation.name = "cultification"
c_animation.density = 0
c_animation.anchored = 1
c_animation.icon = 'icons/effects/effects.dmi'
c_animation.layer = 5
c_animation.master = src.loc
c_animation.icon_state = "breakdoor"
flick("cultification",c_animation)
spawn(10)
del(c_animation)
qdel(src)
/obj/machinery/light/cultify()
new /obj/structure/cult/pylon(loc)
qdel(src)
/obj/machinery/vending/cultify()
new /obj/structure/cult/forge(loc)
qdel(src)
/obj/structure/bed/chair/cultify()
var/obj/structure/bed/chair/wood/wings/I = new(loc)
I.dir = dir
..()
/obj/structure/bed/chair/wood/cultify()
return
/obj/structure/bookcase/cultify()
return
/obj/structure/grille/cultify()
new /obj/structure/grille/cult(get_turf(src))
..()
/obj/structure/grille/cult/cultify()
return
/obj/structure/mineral_door/cultify()
new /obj/structure/mineral_door/wood(loc)
..()
/obj/structure/mineral_door/wood/cultify()
return
/obj/machinery/singularity/cultify()
var/dist = max((current_size - 2), 1)
explosion(get_turf(src), dist, dist * 2, dist * 4)
qdel(src)
/obj/structure/shuttle/engine/heater/cultify()
new /obj/structure/cult/pylon(loc)
..()
/obj/structure/shuttle/engine/propulsion/cultify()
var/turf/T = get_turf(src)
if(T)
T.ChangeTurf(/turf/simulated/wall/cult)
..()
/obj/structure/stool/cultify()
var/obj/structure/bed/chair/wood/wings/I = new(loc)
I.dir = dir
..()
/obj/structure/table/cultify()
new /obj/structure/table/woodentable(loc)
..()
/obj/structure/table/woodentable/cultify()
return

View File

@@ -0,0 +1,43 @@
/turf/proc/cultify()
ChangeTurf(/turf/space)
return
/turf/simulated/floor/cultify()
cultify_floor()
/turf/simulated/floor/carpet/cultify()
return
/turf/simulated/shuttle/floor/cultify()
cultify_floor()
/turf/simulated/shuttle/floor4/cultify()
cultify_floor()
/turf/simulated/shuttle/wall/cultify()
cultify_wall()
/turf/simulated/wall/cultify()
cultify_wall()
/turf/simulated/wall/cult/cultify()
return
/turf/unsimulated/beach/cultify()
return
/turf/unsimulated/floor/cultify()
cultify_floor()
/turf/unsimulated/wall/cultify()
cultify_wall()
/turf/proc/cultify_floor()
if((icon_state != "cult")&&(icon_state != "cult-narsie"))
name = "engraved floor"
icon_state = "cult"
turf_animation('icons/effects/effects.dmi',"cultfloor",0,0,MOB_LAYER-1)
/turf/proc/cultify_wall()
ChangeTurf(/turf/unsimulated/wall/cult)
turf_animation('icons/effects/effects.dmi',"cultwall",0,0,MOB_LAYER-1)

View File

@@ -498,6 +498,9 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
else
user << "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though."
/obj/item/weapon/book/tome/cultify()
return
/obj/item/weapon/book/tome/imbued //admin tome, spawns working runes without waiting
w_class = 2.0
var/cultistsonly = 1

View File

@@ -1,5 +1,8 @@
var/list/sacrificed = list()
/obj/effect/rune/cultify()
return
/obj/effect/rune
/////////////////////////////////////////FIRST RUNE

View File

@@ -34,6 +34,9 @@
dir = EAST
var/width = 1
// turf animation
var/atom/movable/overlay/c_animation = null
/obj/machinery/door/attack_generic(var/mob/user, var/damage)
if(damage >= 10)
visible_message("<span class='danger'>\The [user] smashes into the [src]!</span>")

View File

@@ -146,7 +146,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \
new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \
new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \
new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \

View File

@@ -2,6 +2,7 @@
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
anchored = 1
var/cult = 0
New()
ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt"))
return
@@ -12,6 +13,9 @@
return
/obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user)
if(cult)
return
if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/card = I
if(access_bar in card.GetAccess())

View File

@@ -215,3 +215,16 @@
health -= damage
spawn(1) healthcheck()
return 1
/obj/structure/grille/cult
name = "cult grille"
desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it"
icon_state = "grillecult"
health = 40 //Make it strong enough to avoid people breaking in too easily
/obj/structure/grille/cult/CanPass(atom/movable/mover, turf/target, height = 1.5, air_group = 0)
if(air_group)
return 0 //Make sure air doesn't drain
..()

View File

@@ -67,15 +67,13 @@
return
// Chair types
/obj/structure/bed/chair/wood/normal
/obj/structure/bed/chair/wood
icon_state = "wooden_chair"
name = "wooden chair"
desc = "Old is never too old to not be in fashion."
/obj/structure/bed/chair/wood/wings
icon_state = "wooden_chair_wings"
name = "wooden chair"
desc = "Old is never too old to not be in fashion."
/obj/structure/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))

View File

@@ -74,6 +74,8 @@
name = "engraved floor"
icon_state = "cult"
/turf/simulated/floor/engine/cult/cultify()
return
/turf/simulated/floor/engine/n20
New()

View File

@@ -2,4 +2,7 @@
name = "wall"
desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick"
icon_state = "cult"
walltype = "cult"
walltype = "cult"
/turf/unsimulated/wall/cult/cultify()
return

View File

@@ -107,6 +107,9 @@
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = null
/obj/item/clothing/shoes/cult/cultify()
return
/obj/item/clothing/shoes/cyborg
name = "cyborg boots"
desc = "Shoes for a cyborg costume"

View File

@@ -1,4 +1,3 @@
/mob/living/simple_animal/construct
name = "Construct"
real_name = "Construct"
@@ -35,6 +34,9 @@
var/list/construct_spells = list()
/mob/living/simple_animal/construct/cultify()
return
/mob/living/simple_animal/construct/New()
..()
name = text("[initial(name)] ([rand(1, 1000)])")

View File

@@ -1,3 +1,6 @@
/obj/item/device/soulstone/cultify()
return
/obj/item/device/soulstone
name = "Soul Stone Shard"
icon = 'icons/obj/wizard.dmi'
@@ -9,7 +12,6 @@
origin_tech = "bluespace=4;materials=4"
var/imprinted = "empty"
//////////////////////////////Capturing////////////////////////////////////////////////////////
attack(mob/living/carbon/human/M as mob, mob/user as mob)

View File

@@ -28,6 +28,9 @@
faction = "cult"
status_flags = CANPUSH
/mob/living/simple_animal/shade/cultify()
return
/mob/living/simple_animal/shade/Life()
..()
OnDeathInLife()

View File

@@ -301,7 +301,7 @@
//arcane clothing
apply_prefix = 0
var/list/possible_spawns = list(/obj/item/clothing/head/culthood,
/obj/item/clothing/head/magus,
/obj/item/clothing/head/culthood/magus,
/obj/item/clothing/head/culthood/alt,
/obj/item/clothing/head/helmet/space/cult)