Adds departmental banners
This commit is contained in:
committed by
CitadelStationBot
parent
a6e280cbad
commit
af5ffcc83a
@@ -1,27 +1,201 @@
|
|||||||
/obj/item/banner
|
/obj/item/banner
|
||||||
name = "banner"
|
name = "banner"
|
||||||
|
desc = "A banner with Nanotrasen's logo on it."
|
||||||
icon = 'icons/obj/items_and_weapons.dmi'
|
icon = 'icons/obj/items_and_weapons.dmi'
|
||||||
icon_state = "banner"
|
icon_state = "banner"
|
||||||
item_state = "banner"
|
item_state = "banner"
|
||||||
|
force = 8
|
||||||
|
attack_verb = list("forcefully inspired", "violently encouraged", "relentlessly galvanized")
|
||||||
lefthand_file = 'icons/mob/inhands/equipment/banners_lefthand.dmi'
|
lefthand_file = 'icons/mob/inhands/equipment/banners_lefthand.dmi'
|
||||||
righthand_file = 'icons/mob/inhands/equipment/banners_righthand.dmi'
|
righthand_file = 'icons/mob/inhands/equipment/banners_righthand.dmi'
|
||||||
desc = "A banner with Nanotrasen's logo on it."
|
var/inspiration_available = TRUE //If this banner can be used to inspire crew
|
||||||
var/moralecooldown = 0
|
var/morale_time = 0
|
||||||
var/moralewait = 600
|
var/morale_cooldown = 600 //How many deciseconds between uses
|
||||||
|
var/list/job_loyalties //Mobs with any of these assigned roles will be inspired
|
||||||
|
var/list/role_loyalties //Mobs with any of these special roles will be inspired
|
||||||
|
var/warcry
|
||||||
|
|
||||||
|
/obj/item/banner/examine(mob/user)
|
||||||
|
..()
|
||||||
|
if(inspiration_available)
|
||||||
|
to_chat(user, "<span class='notice'>Activate it in your hand to inspire nearby allies of this banner's allegiance!</span>")
|
||||||
|
|
||||||
/obj/item/banner/attack_self(mob/living/carbon/human/user)
|
/obj/item/banner/attack_self(mob/living/carbon/human/user)
|
||||||
if(moralecooldown + moralewait > world.time)
|
if(!inspiration_available)
|
||||||
return
|
return
|
||||||
to_chat(user, "<span class='notice'>You increase the morale of your fellows!</span>")
|
if(morale_time > world.time)
|
||||||
moralecooldown = world.time
|
to_chat(user, "<span class='warning'>You aren't feeling inspired enough to flourish [src] again yet.</span>")
|
||||||
|
return
|
||||||
|
user.visible_message("<span class='big notice'>[user] flourishes [src]!</span>", \
|
||||||
|
"<span class='notice'>You raise [src] skywards, inspiring your allies!</span>")
|
||||||
|
playsound(src, "rustle", 100, FALSE)
|
||||||
|
if(warcry)
|
||||||
|
user.say("[warcry]")
|
||||||
|
var/old_transform = user.transform
|
||||||
|
user.transform *= 1.2
|
||||||
|
animate(user, transform = old_transform, time = 10)
|
||||||
|
morale_time = world.time + morale_cooldown
|
||||||
|
|
||||||
for(var/mob/living/carbon/human/H in range(4,get_turf(src)))
|
var/list/inspired = list()
|
||||||
to_chat(H, "<span class='notice'>Your morale is increased by [user]'s banner!</span>")
|
var/has_job_loyalties = LAZYLEN(job_loyalties)
|
||||||
H.adjustBruteLoss(-15)
|
var/has_role_loyalties = LAZYLEN(role_loyalties)
|
||||||
H.adjustFireLoss(-15)
|
inspired += user //The user is always inspired, regardless of loyalties
|
||||||
H.AdjustStun(-40)
|
for(var/mob/living/carbon/human/H in range(4, get_turf(src)))
|
||||||
H.AdjustKnockdown(-40)
|
if(H.stat == DEAD || H == user)
|
||||||
H.AdjustUnconscious(-40)
|
continue
|
||||||
|
if(H.mind && (has_job_loyalties || has_role_loyalties))
|
||||||
|
if(has_job_loyalties && H.mind.assigned_role in job_loyalties)
|
||||||
|
inspired += H
|
||||||
|
else if(has_role_loyalties && H.mind.special_role in role_loyalties)
|
||||||
|
inspired += H
|
||||||
|
else if(check_inspiration(H))
|
||||||
|
inspired += H
|
||||||
|
|
||||||
|
for(var/V in inspired)
|
||||||
|
var/mob/living/carbon/human/H = V
|
||||||
|
if(H != user)
|
||||||
|
to_chat(H, "<span class='notice'>Your confidence surges as [user] flourishes [user.p_their()] [name]!</span>")
|
||||||
|
inspiration(H)
|
||||||
|
special_inspiration(H)
|
||||||
|
|
||||||
|
/obj/item/banner/proc/check_inspiration(mob/living/carbon/human/H) //Banner-specific conditions for being eligible
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/banner/proc/inspiration(mob/living/carbon/human/H)
|
||||||
|
H.adjustBruteLoss(-15)
|
||||||
|
H.adjustFireLoss(-15)
|
||||||
|
H.AdjustStun(-40)
|
||||||
|
H.AdjustKnockdown(-40)
|
||||||
|
H.AdjustUnconscious(-40)
|
||||||
|
playsound(H, 'sound/magic/staff_healing.ogg', 25, FALSE)
|
||||||
|
|
||||||
|
/obj/item/banner/proc/special_inspiration(mob/living/carbon/human/H) //Any banner-specific inspiration effects go here
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/banner/security
|
||||||
|
name = "securistan banner"
|
||||||
|
desc = "The banner of Securistan, ruling the station with an iron fist."
|
||||||
|
icon_state = "banner_security"
|
||||||
|
job_loyalties = list("Security Officer", "Warden", "Detective", "Head of Security")
|
||||||
|
warcry = "EVERYONE DOWN ON THE GROUND!!"
|
||||||
|
|
||||||
|
/obj/item/banner/security/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/datum/crafting_recipe/security_banner
|
||||||
|
name = "Securistan Banner"
|
||||||
|
result = /obj/item/banner/security/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/rank/security = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
|
/obj/item/banner/medical
|
||||||
|
name = "meditopia banner"
|
||||||
|
desc = "The banner of Meditopia, generous benefactors that cure wounds and shelter the weak."
|
||||||
|
icon_state = "banner_medical"
|
||||||
|
job_loyalties = list("Medical Doctor", "Chemist", "Geneticist", "Virologist", "Chief Medical Officer")
|
||||||
|
warcry = "No wounds cannot be healed!"
|
||||||
|
|
||||||
|
/obj/item/banner/medical/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/obj/item/banner/medical/check_inspiration(mob/living/carbon/human/H)
|
||||||
|
return H.stat //Meditopia is moved to help those in need
|
||||||
|
|
||||||
|
/datum/crafting_recipe/medical_banner
|
||||||
|
name = "Meditopia Banner"
|
||||||
|
result = /obj/item/banner/medical/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/rank/medical = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
|
/obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H)
|
||||||
|
H.adjustToxLoss(-15)
|
||||||
|
H.setOxyLoss(0)
|
||||||
|
H.reagents.add_reagent("inaprovaline", 5)
|
||||||
|
|
||||||
|
/obj/item/banner/science
|
||||||
|
name = "sciencia banner"
|
||||||
|
desc = "The banner of Sciencia, bold and daring thaumaturges and researchers that take the path less traveled."
|
||||||
|
icon_state = "banner_science"
|
||||||
|
job_loyalties = list("Scientist", "Roboticist", "Research Director")
|
||||||
|
warcry = "For Cuban Pete!"
|
||||||
|
|
||||||
|
/obj/item/banner/science/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/obj/item/banner/science/check_inspiration(mob/living/carbon/human/H)
|
||||||
|
return H.on_fire //Sciencia is pleased by dedication to the art of Toxins
|
||||||
|
|
||||||
|
/datum/crafting_recipe/science_banner
|
||||||
|
name = "Sciencia Banner"
|
||||||
|
result = /obj/item/banner/science/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/rank/scientist = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
|
/obj/item/banner/cargo
|
||||||
|
name = "cargonia banner"
|
||||||
|
desc = "The banner of the eternal Cargonia, with the mystical power of conjuring any object into existence."
|
||||||
|
icon_state = "banner_cargo"
|
||||||
|
job_loyalties = list("Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||||
|
warcry = "Hail Cargonia!"
|
||||||
|
|
||||||
|
/obj/item/banner/cargo/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/datum/crafting_recipe/cargo_banner
|
||||||
|
name = "Cargonia Banner"
|
||||||
|
result = /obj/item/banner/cargo/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/rank/cargotech = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
|
/obj/item/banner/engineering
|
||||||
|
name = "engitopia banner"
|
||||||
|
desc = "The banner of Engitopia, wielders of limitless power."
|
||||||
|
icon_state = "banner_engineering"
|
||||||
|
job_loyalties = list("Station Engineer", "Atmospheric Technician", "Chief Engineer")
|
||||||
|
warcry = "All hail lord Singuloth!!"
|
||||||
|
|
||||||
|
/obj/item/banner/engineering/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H)
|
||||||
|
H.radiation = 0
|
||||||
|
|
||||||
|
/datum/crafting_recipe/engineering_banner
|
||||||
|
name = "Engitopia Banner"
|
||||||
|
result = /obj/item/banner/engineering/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/rank/engineer = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
|
/obj/item/banner/command
|
||||||
|
name = "command banner"
|
||||||
|
desc = "The banner of Command, a staunch and ancient line of bueraucratic kings and queens."
|
||||||
|
//No icon state here since the default one is the NT banner
|
||||||
|
job_loyalties = list("Captain", "Head of Personnel", "Chief Engineer", "Head of Security", "Research Director", "Chief Medical Officer")
|
||||||
|
warcry = "Hail Nanotrasen!"
|
||||||
|
|
||||||
|
/obj/item/banner/command/mundane
|
||||||
|
inspiration_available = FALSE
|
||||||
|
|
||||||
|
/obj/item/banner/command/check_inspiration(mob/living/carbon/human/H)
|
||||||
|
return H.isloyal() //Command is stalwart but rewards their allies.
|
||||||
|
|
||||||
|
/datum/crafting_recipe/command_banner
|
||||||
|
name = "Command Banner"
|
||||||
|
result = /obj/item/banner/command/mundane
|
||||||
|
time = 40
|
||||||
|
reqs = list(/obj/item/stack/rods = 2,
|
||||||
|
/obj/item/clothing/under/captainparade = 1)
|
||||||
|
category = CAT_MISC
|
||||||
|
|
||||||
/obj/item/banner/red
|
/obj/item/banner/red
|
||||||
name = "red banner"
|
name = "red banner"
|
||||||
|
|||||||
Reference in New Issue
Block a user