mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user