Merge pull request #15275 from keronshb/halloweenball2021
Spookystation (Ball Map) and Vector Cars
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#define LOG_BURN_TIMER 150
|
||||
#define LOG_BURN_TIMER 400
|
||||
#define PAPER_BURN_TIMER 5
|
||||
#define MAXIMUM_BURN_TIMER 3000
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
pixel_x = -16
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/lit = FALSE
|
||||
light_color = "#E38C2D"
|
||||
|
||||
var/fuel_added = 0
|
||||
var/flame_expiry_timer
|
||||
@@ -64,6 +65,12 @@
|
||||
</span>")
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER)
|
||||
qdel(T)
|
||||
else if(istype(T,/obj/item/grown/log))
|
||||
user.visible_message("<span class='notice'>[user] tosses some \
|
||||
wood into [src].</span>", "<span class='notice'>You add \
|
||||
some fuel to [src].</span>")
|
||||
adjust_fuel_timer(LOG_BURN_TIMER)
|
||||
qdel(T)
|
||||
else if(try_light(T,user))
|
||||
return
|
||||
else
|
||||
|
||||
@@ -40,6 +40,16 @@
|
||||
density = FALSE
|
||||
pixel_x = -16
|
||||
|
||||
/obj/structure/flora/stump/attackby(obj/item/W, mob/user, params)
|
||||
if((W.tool_behaviour == TOOL_SHOVEL) && params)
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
new /obj/item/grown/log/tree(get_turf(src))
|
||||
user.visible_message("[user] digs up [src].", "<span class='notice'>You dig up [src].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/flora/tree/pine
|
||||
name = "pine tree"
|
||||
desc = "A coniferous pine tree."
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
icon_state = "wood"
|
||||
baseturfs = /turf/closed/indestructible/wood
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood, /turf/closed/indestructible/wood)
|
||||
|
||||
/turf/closed/indestructible/oldshuttle/corner
|
||||
icon_state = "corner"
|
||||
|
||||
@@ -10,8 +10,12 @@
|
||||
speech_span = "spooky"
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
var/active = TRUE
|
||||
var/BallTutorial = FALSE
|
||||
|
||||
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
|
||||
if(BallTutorial)
|
||||
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and we’re back again after a few additions here and there. Next to me you can find all the tools you’ll need to build a nice private house, if you’re here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if you’re more interested in building a cave dwelling. Finally the umbrella and light sources are because it’s spooky, and it might rain! As for interesting spots; There’s the old abandoned mansion which you can get to by going through the entrance and towards the east. There’s also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
|
||||
return
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
@@ -27,6 +31,9 @@
|
||||
say("It doesn't seem like that's magical enough!")
|
||||
|
||||
/obj/item/barthpot/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
if(BallTutorial)
|
||||
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and we’re back again after a few additions here and there. Next to me you can find all the tools you’ll need to build a nice private house, if you’re here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if you’re more interested in building a cave dwelling. Finally the umbrella and light sources are because it’s spooky, and it might rain! As for interesting spots; There’s the old abandoned mansion which you can get to by going through the entrance and towards the east. There’s also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
|
||||
return
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
|
||||
@@ -268,3 +268,65 @@
|
||||
category = "Holiday"
|
||||
item = /obj/item/card/emag/halloween
|
||||
surplus = 0
|
||||
|
||||
/////////////////////////
|
||||
// Ball map Items //
|
||||
/////////////////////////
|
||||
|
||||
|
||||
/obj/item/wisp_lantern/pumpkin
|
||||
name = "Pumpkin lantern"
|
||||
desc = "This lantern gives off no light, but is home to a friendly Jacq o' latern."
|
||||
icon_state = "lantern-on"
|
||||
var/obj/effect/wisp/pumpkin/wisp2
|
||||
|
||||
//Hoooo boy that's some wild code there.
|
||||
/obj/item/wisp_lantern/pumpkin/Initialize()
|
||||
. = ..()
|
||||
qdel(wisp)
|
||||
wisp2 = new(src)
|
||||
wisp = wisp2
|
||||
|
||||
/obj/effect/wisp/pumpkin
|
||||
name = "Friendly pumpkin"
|
||||
desc = "Happy to spook your way."
|
||||
icon = 'icons/obj/clothing/hats.dmi'
|
||||
icon_state = "hardhat1_pumpkin_j"
|
||||
light_range = 5
|
||||
light_color = "#EE9933"
|
||||
layer = 0
|
||||
sight_flags = SEE_MOBS
|
||||
lighting_alpha = 0
|
||||
|
||||
/obj/effect/wisp/pumpkin/update_user_sight(mob/user) //Disables SUPERLIGHTS
|
||||
return
|
||||
|
||||
//Damnit LazyBones
|
||||
/mob/living/simple_animal/lazy_bones
|
||||
name = "Lazy Bones"
|
||||
desc = "Simply refuses to get out of bed!"
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "skeleton"
|
||||
icon_living = "skeleton"
|
||||
icon_dead = "skeleton"
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
turns_per_move = 5
|
||||
speak_emote = list("rattles")
|
||||
emote_see = list("rattles")
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
speed = 0
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
faction = list("skeleton")
|
||||
see_in_dark = 8
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
deathmessage = "collapses into a pile of bones!"
|
||||
del_on_death = 1
|
||||
loot = list(/obj/effect/decal/remains/human)
|
||||
|
||||
stop_automated_movement = 1
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
var/cached_z
|
||||
/// I'm busy, don't move.
|
||||
var/busy = FALSE
|
||||
var/spawn_cars = FALSE
|
||||
|
||||
var/static/blacklisted_items = typecacheof(list(
|
||||
/obj/effect,
|
||||
@@ -91,6 +92,9 @@
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/on_attack_hand(mob/living/carbon/human/M)
|
||||
if(spawn_cars)
|
||||
spawn_cars(M)
|
||||
return ..()
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
@@ -101,6 +105,9 @@
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
|
||||
if(spawn_cars)
|
||||
spawn_cars(M)
|
||||
return ..()
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
@@ -128,6 +135,8 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/poof()
|
||||
if(!active)//if disabled, don't poof
|
||||
return
|
||||
last_poof = world.realtime
|
||||
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
@@ -470,6 +479,30 @@
|
||||
sleep(20)
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/spawn_cars(mob/living/carbon/C)
|
||||
visible_message("<b>[src]</b> gives off a glowing smile, <span class='spooky'>\"What ken Ah offer ye? I can magic up a vectorcraft in manual or automatic fer ye.\"</span>")
|
||||
var/choices_reward = list("Manual", "Automatic", "How do Automatics work?", "Nothing, thanks")
|
||||
var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward
|
||||
|
||||
switch(choice_reward)
|
||||
if("Manual")
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Great choice! 'Ere's yer car.\"</span>")
|
||||
jacqrunes("Great choice! 'Ere's yer car.", C)
|
||||
new /obj/vehicle/sealed/vectorcraft(loc)
|
||||
if("Automatic")
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"'Ere's yer car. Not as fast as an automatic mind.\"</span>")
|
||||
jacqrunes("'Ere's yer car. Not as fast as an automatic mind.", C)
|
||||
new /obj/vehicle/sealed/vectorcraft/auto(loc)
|
||||
if("How do Automatics work?")
|
||||
visible_message("<b>[src]</b> smiles, <span class='spooky'>\"Hold wasd to gain speed in a direction, c to enable/disable the clutch, 1 2 3 4 to change gears (help is gear 1, disarm is gear 2, grab is gear 3 and harm is gear 4) while holding a direction (make sure the clutch is enabled when you change gears, you should hear a sound when you've successfully changed gears), r to toggle handbrake, hold alt for brake and press shift for boost (the machine will beep when the boost is recharged)! If you hear an ebbing sound like \"brbrbrbrbr\" you need to gear down, the whining sound means you need to gear up. Hearing a pleasant \"whumwhumwhum\" is optimal gearage! It can be a lil slow to start, so make sure you're in the 1st gear, andusing a boost to get you started is a good idea. If you've got a good speed you'll likely never need to dip down to gear 1 again, and make sure to hold the acceleration pedal down while changing gears (hold a direction). 1st gear is for slow movement, and it's a good idea to mvoe to 2nd gear as quick as you can, you can coldstart a car from gear one by slowly moving, then using the boost to jump you up to gear 2 speeds. The upper gears are for unlimiting your top speed.\"</span>")
|
||||
jacqrunes("They're a bit tricky, aye. Basically;", C)
|
||||
if("Nothing, thanks")
|
||||
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Suit yerself.\"</span>")
|
||||
jacqrunes("Suit yerself.", C)
|
||||
|
||||
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there.\"</span>")
|
||||
jacqrunes("Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there. ", C)
|
||||
|
||||
/mob/living/simple_animal/jacq/update_mobility()
|
||||
. = ..()
|
||||
if(busy)
|
||||
|
||||
@@ -193,6 +193,13 @@
|
||||
new /obj/item/book/manual/wiki/research_and_development(src)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/bookcase/manuals/medical
|
||||
name = "medical manuals bookcase"
|
||||
|
||||
/obj/structure/bookcase/manuals/medical/Initialize()
|
||||
. = ..()
|
||||
new /obj/item/book/manual/wiki/medical_cloning(src)
|
||||
update_icon()
|
||||
|
||||
/*
|
||||
* Book
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
return BULLET_ACT_BLOCK
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/C = target
|
||||
C.regenerate_limbs()
|
||||
if(!is_species(C, /datum/species/dullahan)) //No accidental instagibbing dullahans please
|
||||
C.regenerate_limbs()
|
||||
C.regenerate_organs()
|
||||
if(target.revive(full_heal = 1))
|
||||
target.grab_ghost(force = TRUE) // even suicides
|
||||
|
||||
@@ -192,7 +192,8 @@
|
||||
/obj/item/clothing/under/costume/cheongsam = 3,
|
||||
/obj/item/clothing/under/costume/cheongsam/white = 3,
|
||||
/obj/item/clothing/under/costume/cheongsam/red = 3,
|
||||
/obj/item/storage/backpack/snail = 3)
|
||||
/obj/item/storage/backpack/snail = 3,
|
||||
/obj/item/umbrella = 5)
|
||||
contraband = list(/obj/item/clothing/accessory/turtleneck/tactifool/syndicate = 3,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 3,
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt = 3,
|
||||
|
||||
Reference in New Issue
Block a user