Merge pull request #18801 from sawu-tg/master

Pope of Sin Update
This commit is contained in:
Joan Lung
2016-06-22 09:06:12 -04:00
committed by GitHub
7 changed files with 670 additions and 66 deletions
+348
View File
@@ -0,0 +1,348 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/open/space,
/area/space)
"ab" = (
/turf/closed/indestructible/riveted,
/area/hades)
"ac" = (
/obj/structure/bookcase/random/religion,
/turf/open/floor/plasteel/hades,
/area/hades)
"ad" = (
/obj/structure/piano,
/turf/open/floor/plasteel/hades,
/area/hades)
"ae" = (
/obj/effect/gibspawner/human,
/turf/open/floor/plasteel/hades,
/area/hades)
"af" = (
/turf/open/floor/plasteel/hades,
/area/hades)
"ag" = (
/obj/structure/window/fulltile,
/turf/open/floor/plasteel/hades,
/area/hades)
"ah" = (
/obj/structure/window/reinforced,
/turf/open/floor/plasteel/hades,
/area/hades)
"ai" = (
/obj/effect/gibspawner/human,
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/plasteel/hades,
/area/hades)
"aj" = (
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/plasteel/hades,
/area/hades)
"ak" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/window/fulltile,
/turf/open/floor/plasteel/hades,
/area/hades)
"al" = (
/obj/structure/table/reinforced/brass,
/obj/item/candle/infinite,
/turf/open/floor/plasteel/hades,
/area/hades)
"am" = (
/obj/structure/table/reinforced/brass,
/obj/item/candle/infinite,
/obj/structure/window/reinforced{
dir = 4
},
/turf/open/floor/plasteel/hades,
/area/hades)
"an" = (
/obj/structure/table/reinforced/brass,
/turf/open/floor/plasteel/hades,
/area/hades)
"ao" = (
/obj/structure/table/reinforced/brass,
/obj/item/candle/infinite,
/obj/structure/window/reinforced{
dir = 8
},
/turf/open/floor/plasteel/hades,
/area/hades)
"ap" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/fulltile,
/turf/open/floor/plasteel/hades,
/area/hades)
"aq" = (
/turf/open/floor/carpet,
/area/hades)
"ar" = (
/obj/structure/chair/wood/normal{
icon_state = "wooden_chair";
dir = 1
},
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/plasteel/hades,
/area/hades)
"as" = (
/obj/structure/chair/wood/normal{
icon_state = "wooden_chair";
dir = 1
},
/turf/open/floor/plasteel/hades,
/area/hades)
"at" = (
/obj/effect/gibspawner/human,
/turf/open/floor/carpet,
/area/hades)
"au" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/carpet,
/area/hades)
"av" = (
/obj/structure/dresser,
/turf/open/floor/carpet,
/area/hades)
"aw" = (
/obj/structure/table/wood,
/obj/item/trash/candle,
/turf/open/floor/carpet,
/area/hades)
"ax" = (
/obj/structure/flora/grass/green,
/turf/open/floor/grass,
/area/hades)
"ay" = (
/obj/structure/flora/ausbushes/ppflowers,
/turf/open/floor/grass,
/area/hades)
"az" = (
/obj/structure/flora/ausbushes/palebush,
/turf/open/floor/grass,
/area/hades)
"aA" = (
/obj/structure/flora/ausbushes/ywflowers,
/turf/open/floor/grass,
/area/hades)
"aB" = (
/obj/structure/bookcase/random/nonfiction,
/turf/open/floor/carpet,
/area/hades)
"aC" = (
/obj/structure/bookcase/random/fiction,
/turf/open/floor/carpet,
/area/hades)
"aD" = (
/obj/structure/bookcase/random/adult,
/turf/open/floor/carpet,
/area/hades)
"aE" = (
/obj/structure/bookcase/random/religion,
/turf/open/floor/carpet,
/area/hades)
"aF" = (
/obj/structure/kitchenspike,
/turf/open/floor/mineral/diamond,
/area/hades)
"aG" = (
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/mineral/gold,
/area/hades)
"aH" = (
/turf/open/floor/mineral/gold,
/area/hades)
"aI" = (
/obj/structure/table/wood,
/turf/open/floor/carpet,
/area/hades)
"aJ" = (
/obj/structure/flora/ausbushes/grassybush,
/turf/open/floor/grass,
/area/hades)
"aK" = (
/obj/structure/flora/ausbushes/stalkybush,
/turf/open/floor/grass,
/area/hades)
"aL" = (
/obj/structure/flora/ausbushes/genericbush,
/turf/open/floor/grass,
/area/hades)
"aM" = (
/obj/structure/bookcase/random/reference,
/turf/open/floor/carpet,
/area/hades)
"aN" = (
/obj/structure/closet/cabinet,
/turf/open/floor/carpet,
/area/hades)
"aO" = (
/obj/structure/table/wood,
/obj/item/weapon/paper/hades_instructions,
/turf/open/floor/carpet,
/area/hades)
"aP" = (
/obj/structure/flora/ausbushes/fernybush,
/turf/open/floor/grass,
/area/hades)
"aQ" = (
/obj/structure/bed,
/obj/item/weapon/bedsheet/black,
/turf/open/floor/carpet,
/area/hades)
"aR" = (
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/carpet,
/area/hades)
"aS" = (
/obj/structure/table/wood,
/obj/item/weapon/storage/box/matches,
/turf/open/floor/carpet,
/area/hades)
"aT" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
/turf/open/floor/plasteel,
/area/hades)
"aU" = (
/obj/machinery/door/airlock/wood,
/turf/open/floor/plasteel/hades,
/area/hades)
"aV" = (
/obj/structure/table/wood,
/obj/item/weapon/lipstick,
/turf/open/floor/carpet,
/area/hades)
"aW" = (
/obj/structure/table/wood,
/obj/item/weapon/storage/fancy/candle_box,
/turf/open/floor/carpet,
/area/hades)
"aX" = (
/obj/structure/chair/wood/normal{
icon_state = "wooden_chair";
dir = 4
},
/turf/open/floor/carpet,
/area/hades)
"aY" = (
/obj/structure/chair/wood/normal{
icon_state = "wooden_chair";
dir = 8
},
/turf/open/floor/carpet,
/area/hades)
"aZ" = (
/obj/structure/table/wood,
/obj/item/weapon/storage/crayons,
/turf/open/floor/carpet,
/area/hades)
"ba" = (
/obj/structure/table/wood,
/obj/item/weapon/razor,
/turf/open/floor/carpet,
/area/hades)
"bb" = (
/obj/machinery/door/airlock/wood,
/turf/open/floor/carpet,
/area/hades)
"bc" = (
/obj/structure/chair/hades,
/turf/open/floor/mineral/diamond,
/area/hades)
"bd" = (
/obj/machinery/vending/cola,
/turf/open/floor/carpet,
/area/hades)
"be" = (
/obj/machinery/vending/snack,
/turf/open/floor/carpet,
/area/hades)
"bf" = (
/obj/structure/table/wood,
/obj/machinery/chem_dispenser/drinks/beer,
/turf/open/floor/carpet,
/area/hades)
"bg" = (
/obj/structure/table/wood,
/obj/machinery/microwave,
/turf/open/floor/carpet,
/area/hades)
"bh" = (
/obj/structure/table/wood,
/obj/item/weapon/storage/box/donkpockets,
/turf/open/floor/carpet,
/area/hades)
"bi" = (
/obj/machinery/chem_dispenser/drinks,
/obj/structure/table/wood,
/turf/open/floor/carpet,
/area/hades)
"bj" = (
/obj/structure/chair/wood/normal,
/mob/living/simple_animal/hostile/hadesacolyte,
/turf/open/floor/carpet,
/area/hades)
"bk" = (
/obj/structure/table/wood,
/obj/item/weapon/kitchen/fork,
/turf/open/floor/carpet,
/area/hades)
"bl" = (
/obj/structure/chair/wood/normal{
icon_state = "wooden_chair";
dir = 1
},
/turf/open/floor/carpet,
/area/hades)
"bm" = (
/obj/structure/table/wood,
/obj/item/weapon/storage/box/drinkingglasses,
/turf/open/floor/carpet,
/area/hades)
(
1,
1,
1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaabacacacacacacacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaabadaeafafafafaeafafafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaababababagahahaiafafajahahagababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabacacacakalamananananaoalapacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabaeafafafafajaqaqaqaqajafafafafaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafafafaeafafaqaqaqaqafafaeafafafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafarasasasafaqataqaqafarasasarafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafafafafafafaqaqaqaqafafafafafafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafasasarasafaqaqaqaqafasarasasafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafafaeafafafaqataqaqafafaeafafafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafasasasarafaqaqaqaqafasasarasafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafafafaeafafaqauaqaqafafafafaeafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabafarasasasafaqaqataqafasarasasafabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabaeafafafafafaqaqaqaqafafafafafaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaabababababababaqaqaqaqababababababababababababababababababababababaa
aaaaabavavavavavabawaqaqaqabaxayazaAaxabaBaBaCaCaDaEabaFaGaHaHaHaGaFabaa
aaaaabaqaqaqaqaqabaIaqaqaqabaJaKaLaAayabaMaqaqaqaqaMabafafafaHafafafabaa
aaaaabaNaqaqaqaNabaOaqaqaqabaPayaJaxazabaMaqaqaqaqaCabafafafaHafafafabaa
aaaaabaQaRaqaqaQabaSaqaqaqabaTaTaTaTaTabaEaqaRaRaqaBaUafafafaHafafafabaa
aaaaabaVaqaqaqaOabaWaqaqaqabaXaqaqaqaYabaEaqaRaRaqaBabafafafaHafafafabaa
aaaaabaQaqaqaqaQabaZaqaqaqabaXaqaqaqaYabaEaqaqaqaqaCabafafafaHafafafabaa
aaaaabaIaqaqaRbaabaIaqaqaqbbaqaqaqaqaqabababbbababababaFaGaHbcaHaGaFabaa
aaaaabaQaRaqaqaQabaqaqaqaqabaqaqaqaqaqabaEaBaqaCaBaEabafafafaHafafafabaa
aaaaabababbbababababababababaqaqaqaqaqabaEaqaqaqaRaBabafafafaHafafafabaa
aaaaabaqaqaqaqbdbebfbgbhbiabaXaqaqaRaYabaBaqaqaqaqaEabafafafaHafafafabaa
aaaaabaqbjbjaqaqaqaqaqaqaqabaXaqaqaqaYabaCaqaqaqaqaMabafafafaHafafafabaa
aaaaabaXbkaIaYaqaqaqaqaqaqbbaqaqaqaqaqbbaqaqaRaqaqaEabafafafaHafafafabaa
aaaaabaqblblaqaqaqbmaIaIaOabaqaqaqaqaqabaMaMaBaDaCaMabaFaGaHaHaHaGaFabaa
aaaaabababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+18 -15
View File
@@ -23,21 +23,7 @@
height = bounds[MAP_MAXY]
return bounds
/datum/map_template/proc/load(turf/T, centered = FALSE)
if(centered)
T = locate(T.x - round(width/2) , T.y - round(height/2) , T.z)
if(!T)
return
if(T.x+width > world.maxx)
return
if(T.y+height > world.maxy)
return
var/list/bounds = maploader.load_map(get_file(), T.x, T.y, T.z, cropMap=TRUE)
if(!bounds)
return 0
//initialize things that are normally initialized after map load
/proc/initTemplateBounds(var/list/bounds)
var/list/obj/machinery/atmospherics/atmos_machines = list()
var/list/obj/structure/cable/cables = list()
var/list/atom/atoms = list()
@@ -58,6 +44,23 @@
SSmachine.setup_template_powernets(cables)
SSair.setup_template_machinery(atmos_machines)
/datum/map_template/proc/load(turf/T, centered = FALSE)
if(centered)
T = locate(T.x - round(width/2) , T.y - round(height/2) , T.z)
if(!T)
return
if(T.x+width > world.maxx)
return
if(T.y+height > world.maxy)
return
var/list/bounds = maploader.load_map(get_file(), T.x, T.y, T.z, cropMap=TRUE)
if(!bounds)
return 0
//initialize things that are normally initialized after map load
initTemplateBounds(bounds)
log_game("[name] loaded at at [T.x],[T.y],[T.z]")
return 1
+137 -51
View File
@@ -43,11 +43,14 @@
var/currentState = STATE_JUDGE
var/rageLevel = 0
var/maxWrathTimer = 150
var/lastWrathTimer = 0
var/list/validSins = list("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath")
var/lastsinPerson = 0
var/sinPersonTime = 300
var/lastFlee = 0
var/fleeTimer = 150
var/fleeTimer = 30
var/fakesinPersonChance = 60
var/list/sinPersonsayings = list("You revel in only your own greed.",\
"There is nothing but your absolution.",\
@@ -79,6 +82,14 @@
/mob/living/simple_animal/hostile/hades/New()
..()
//helper_datums/map_template.dmm make this a generic function
var/list/bounds = maploader.load_map('_maps/map_files/generic/chapel.dmm')
initTemplateBounds(bounds)
log_game("Chapel of Sin loaded by [src] spawning.")
//
sinLightning = new/obj/effect/proc_holder/spell/targeted/lightning(src)
sinLightning.charge_max = 1
@@ -123,6 +134,18 @@
SpinAnimation(0,0)
explosion(get_turf(src), 0, 2, 4, 6, flame_range = 6)
..()
var/area/A = locate(/area/hades) in world
if(A)
var/turf/T = get_turf(locate(/obj/effect/landmark/event_spawn) in A)
if(T)
src.visible_message("<span class='warning'><font size=4>[src]'s Staff is flung free as their body explodes.</font></span>")
var/obj/structure/ladder/unbreakable/hades/churchLadder = new/obj/structure/ladder/unbreakable/hades(T)
var/obj/structure/ladder/unbreakable/hades/bodyLadder = new/obj/structure/ladder/unbreakable/hades(get_turf(src))
var/obj/item/weapon/hades_staff/HS = new/obj/item/weapon/hades_staff(get_turf(src))
HS.throw_at_fast(pick(orange(src,7)),10,1)
churchLadder.up = bodyLadder
bodyLadder.down = churchLadder
qdel(src)
/mob/living/simple_animal/hostile/hades/attackby(obj/item/I, mob/user, params)
..()
@@ -210,8 +233,9 @@
if(..() && !isDoingDeath) // appropriately check if we're alive now we leave a corpse
if(health > maxHealth/4 && !isFleeing)
if(rageLevel > 50)
lastWrathTimer = world.time
currentState = STATE_WRATH
else if(rageLevel <= 0)
else
currentState = STATE_JUDGE
else
if(world.time > lastFlee + fleeTimer)
@@ -236,12 +260,16 @@
A.gib()
if(currentState == STATE_WRATH) // we have been enraged.
rageLevel -= 0.25 // rage phase starts at 50, meaning roughly 20s of rage.
if(world.time > lastWrathTimer + maxWrathTimer)
rageLevel = 0 // wind down if we're wrathful too long.
rageLevel -= 1 // rage phase starts at 50, meaning roughly 20s of rage.
if(currentAcolytes.len == 0)
src.say("Rise, Servants. AID YOUR MASTER.")
playsound(get_turf(src), 'sound/magic/CastSummon.ogg', 100, 1)
for(var/i in 1 to 5)
currentAcolytes += new/mob/living/simple_animal/hostile/hadesacolyte(get_turf(src))
var/mob/living/simple_animal/hostile/hadesacolyte/HA = new/mob/living/simple_animal/hostile/hadesacolyte(get_turf(src))
HA.master = src
currentAcolytes += HA
if(rageLevel >= 100)
rageLevel = 50
var/list/overboardSayings = list("Ashes! It will all be ashes!","I will bring about the apocolypse!",\
@@ -255,6 +283,7 @@
for(var/mob/living/A in nearby)
if(A.ckey)
slashCount++
A.Beam(src,"n_beam",'icons/effects/beam.dmi',10)
spawn(slashCount+3)
loc = get_turf(A)
sinShed(StartLoc)
@@ -322,98 +351,144 @@
src.say("Your sin, [sinPerson], is Greed.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
var/list/greed = list(/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/diamond)
for(var/i in 1 to 10)
var/greed_type = pick(greed)
new greed_type(get_turf(sinPerson))
sin_Greed(sinPerson, TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
var/mob/living/M = sinPerson.change_mob_type(/mob/living/simple_animal/cockroach,get_turf(sinPerson),"Greedroach",1)
M.AddSpell(new/obj/effect/proc_holder/spell/targeted/mind_transfer)
sin_Greed(sinPerson, FALSE)
if("Gluttony")
src.say("Your sin, [sinPerson], is Gluttony.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
var/list/allTypes = list()
for(var/A in typesof(/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/O = A
if(initial(O.cooked_type))
allTypes += A
for(var/i in 1 to 10)
var/greed_type = pick(allTypes)
new greed_type(get_turf(sinPerson))
sin_Gluttony(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sinPerson.reagents.add_reagent("nutriment",1000)
sin_Gluttony(sinPerson,FALSE)
if("Pride")
src.say("Your sin, [sinPerson], is Pride.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
var/obj/item/weapon/twohanded/sin_pride/good = new/obj/item/weapon/twohanded/sin_pride(get_turf(sinPerson))
good.pride_direction = FALSE
sin_Pride(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
var/obj/item/weapon/twohanded/sin_pride/bad = new/obj/item/weapon/twohanded/sin_pride(get_turf(sinPerson))
bad.pride_direction = TRUE
sin_Pride(sinPerson,FALSE)
if("Lust")
src.say("Your sin, [sinPerson], is Lust.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
var/obj/item/lovestone/good = new/obj/item/lovestone(get_turf(sinPerson))
good.lust_direction = FALSE
sin_Lust(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
var/obj/item/lovestone/bad = new/obj/item/lovestone(get_turf(sinPerson))
bad.lust_direction = TRUE
sin_Lust(sinPerson,TRUE)
if("Envy")
src.say("Your sin, [sinPerson], is Envy.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
for(var/mob/living/carbon/human/H in player_list) // name lottery
if(H == sinPerson)
continue
if(prob(25))
spawn(10)
sinPerson.name = H.name
sinPerson.real_name = H.real_name
var/datum/dna/lottery = H.dna
lottery.transfer_identity(sinPerson, transfer_SE=1)
sinPerson.updateappearance(mutcolor_update=1)
sinPerson.domutcheck()
sin_Envy(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
var/sinPersonspecies = pick(species_list)
var/newtype = species_list[sinPersonspecies]
sinPerson.set_species(newtype)
sin_Envy(sinPerson,FALSE)
if("Sloth")
src.say("Your sin, [sinPerson], is Sloth.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sinPerson.drowsyness += 1000
sin_Sloth(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sinPerson.reagents.add_reagent("frostoil", 50)
sin_Sloth(sinPerson,FALSE)
if("Wrath")
src.say("Your sin, [sinPerson], is Wrath.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sinPerson.change_mob_type(/mob/living/simple_animal/slaughter,get_turf(sinPerson),"Wrath Demon",1)
sin_Wrath(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sinPerson.reagents.add_reagent("lexorin", 100)
sinPerson.reagents.add_reagent("mindbreaker", 100)
sin_Wrath(sinPerson,FALSE)
///Sin related things
//global Sin procs, shared between staff and pope
/proc/sin_Greed(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
var/list/greed = list(/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/diamond)
for(var/i in 1 to 10)
var/greed_type = pick(greed)
new greed_type(get_turf(sinPerson))
else
var/mob/living/M = sinPerson.change_mob_type(/mob/living/simple_animal/cockroach,get_turf(sinPerson),"Greedroach",1)
M.AddSpell(new/obj/effect/proc_holder/spell/targeted/mind_transfer)
/proc/sin_Gluttony(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
var/list/allTypes = list()
for(var/A in typesof(/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/O = A
if(initial(O.cooked_type))
allTypes += A
for(var/i in 1 to 10)
var/greed_type = pick(allTypes)
new greed_type(get_turf(sinPerson))
else
sinPerson.reagents.add_reagent("nutriment",1000)
/proc/sin_Pride(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
var/obj/item/weapon/twohanded/sin_pride/good = new/obj/item/weapon/twohanded/sin_pride(get_turf(sinPerson))
good.name = "Indulged [good.name]"
good.pride_direction = FALSE
else
var/obj/item/weapon/twohanded/sin_pride/bad = new/obj/item/weapon/twohanded/sin_pride(get_turf(sinPerson))
bad.name = "Punished [bad.name]"
bad.pride_direction = TRUE
/proc/sin_Lust(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
var/obj/item/lovestone/good = new/obj/item/lovestone(get_turf(sinPerson))
good.name = "Indulged [good.name]"
good.lust_direction = FALSE
else
var/obj/item/lovestone/bad = new/obj/item/lovestone(get_turf(sinPerson))
bad.name = "Punished [bad.name]"
bad.lust_direction = TRUE
/proc/sin_Envy(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
for(var/mob/living/carbon/human/H in player_list) // name lottery
if(H == sinPerson)
continue
if(prob(25))
spawn(10)
sinPerson.name = H.name
sinPerson.real_name = H.real_name
var/datum/dna/lottery = H.dna
lottery.transfer_identity(sinPerson, transfer_SE=1)
sinPerson.updateappearance(mutcolor_update=1)
sinPerson.domutcheck()
else
var/sinPersonspecies = pick(species_list)
var/newtype = species_list[sinPersonspecies]
sinPerson.set_species(newtype)
/proc/sin_Sloth(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
sinPerson.drowsyness += 1000
else
sinPerson.reagents.add_reagent("frostoil", 50)
/proc/sin_Wrath(var/mob/living/carbon/human/sinPerson, var/isIndulged)
if(isIndulged)
sinPerson.change_mob_type(/mob/living/simple_animal/slaughter,get_turf(sinPerson),"Wrath Demon",1)
else
sinPerson.reagents.add_reagent("lexorin", 100)
sinPerson.reagents.add_reagent("mindbreaker", 100)
/obj/effect/overlay/temp/hadesFlick
name = "transdimensional waste"
icon = 'icons/mob/mob.dmi'
icon_state = "liquify"
duration = 15
/obj/effect/timestop/hades // custom timeslip to make him immune
name = "Frozen Time"
desc = "Time has slowed to a halt."
@@ -503,9 +578,9 @@
/mob/living/simple_animal/hostile/hadesacolyte
name = "Acolyte of Hades"
desc = "Darkness seethes from their every pore."
icon_state = "faithless"
icon_living = "faithless"
icon_dead = "faithless_dead"
icon_state = "hades_acolyte"
icon_living = "hades_acolyte"
icon_dead = "hades_acolyte_dead"
speak_chance = 0
turns_per_move = 5
response_help = "trembles in fear of"
@@ -525,6 +600,17 @@
del_on_death = 0
faction = list("hades")
var/mob/living/simple_animal/hostile/hades/master
/mob/living/simple_animal/hostile/hadesacolyte/Life()
if(..())
if(master)
if(get_dist(src,master) > 5)
src.visible_message("<span class='warning'>[src] twists and distorts, before vanishing in a snap.</span>")
src.forceMove(get_turf(master))
#undef STATE_JUDGE
#undef STATE_WRATH
#undef STATE_FLEE
@@ -0,0 +1,166 @@
/area/hades
name = "Chapel of Sin"
icon_state = "yellow"
requires_power = 0
has_gravity = 1
/turf/open/floor/plasteel/hades
name = "Sin-touched Floor"
icon_state = "cult"
/obj/structure/chair/hades
name = "Cross of Hades"
desc = "An inverted cross, with straps on it to support the weight of a living being."
icon_state = "chair_hades"
var/list/watchedSpikes = list()
/obj/structure/chair/hades/New()
..()
flags |= NODECONSTRUCT
for(var/obj/structure/kitchenspike/KS in range(12))
watchedSpikes += KS
/obj/structure/chair/hades/proc/considerReady()
//buckled_mobs seems to work inconsistently, so we're doing some custom searching here.
if(!buckled_mobs)
return FALSE
if(!buckled_mobs.len)
return FALSE
for(var/obj/structure/kitchenspike/KS in watchedSpikes)
var/mob/living/M = locate(/mob/living) in get_turf(KS)
if(!M)
return FALSE
return TRUE
/obj/structure/chair/hades/proc/completeRitual()
for(var/obj/structure/kitchenspike/KS in watchedSpikes)
var/mob/living/M = locate(/mob/living) in get_turf(KS)
M.gib()
playsound(get_turf(src), 'sound/effects/pope_entry.ogg', 100, 1)
spawn(100)
playsound(get_turf(src), 'sound/effects/hyperspace_end.ogg', 100, 1)
new/obj/item/weapon/hades_staff/imbued(get_turf(src))
src.visible_message("<span class='warning'>[src] shatters into a thousand shards, a staff falling from it.</span>")
qdel(src)
/obj/structure/chair/hades/attackby(obj/item/weapon/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/hades_staff))
src.visible_message("<span class='warning'>[user] inserts the [W] into the [src], giving it a quick turn.</span>")
if(considerReady())
qdel(W)
src.visible_message("<span class='warning'>[src] shudders, the sound of moving gears arising...</span>")
for(var/mob/living/M in buckled_mobs)
M.gib()
for(var/i in 1 to 4)
spawn(i*10)
playsound(get_turf(src), 'sound/effects/clang.ogg', 100, 1)
spawn(50)
src.visible_message("<span class='warning'>[src] begins to lower into the ground...</span>")
icon_state = "chair_hades_slide"
addtimer(src, "completeRitual", 50, FALSE)
else
src.visible_message("<span class='warning'>[src] clunks, the sound of grinding gears arising. Nothing happens.</span>")
/obj/structure/ladder/unbreakable/hades
name = "Dimensional Rift"
desc = "Where does it lead?"
icon = 'icons/mob/EvilPope.dmi'
icon_state = "popedeath"
anchored = TRUE
/obj/structure/ladder/unbreakable/hades/update_icon()
return
/obj/item/weapon/paper/hades_instructions
name = "paper- 'Hastily Scrawled Letter'"
info = "The Master has instructed us to collect corpses for the ritual, and told us to deposity them in the Ritual Room, behind a bookcase in the library. The Master has locked the device to only work with his key, so no more accidents happen."
/obj/item/weapon/hades_staff
name = "Staff of Hades"
desc = "A large, dark staff, with a set of key-like prongs on the end."
icon_state = "staffofchange"
icon = 'icons/obj/guns/magic.dmi'
item_state = "staffofchange"
slot_flags = SLOT_BELT | SLOT_BACK
force = 40
throwforce = 10
w_class = 3
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("slapped", "shattered", "blasphemed", "smashed", "whacked", "crushed", "hammered")
block_chance = 50
/obj/item/weapon/hades_staff/imbued
name = "Imbued Staff of Hades"
desc = " Bestowed with the power of wayward souls, this Staff allows the wielder to judge a target."
var/lastJudge = 0
var/judgeCooldown = 150
/obj/item/weapon/hades_staff/imbued/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
if(!istype(M))
return ..()
if(world.time > lastJudge + judgeCooldown)
var/mob/living/sinPerson = M
lastJudge = world.time
var/sinPersonchoice = pick("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath")
switch(sinPersonchoice)
if("Greed")
src.say("Your sin, [sinPerson], is Greed.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Greed(sinPerson, TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Greed(sinPerson, FALSE)
if("Gluttony")
src.say("Your sin, [sinPerson], is Gluttony.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Gluttony(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Gluttony(sinPerson,FALSE)
if("Pride")
src.say("Your sin, [sinPerson], is Pride.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Pride(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Pride(sinPerson,FALSE)
if("Lust")
src.say("Your sin, [sinPerson], is Lust.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Lust(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Lust(sinPerson,TRUE)
if("Envy")
src.say("Your sin, [sinPerson], is Envy.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Envy(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Envy(sinPerson,FALSE)
if("Sloth")
src.say("Your sin, [sinPerson], is Sloth.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Sloth(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Sloth(sinPerson,FALSE)
if("Wrath")
src.say("Your sin, [sinPerson], is Wrath.")
if(prob(50))
src.say("I will indulge your sin, [sinPerson].")
sin_Wrath(sinPerson,TRUE)
else
src.say("Your sin will be punished, [sinPerson]!")
sin_Wrath(sinPerson,FALSE)
else
..()
user << "The [src] is still recharging."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+1
View File
@@ -364,6 +364,7 @@
#include "code\game\gamemodes\miniantags\bot_swarm\swarmer.dm"
#include "code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm"
#include "code\game\gamemodes\miniantags\hades\hades.dm"
#include "code\game\gamemodes\miniantags\hades\hades_chapel.dm"
#include "code\game\gamemodes\miniantags\monkey\monkey.dm"
#include "code\game\gamemodes\miniantags\morph\morph.dm"
#include "code\game\gamemodes\miniantags\sintouched\objectives.dm"