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
@@ -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