mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
[MIRROR] Rebalances space loot and space exploration (#981)
* Rebalances space loot and space exploration (#53916) * Rebalances space loot and space exploration Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
This commit is contained in:
@@ -29,55 +29,3 @@
|
||||
. += input_ending
|
||||
|
||||
add_to_cache(input, .)
|
||||
|
||||
/obj/item/codespeak_manual
|
||||
name = "codespeak manual"
|
||||
desc = "The book's cover reads: \"Codespeak(tm) - Secure your communication with metaphors so elaborate, they seem randomly generated!\""
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "book2"
|
||||
var/charges = 1
|
||||
|
||||
/obj/item/codespeak_manual/attack_self(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
|
||||
if(user.has_language(/datum/language/codespeak))
|
||||
to_chat(user, "<span class='boldwarning'>You start skimming through [src], but you already know Codespeak.</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='boldannounce'>You start skimming through [src], and suddenly your mind is filled with codewords and responses.</span>")
|
||||
user.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND)
|
||||
|
||||
use_charge(user)
|
||||
|
||||
/obj/item/codespeak_manual/attack(mob/living/M, mob/living/user)
|
||||
if(!istype(M) || !istype(user))
|
||||
return
|
||||
if(M == user)
|
||||
attack_self(user)
|
||||
return
|
||||
|
||||
playsound(loc, "punch", 25, TRUE, -1)
|
||||
|
||||
if(M.stat == DEAD)
|
||||
M.visible_message("<span class='danger'>[user] smacks [M]'s lifeless corpse with [src].</span>", "<span class='userdanger'>[user] smacks your lifeless corpse with [src].</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
else if(M.has_language(/datum/language/codespeak))
|
||||
M.visible_message("<span class='danger'>[user] beats [M] over the head with [src]!</span>", "<span class='userdanger'>[user] beats you over the head with [src]!</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
else
|
||||
M.visible_message("<span class='notice'>[user] teaches [M] by beating [M.p_them()] over the head with [src]!</span>", "<span class='boldnotice'>As [user] hits you with [src], codewords and responses flow through your mind.</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
M.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND)
|
||||
use_charge(user)
|
||||
|
||||
/obj/item/codespeak_manual/proc/use_charge(mob/user)
|
||||
charges--
|
||||
if(!charges)
|
||||
var/turf/T = get_turf(src)
|
||||
T.visible_message("<span class='warning'>The cover and contents of [src] start shifting and changing!</span>")
|
||||
|
||||
qdel(src)
|
||||
var/obj/item/book/manual/random/book = new(T)
|
||||
user.put_in_active_hand(book)
|
||||
|
||||
/obj/item/codespeak_manual/unlimited
|
||||
name = "deluxe codespeak manual"
|
||||
charges = INFINITY
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
/obj/item/language_manual
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "book2"
|
||||
/// Number of charges the book has, limits the number of times it can be used.
|
||||
var/charges = 1
|
||||
/// Path to a language datum that the book teaches.
|
||||
var/datum/language/language = /datum/language/common
|
||||
/// Flavour text to display when the language is successfully learned.
|
||||
var/flavour_text = "suddenly your mind is filled with codewords and responses"
|
||||
|
||||
/obj/item/language_manual/attack_self(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
|
||||
if(user.has_language(language))
|
||||
to_chat(user, "<span class='boldwarning'>You start skimming through [src], but you already know [initial(language.name)].</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='boldannounce'>You start skimming through [src], and [flavour_text].</span>")
|
||||
user.grant_language(language, TRUE, TRUE, LANGUAGE_MIND)
|
||||
|
||||
use_charge(user)
|
||||
|
||||
/obj/item/language_manual/attack(mob/living/M, mob/living/user)
|
||||
if(!istype(M) || !istype(user))
|
||||
return
|
||||
if(M == user)
|
||||
attack_self(user)
|
||||
return
|
||||
|
||||
playsound(loc, "punch", 25, TRUE, -1)
|
||||
|
||||
if(M.stat == DEAD)
|
||||
M.visible_message("<span class='danger'>[user] smacks [M]'s lifeless corpse with [src].</span>", "<span class='userdanger'>[user] smacks your lifeless corpse with [src].</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
else if(M.has_language(language))
|
||||
M.visible_message("<span class='danger'>[user] beats [M] over the head with [src]!</span>", "<span class='userdanger'>[user] beats you over the head with [src]!</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
else
|
||||
M.visible_message("<span class='notice'>[user] teaches [M] by beating [M.p_them()] over the head with [src]!</span>", "<span class='boldnotice'>As [user] hits you with [src], [flavour_text].</span>", "<span class='hear'>You hear smacking.</span>")
|
||||
M.grant_language(language, TRUE, TRUE, LANGUAGE_MIND)
|
||||
use_charge(user)
|
||||
|
||||
/obj/item/language_manual/proc/use_charge(mob/user)
|
||||
charges--
|
||||
if(!charges)
|
||||
var/turf/T = get_turf(src)
|
||||
T.visible_message("<span class='warning'>The cover and contents of [src] start shifting and changing!</span>")
|
||||
|
||||
qdel(src)
|
||||
var/obj/item/book/manual/random/book = new(T)
|
||||
user.put_in_active_hand(book)
|
||||
|
||||
/obj/item/language_manual/codespeak_manual
|
||||
name = "codespeak manual"
|
||||
desc = "The book's cover reads: \"Codespeak(tm) - Secure your communication with metaphors so elaborate, they seem randomly generated!\""
|
||||
language = /datum/language/codespeak
|
||||
flavour_text = "suddenly your mind is filled with codewords and responses"
|
||||
|
||||
/obj/item/language_manual/codespeak_manual/unlimited
|
||||
name = "deluxe codespeak manual"
|
||||
charges = INFINITY
|
||||
|
||||
/obj/item/language_manual/roundstart_species
|
||||
|
||||
/obj/item/language_manual/roundstart_species/Initialize()
|
||||
. = ..()
|
||||
language = pick( \
|
||||
/datum/language/voltaic, \
|
||||
/datum/language/nekomimetic, \
|
||||
/datum/language/draconic, \
|
||||
/datum/language/moffic, \
|
||||
/datum/language/calcic \
|
||||
)
|
||||
name = "[initial(language.name)] manual"
|
||||
desc = "The book's cover reads: \"[initial(language.name)] for Xenos - Learn common galactic tongues in seconds.\""
|
||||
flavour_text = "you feel empowered with a mastery over [initial(language.name)]"
|
||||
|
||||
/obj/item/language_manual/roundstart_species/unlimited
|
||||
charges = INFINITY
|
||||
|
||||
/obj/item/language_manual/roundstart_species/unlimited/Initialize()
|
||||
. = ..()
|
||||
name = "deluxe [initial(language.name)] manual"
|
||||
|
||||
/obj/item/language_manual/roundstart_species/five
|
||||
charges = 5
|
||||
|
||||
/obj/item/language_manual/roundstart_species/five/Initialize()
|
||||
. = ..()
|
||||
name = "extended [initial(language.name)] manual"
|
||||
|
||||
// So drones can teach borgs and AI dronespeak. For best effect, combine with mother drone lawset.
|
||||
/obj/item/language_manual/dronespeak_manual
|
||||
name = "dronespeak manual"
|
||||
desc = "The book's cover reads: \"Understanding Dronespeak - An exercise in futility.\""
|
||||
language = /datum/language/drone
|
||||
flavour_text = "suddenly the drone chittering makes sense"
|
||||
Reference in New Issue
Block a user