Naughty List Revenge

Santa has refused to deliver presents to the NSS Cyberiad for an unknown
reason.

Meanwhile, a distress beacon is received from the North Pole, on an
unencrypted Syndicate frequency. Apparently, Christmas Eve was anything
but a silent night.

A rogue operative seems to have infiltrated the North Pole and attempted
to coerce Santa into removing him from the Naughty List, but his plans
may have backfired. Santa has finally snapped, and must be put down in
order for the crew to receive their gifts this year.

The gateway has been reconfigured to lock onto the general location of
the distress signal, and will not lock on to any other destinations
until after Christmas has passed. Be warned, however, that the frozen
north is far from hospitable, and a variety of dangers await you beyond
the safety of the blast doors.

This mission will offer some new challenges, and is designed to be
undertaken by a squad of players. Will your team be able to put Father
Christmas to rest and rescue the presents, or will you meet your demise
in the freezing tundra?
This commit is contained in:
FalseIncarnate
2015-12-24 03:40:31 -05:00
parent b7d41226ee
commit c032781c7b
14 changed files with 420 additions and 9 deletions
@@ -0,0 +1,23 @@
/obj/item/weapon/paper/journal_scrap_1
name = "survivor's journal page 1"
info = "Coal again.<br> \
Every year, coal in my stockings when this stupid holiday comes around.<br> \
Not this year though. This year will be different. I'm going to find that fat man, I swear.<br> \
He'll have to give me all the good presents, if he wants to live long enough to get any cookies."
/obj/item/weapon/paper/journal_scrap_2
name = "survivor's journal page 9"
info = "The North Pole... You'd think it was a part of his legend, but he actually lives there!<br> \
The elves and village are a lie though. Not sure where the toys come from yet, but I'll get them.<br> \
Not much out here, a couple little shacks and a big igloo in the center... Bet he's inside that.<br> \
On an unrelated note, great packing snow. Built a snowman today."
/obj/item/weapon/paper/journal_scrap_3
name = "survivor's journal page 25"
info = "Oh man... This is bad...<br> \
Not even my Syndicate training was a match for him. Barely made it out with my life.<br> \
He was just waiting for me... He knew. He was ready.<br> \
Couldn't make it back to my shack. That gun would have helped, if only I brought it...<br> \
Cave-in has me trapped in here, I just hope the distress signal reaches help in time... <br> \
<br> \
He knows. He knows. He knows. He knows. He knows. He knows. He knows. He knows. He knows."
@@ -35,7 +35,7 @@
max_n2 = 0
minbodytemp = 0
faction = list("hostile")
faction = list("hostile", "winter")
/mob/living/simple_animal/hostile/tree/FindTarget()
. = ..()
@@ -0,0 +1,147 @@
//////////////////////////
// Winter Mobs //
//////////////////////////
/mob/living/simple_animal/hostile/winter
faction = list("hostile", "syndicate", "winter")
speak_chance = 0
turns_per_move = 5
speed = 1
maxHealth = 50
health = 50
icon = 'icons/mob/winter_mob.dmi'
icon_state = "placeholder"
icon_living = "placeholder"
icon_dead = "placeholder"
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
melee_damage_lower = 3
melee_damage_upper = 7
var/weapon1
/mob/living/simple_animal/hostile/winter/snowman
name = "snowman"
desc = "A very angry snowman. Doesn't look like it wants to play around..."
icon_state = "snowman"
icon_living = "snowman"
icon_dead = "snowman-dead"
weapon1 = /obj/item/weapon/melee/candy_sword
bodytemperature = 73.0 //it's made of snow and hatred, so it's pretty cold.
maxbodytemp = 280.15 //at roughly 7 C, these will start melting (dying) from the warmth. Mind over matter or something.
heat_damage_per_tick = 10 //Now With Rapid Thawing Action!
/mob/living/simple_animal/hostile/winter/snowman/death()
if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
new /obj/structure/snowman(get_turf(src))
visible_message("<span class='notice'>The [src.name] shimmers as its animating magic fades away!</span>")
..() //this is just to make sure it gets properly killed before we qdel it
qdel(src)
else
..()
/mob/living/simple_animal/hostile/winter/snowman/ranged
ranged = 1
retreat_distance = 5
minimum_distance = 5
projectiletype = /obj/item/projectile/snowball
weapon1 = null
/mob/living/simple_animal/hostile/winter/reindeer
name = "reindeer"
desc = "Apparently murder is a reindeer game."
icon_state = "reindeer"
icon_living = "reindeer"
icon_dead = "reindeer-dead"
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 3
melee_damage_lower = 5
melee_damage_upper = 10
/mob/living/simple_animal/hostile/winter/santa
maxHealth = 150 //if this seems low for a "boss", it's because you have to fight him multiple times, with him fully healing between stages
health = 150
var/next_stage = null
name = "Santa Claus"
icon_state = "santa"
icon_living = "santa"
icon_dead = "santa-dead"
/mob/living/simple_animal/hostile/winter/santa/stage_1 //stage 1: slow melee
desc = "GET THE FAT MAN!"
next_stage = /mob/living/simple_animal/hostile/winter/santa/stage_2
speed = 2
melee_damage_lower = 5
melee_damage_upper = 15
/mob/living/simple_animal/hostile/winter/santa/stage_1/death()
..()
visible_message("<span class='danger'>HO HO HO! YOU THOUGHT IT WOULD BE THIS EASY?!?</span>")
spawn(5)
new next_stage(get_turf(src))
qdel(src) //hide the body
/mob/living/simple_animal/hostile/winter/santa/stage_2 //stage 2: slow ranged
desc = "GET THE FAT MAN AGAIN!"
next_stage = /mob/living/simple_animal/hostile/winter/santa/stage_3
ranged = 1
projectiletype = /obj/item/projectile/ornament
retreat_distance = 5
minimum_distance = 5
/mob/living/simple_animal/hostile/winter/santa/stage_2/death()
..()
visible_message("<span class='danger'>YOU'VE BEEN VERY NAUGHTY! PREPARE TO DIE!</span>")
spawn(5)
new next_stage(get_turf(src))
qdel(src) //hide the body
/mob/living/simple_animal/hostile/winter/santa/stage_3 //stage 3: fast rapidfire ranged
desc = "WHY WON'T HE DIE ALREADY!?"
next_stage = /mob/living/simple_animal/hostile/winter/santa/stage_4
ranged = 1
rapid = 1
speed = 0 //he's lost some weight from the fighting
projectiletype = /obj/item/projectile/ornament
retreat_distance = 3
minimum_distance = 3
/mob/living/simple_animal/hostile/winter/santa/stage_3/death()
..()
visible_message("<span class='danger'>FACE MY FINAL FORM AND KNOW DESPAIR!</span>")
spawn(5)
new next_stage(get_turf(src))
qdel(src) //hide the body
/mob/living/simple_animal/hostile/winter/santa/stage_4 //stage 4: fast spinebreaker
name = "Final Form Santa"
desc = "WHAT THE HELL IS HE!?! WHY WON'T HE STAY DEAD!?!"
ranged = 0
rapid = 0
speed = 0 //he's lost some weight from the fighting
environment_smash = 2 //naughty walls must be punished too
melee_damage_lower = 10
melee_damage_upper = 25 //that's gonna leave a mark, for sure
/mob/living/simple_animal/hostile/winter/santa/stage_4/death()
world << "<span class='notice'>THE FAT MAN HAS FALLEN!</span>"
world << "<span class='notice'>SANTA CLAUS HAS BEEN DEFEATED!</span>"
..()
var/obj/item/weapon/grenade/clusterbuster/xmas/X = new /obj/item/weapon/grenade/clusterbuster/xmas(get_turf(src))
var/obj/item/weapon/grenade/clusterbuster/xmas/Y = new /obj/item/weapon/grenade/clusterbuster/xmas(get_turf(src))
X.prime()
Y.prime()
@@ -224,9 +224,9 @@
/mob/living/simple_animal/proc/handle_temperature_damage()
if(bodytemperature < minbodytemp)
adjustBruteLoss(2)
adjustBruteLoss(cold_damage_per_tick)
else if(bodytemperature > maxbodytemp)
adjustBruteLoss(3)
adjustBruteLoss(heat_damage_per_tick)
/mob/living/simple_animal/Bumped(AM as mob|obj)
if(!AM) return
+33 -1
View File
@@ -354,4 +354,36 @@ obj/item/projectile/kinetic/New()
return ..()
if(!gun)
qdel(src)
gun.create_portal(src)
gun.create_portal(src)
/obj/item/projectile/snowball
name = "snowball"
icon_state = "snowball"
hitsound = 'sound/items/dodgeball.ogg'
damage = 3
damage_type = BURN
/obj/item/projectile/snowball/on_hit(atom/target) //chilling
if(istype(target, /mob/living))
var/mob/living/M = target
M.bodytemperature = max(0, M.bodytemperature - 50) //each hit will drop your body temp, so don't get surrounded!
M.ExtinguishMob() //bright side, they counter being on fire!
/obj/item/projectile/ornament
name = "ornament"
icon_state = "ornament-1"
hitsound = 'sound/effects/Glasshit.ogg'
damage = 5
damage_type = BRUTE
/obj/item/projectile/ornament/New()
icon_state = pick("ornament-1", "ornament-2")
..()
/obj/item/projectile/ornament/on_hit(atom/target) //knockback
if(istype(target, /turf))
return 0
var/obj/T = target
var/throwdir = get_dir(firer,target)
T.throw_at(get_edge_target_turf(target, throwdir),10,10)
return 1