Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/accents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#define ACCENT_ZALAD "Zalad Accent"
#define ACCENT_HALFLING "No Swearing!"
#define ACCENT_KOBOLD "Scale-thing!"
#define ACCENT_ROUSMAN "Ratty Accent"

GLOBAL_LIST_INIT(accent_list, list(
ACCENT_NONE = list(),
Expand All @@ -28,4 +29,5 @@ GLOBAL_LIST_INIT(accent_list, list(
ACCENT_ZALAD = strings("accents/zalad_replacement.json", "arabic"),
ACCENT_HALFLING = strings("accents/halfling_replacement.json", "halfling"),
ACCENT_KOBOLD = strings("accents/kobold_replacement.json", "kobold"),
ACCENT_ROUSMAN = strings("accents/rousman_replacement.json", "rous"),
))
1 change: 1 addition & 0 deletions code/__DEFINES/traits/definitions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_KNOW_KEEP_DOORS "know_keep_doors"
#define TRAIT_KNOW_INQUISITION_DOORS "know_inquisition_doors"
#define TRAIT_KNOW_THIEF_DOORS "know_thief_doors"
#define TRAIT_KNOW_ROUS_DOORS "know_rous_doors" //Event purposes.

// JOB RELATED TRAITS
#define TRAIT_MALUMFIRE "Professional Smith"
Expand Down
13 changes: 13 additions & 0 deletions code/game/objects/structures/hidden_doors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -419,3 +419,16 @@ GLOBAL_LIST_EMPTY(secret_door_managers)
accessor_trait = TRAIT_KNOW_THIEF_DOORS
memory_name = "thieves' guild's"
vips = list(/datum/job/matron)


/obj/effect/mapping_helpers/secret_door_creator/rous
name = "Rous Secret Door Creator"
color = "#dcec4b"
override_floor = FALSE
hidden_dc = 16
use_phrases = TRUE
lang = list(/datum/language/rousman)
manager_id = "rousdoors"
accessor_trait = TRAIT_KNOW_ROUS_DOORS
memory_name = "Rous'"
vips = list(/datum/job/rousman)
4 changes: 4 additions & 0 deletions code/game/objects/structures/redstone.dm
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,10 @@ GLOBAL_LIST_EMPTY(redstone_objs)
hidden_dc = 13
accessor_trait = TRAIT_KNOW_THIEF_DOORS

/obj/structure/lever/hidden/rous
hidden_dc = 16
accessor_trait = TRAIT_KNOW_ROUS_DOORS

/obj/structure/repeater
name = "repeater"
desc = "Repeats a signal a set amount of times into an adjacently linked machine when activated by a signal. Looks suspiciously like a barrel."
Expand Down
Empty file removed code/modules/language/cat.dm
Empty file.
Empty file removed code/modules/language/fae.dm
Empty file.
23 changes: 23 additions & 0 deletions code/modules/language/rousman.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/datum/language/rousman
name = "Rousman"
desc = "The tongue of the rousmen, child sized rat savages."
speech_verb = "squeaks"
ask_verb = "chirps"
exclaim_verb = "hisses"
key = "r"
space_chance = 15
sentence_chance = 0
between_word_sentence_chance = 10
between_word_space_chance = 75
additional_syllable_low = -1
additional_syllable_high = 1
default_priority = 100
icon_state = "rous"
spans = list(SPAN_DWARF)
syllables = list("GRRrrrr",
"GGGrrr",
"RRRRrr",
"GRrr",
"Rr",
"Rrrr",
"Rrrrr")
130 changes: 108 additions & 22 deletions code/modules/mob/living/carbon/human/npc/rousman.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,23 +128,35 @@ GLOBAL_LIST_EMPTY(rousman_ambush_objects)
headprice = 2
sellprice = 2


// ##################################### SPECIES BIT #####################################
/datum/species/rousman
name = "rousman"
id = SPEC_ID_ROUSMAN
species_traits = list(NO_UNDERWEAR)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE, TRAIT_EASYDISMEMBER, TRAIT_CRITICAL_WEAKNESS, TRAIT_NASTY_EATER, TRAIT_LEECHIMMUNE, TRAIT_INHUMENCAMP)
inherent_traits = list(
TRAIT_KNOW_ROUS_DOORS,
TRAIT_RESISTCOLD,
TRAIT_RESISTHIGHPRESSURE,
TRAIT_RESISTLOWPRESSURE,
TRAIT_RADIMMUNE,
TRAIT_EASYDISMEMBER,
TRAIT_CRITICAL_WEAKNESS,
TRAIT_NASTY_EATER,
TRAIT_LEECHIMMUNE,
TRAIT_INHUMENCAMP,
)

no_equip = list(ITEM_SLOT_SHIRT, ITEM_SLOT_MASK, ITEM_SLOT_GLOVES, ITEM_SLOT_SHOES, ITEM_SLOT_PANTS)
offset_features_m = list(OFFSET_HANDS = list(0,-4))
offset_features_f = list(OFFSET_HANDS = list(0,-4))
offset_features_m = list(OFFSET_HANDS = list(0,-4), OFFSET_NECK = list(0,-4), OFFSET_CLOAK = list(0,-5))
offset_features_f = list(OFFSET_HANDS = list(0,-4), OFFSET_NECK = list(0,-4), OFFSET_CLOAK = list(0,-5))
dam_icon_f = null
dam_icon_m = null
damage_overlay_type = ""
changesource_flags = WABBAJACK
var/raceicon = "rousman"
exotic_bloodtype = /datum/blood_type/human/corrupted/rousman
meat = list(/obj/item/reagent_containers/food/snacks/meat/strange/inhumen = 1, /obj/item/natural/fur/rous = 0.5)
native_language = "Rous"

/datum/species/rousman/update_damage_overlays(mob/living/carbon/human/H)
return
Expand All @@ -163,6 +175,23 @@ GLOBAL_LIST_EMPTY(rousman_ambush_objects)
H.update_transform()
return TRUE

/datum/species/rousman/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/rousman)

/datum/species/rousman/after_creation(mob/living/carbon/C)
..()
C.dna.species.accent_language = C.dna.species.get_accent(native_language, 1)
C.grant_language(/datum/language/rousman)

/datum/species/rousman/on_species_loss(mob/living/carbon/C)
. = ..()
UnregisterSignal(C, COMSIG_MOB_SAY)
C.remove_language(/datum/language/rousman)

// ##################################### END SPECIES BIT #####################################

/mob/living/carbon/human/species/rousman/update_body()
remove_overlay(BODY_LAYER)
if(!dna || !dna.species)
Expand Down Expand Up @@ -429,7 +458,7 @@ GLOBAL_LIST_EMPTY(rousman_ambush_objects)
////////////////////////////////
////////////////////////////////

/mob/living/carbon/human/species/rousman/assassin
/mob/living/carbon/human/species/rousman/assassin/with_ai
ai_controller = /datum/ai_controller/human_npc

/mob/living/carbon/human/species/rousman/assassin/after_creation()
Expand Down Expand Up @@ -467,7 +496,7 @@ GLOBAL_LIST_EMPTY(rousman_ambush_objects)
H.adjust_skillrank(/datum/skill/misc/athletics, 5, TRUE)
H.adjust_skillrank(/datum/skill/misc/sneaking, 5, TRUE)

/mob/living/carbon/human/species/rousman/seer
/mob/living/carbon/human/species/rousman/seer/with_ai
ai_controller = /datum/ai_controller/human_npc

/mob/living/carbon/human/species/rousman/seer/after_creation()
Expand All @@ -482,34 +511,91 @@ GLOBAL_LIST_EMPTY(rousman_ambush_objects)
flee_in_pain = TRUE
wander = TRUE

/datum/outfit/npc/rousman/seer/pre_equip(mob/living/carbon/human/H)
/mob/living/carbon/human/species/rousman/seer_stronger/with_ai
ai_controller = /datum/ai_controller/human_npc

/mob/living/carbon/human/species/rousman/seer_stronger/after_creation()
. = ..()
AddComponent(/datum/component/ai_aggro_system)
job = "Seer Rousman"
ADD_TRAIT(src, TRAIT_NOMOOD, TRAIT_GENERIC)
ADD_TRAIT(src, TRAIT_NOHUNGER, TRAIT_GENERIC)
equipOutfit(new /datum/outfit/npc/rousman/seer_stronger)
dodgetime = 13
canparry = TRUE
flee_in_pain = TRUE
wander = TRUE

/datum/outfit/npc/rousman/seer/pre_equip(mob/living/carbon/human/seer)
..()
H.base_strength = rand(4, 8)
H.base_perception = rand(6, 10)
H.base_intelligence = rand(10, 16)
H.base_constitution = rand(4, 8)
H.base_endurance = rand(7, 10)
H.base_speed = rand(10, 15)
H.recalculate_stats(FALSE)
seer.base_strength = rand(4, 8)
seer.base_perception = rand(6, 10)
seer.base_intelligence = rand(10, 16)
seer.base_constitution = rand(4, 8)
seer.base_endurance = rand(7, 10)
seer.base_speed = rand(10, 15)
seer.recalculate_stats(FALSE)

armor = /obj/item/clothing/shirt/robe/rousseer
head = /obj/item/clothing/head/roguehood/rousman/rousseer
r_hand = /obj/item/weapon/polearm/woodstaff/seer

var/list/spells = list(
/datum/action/cooldown/spell/undirected/arcyne_eye,
/datum/action/cooldown/spell/projectile/fetch,
/datum/action/cooldown/spell/projectile/sickness,
/datum/action/cooldown/spell/eyebite,
/datum/action/cooldown/spell/projectile/fireball,
/datum/action/cooldown/spell/projectile/blood_bolt,
/datum/action/cooldown/spell/projectile/sickness,
/datum/action/cooldown/spell/projectile/fetch,
/datum/action/cooldown/spell/sundering_lightning,
)

seer.adjust_skillrank(/datum/skill/magic/arcane, 5, TRUE)
seer.adjust_skillrank(/datum/skill/magic/blood, 2, TRUE)
seer.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
seer.adjust_spell_points(17)
seer.generate_random_attunements(rand(4,6))
seer.mana_pool.set_intrinsic_recharge(MANA_ALL_LEYLINES)
seer.mana_pool.adjust_mana(100)
for(var/spell in spells)
seer.add_spell(spell)

/datum/outfit/npc/rousman/seer_stronger/pre_equip(mob/living/carbon/human/seer)
..()
seer.base_strength = rand(4, 8)
seer.base_perception = rand(8, 12)
seer.base_intelligence = rand(12, 18)
seer.base_constitution = rand(6, 10)
seer.base_endurance = rand(8, 11)
seer.base_speed = rand(11, 16)
seer.recalculate_stats(FALSE)

seer.grant_language(/datum/language/common)

armor = /obj/item/clothing/shirt/robe/rousseer
head = /obj/item/clothing/head/roguehood/rousman/rousseer
r_hand = /obj/item/weapon/polearm/woodstaff/seer
belt = /obj/item/storage/belt/leather/black
l_pocket = /obj/item/book/granter/spellbook/expert

var/list/spells = list(
/datum/action/cooldown/spell/undirected/jaunt/ethereal_jaunt,
/datum/action/cooldown/spell/conjure/rous,
/datum/action/cooldown/spell/undirected/arcyne_eye,
/datum/action/cooldown/spell/projectile/fetch,
/datum/action/cooldown/spell/projectile/sickness,
/datum/action/cooldown/spell/eyebite,
/datum/action/cooldown/spell/projectile/fireball,
/datum/action/cooldown/spell/projectile/blood_bolt,
/datum/action/cooldown/spell/sundering_lightning,
)

H.adjust_skillrank(/datum/skill/magic/arcane, 5, TRUE)
H.adjust_spell_points(17)
H.generate_random_attunements(rand(4,6))
H.mana_pool.set_intrinsic_recharge(MANA_ALL_LEYLINES)
H.mana_pool.adjust_mana(100)
seer.adjust_skillrank(/datum/skill/magic/arcane, 5, TRUE)
seer.adjust_skillrank(/datum/skill/magic/blood, 2, TRUE)
seer.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE)
seer.adjust_spell_points(17)
seer.generate_random_attunements(rand(4,6))
seer.mana_pool.set_intrinsic_recharge(MANA_ALL_LEYLINES)
seer.mana_pool.adjust_mana(100)
for(var/spell in spells)
H.add_spell(spell)
seer.add_spell(spell)
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,8 @@ GLOBAL_LIST_EMPTY(roundstart_species)
return strings("accents/halfling_replacement.json", "halfling")
if("Gutter")
return strings("accents/kobold_replacement.json", "kobold")
if("Rous")
return strings("accents/rousman_replacement.json", "rous")
if("Deepspeak")
return strings("accents/triton_replacement.json", "triton")
if("Pirate")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
used = pick('sound/vo/mobs/rousman/ratidle1.ogg','sound/vo/mobs/rousman/ratidle2.ogg','sound/vo/mobs/rousman/ratidle3.ogg')
if("pain")
used = pick('sound/vo/mobs/rousman/ratpain1.ogg','sound/vo/mobs/rousman/ratpain2.ogg','sound/vo/mobs/rousman/ratpain3.ogg','sound/vo/mobs/rousman/ratpain4.ogg','sound/vo/mobs/rousman/ratpain5.ogg')
if("paincrit")
used = pick('sound/vo/mobs/rousman/ratpainscream1.ogg','sound/vo/mobs/rousman/ratpainscream2.ogg','sound/vo/mobs/rousman/ratpainscream3.ogg','sound/vo/mobs/rousman/ratpainscream4.ogg','sound/vo/mobs/rousman/ratpainscream5.ogg')
if("painscream")
if("paincrit", "painscream")
used = pick('sound/vo/mobs/rousman/ratpainscream1.ogg','sound/vo/mobs/rousman/ratpainscream2.ogg','sound/vo/mobs/rousman/ratpainscream3.ogg','sound/vo/mobs/rousman/ratpainscream4.ogg','sound/vo/mobs/rousman/ratpainscream5.ogg')
if("scream")
used = pick('sound/vo/mobs/rousman/ratscream1.ogg','sound/vo/mobs/rousman/ratscream2.ogg')
if("whimper")
used = 'sound/vo/mobs/rousman/ratpainscream6.ogg'
if("rage")
used = pick('sound/vo/mobs/rousman/ratrage1.ogg')
if("agony")
Expand All @@ -27,4 +27,6 @@
used = list('sound/vo/male/gen/drown (1).ogg','sound/vo/male/gen/drown (2).ogg','sound/vo/male/gen/drown (3).ogg')
if("snore")
used = list('sound/vo/male/gen/snore (1).ogg','sound/vo/male/gen/snore (2).ogg','sound/vo/male/gen/snore (3).ogg','sound/vo/male/gen/snore (4).ogg')
if("clap")
used = list('sound/vo/clap (1).ogg', 'sound/vo/clap (2).ogg', 'sound/vo/clap (3).ogg', 'sound/vo/clap (4).ogg')
return used
10 changes: 10 additions & 0 deletions code/modules/paperwork/rogue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,16 @@
ADD_TRAIT(user.mind, TRAIT_KNOW_KEEP_DOORS, "[type]")
user.playsound_local(user, 'sound/misc/notice (2).ogg', 100, FALSE)

/obj/item/paper/scroll/rous_plans
name = "rous tunnel drawings"
desc = "Paper etched with the a winding mess of tunnels."

/obj/item/paper/scroll/rous_plans/read(mob/user)
if(!user.mind)
return
to_chat(user, span_purple("<b>These look like secret passages...</b>"))
ADD_TRAIT(user.mind, TRAIT_KNOW_ROUS_DOORS, "[type]")
user.playsound_local(user, 'sound/misc/notice (2).ogg', 100, FALSE)

/obj/item/paper/scroll/sold_manifest
name = "shipping manifest"
Expand Down
1 change: 1 addition & 0 deletions code/modules/surgery/organs/internal/tongue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
/datum/language/celestial,
/datum/language/hellspeak,
/datum/language/beast,
/datum/language/rousman,
/datum/language/thievescant,
/datum/language/orcish,
/datum/language/deepspeak,
Expand Down
Binary file modified icons/language.dmi
Binary file not shown.
Loading
Loading