Merge branch 'master' of https://github.com/PolarisSS13/Polaris into cosmetic_things

# Conflicts:
#	icons/mob/back.dmi
#	icons/mob/items/lefthand.dmi
#	icons/mob/items/righthand.dmi
This commit is contained in:
Anewbe
2017-04-07 16:11:50 -05:00
104 changed files with 1700 additions and 923 deletions
+10 -8
View File
@@ -7,10 +7,11 @@
log_say("Ghost/[src.key] : [message]")
if (src.client)
client.handle_spam_prevention(MUTE_DEADCHAT)
if(src.client.prefs.muted & MUTE_DEADCHAT)
src << "\red You cannot talk in deadchat (muted)."
return
if(message)
client.handle_spam_prevention(MUTE_DEADCHAT)
if(src.client.prefs.muted & MUTE_DEADCHAT)
src << "\red You cannot talk in deadchat (muted)."
return
. = src.say_dead(message)
@@ -27,10 +28,11 @@
log_emote("Ghost/[src.key] : [message]")
if(src.client)
client.handle_spam_prevention(MUTE_DEADCHAT)
if(src.client.prefs.muted & MUTE_DEADCHAT)
src << "\red You cannot emote in deadchat (muted)."
return
if(message)
client.handle_spam_prevention(MUTE_DEADCHAT)
if(src.client.prefs.muted & MUTE_DEADCHAT)
src << "\red You cannot emote in deadchat (muted)."
return
. = src.emote_dead(message)
+52
View File
@@ -5,18 +5,70 @@
ask_verb = "chimpers"
exclaim_verb = "screeches"
key = "6"
machine_understands = 0
/datum/language/skrell/monkey
name = "Neaera"
desc = "Squik squik squik."
key = "8"
machine_understands = 0
/datum/language/unathi/monkey
name = "Stok"
desc = "Hiss hiss hiss."
key = "7"
machine_understands = 0
/datum/language/tajaran/monkey
name = "Farwa"
desc = "Meow meow meow."
key = "9"
machine_understands = 0
/datum/language/corgi
name = "Dog"
desc = "Woof woof woof."
speech_verb = "barks"
ask_verb = "woofs"
exclaim_verb = "howls"
key = "n"
flags = RESTRICTED
machine_understands = 0
space_chance = 100
syllables = list("bark", "woof", "bowwow", "yap", "arf")
/datum/language/cat
name = "Cat"
desc = "Meow meow meow."
speech_verb = "meows"
ask_verb = "mrowls"
exclaim_verb = "yowls"
key = "c"
flags = RESTRICTED
machine_understands = 0
space_chance = 100
syllables = list("meow", "mrowl", "purr", "meow", "meow", "meow")
/datum/language/mouse
name = "Mouse"
desc = "Squeak squeak. *Nibbles on cheese*"
speech_verb = "squeaks"
ask_verb = "squeaks"
exclaim_verb = "squeaks"
key = "m"
flags = RESTRICTED
machine_understands = 0
space_chance = 100
syllables = list("squeak") // , "gripes", "oi", "meow")
/datum/language/bird
name = "Bird"
desc = "Chirp chirp, give me food"
speech_verb = "chirps"
ask_verb = "tweets"
exclaim_verb = "squawks"
key = "m"
flags = RESTRICTED
machine_understands = 0
space_chance = 100
syllables = list("chirp", "squawk", "tweet")
+3
View File
@@ -4,6 +4,7 @@
speech_verb = "says"
colour = "changeling"
key = "g"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
/datum/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
@@ -21,6 +22,7 @@
exclaim_verb = "sings"
colour = "alien"
key = "x"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
/datum/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
@@ -80,4 +82,5 @@
exclaim_verb = "chants"
colour = "cult"
key = "y"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
+2
View File
@@ -6,6 +6,7 @@
exclaim_verb = "rustles"
colour = "soghun"
key = "q"
machine_understands = 0
flags = RESTRICTED
syllables = list("hs","zt","kr","st","sh")
@@ -18,6 +19,7 @@
name = LANGUAGE_ROOTGLOBAL
desc = "A complex language known instinctively by Dionaea, 'spoken' by emitting modulated radio waves. This version uses low frequency waves for slow communication at long ranges."
key = "w"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
/datum/language/unathi
+2
View File
@@ -6,6 +6,7 @@
ask_verb = "queries"
exclaim_verb = "declares"
key = "b"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
var/drone_only
@@ -64,5 +65,6 @@
exclaim_verb = "transmits"
colour = "say_quote"
key = "d"
machine_understands = 0
flags = RESTRICTED | HIVEMIND
drone_only = 1
@@ -22,7 +22,7 @@
// Should this all be in Touch()?
if(istype(H))
if(get_accuracy_penalty(H)) //Should only trigger if they're not aiming well
if(get_accuracy_penalty(H) && H != src) //Should only trigger if they're not aiming well
var/hit_zone = get_zone_with_miss_chance(H.zone_sel.selecting, src, get_accuracy_penalty(H))
if(!hit_zone)
H.do_attack_animation(src)
@@ -2,6 +2,8 @@
var/tally = 0
var/item_tally = 0
if(species.slowdown)
tally = species.slowdown
@@ -33,7 +35,7 @@
tally += 1.5
else
if(shoes)
tally += shoes.slowdown
item_tally += shoes.slowdown
for(var/organ_name in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))
var/obj/item/organ/external/E = get_organ(organ_name)
@@ -50,36 +52,40 @@
if(FAT in src.mutations)
tally += 1.5
if (bodytemperature < 283.222)
tally += (283.222 - bodytemperature) / 10 * 1.75
if (bodytemperature < species.cold_level_1)
tally += (species.cold_level_1 - bodytemperature) / 10 * 1.75
tally += max(2 * stance_damage, 0) //damaged/missing feet or legs is slow
if(mRun in mutations)
tally = 0
if(species.slowdown_fixed)
return (tally+config.human_delay)
// Loop through some slots, and add up their slowdowns. Shoes are handled below, unfortunately.
// Includes slots which can provide armor, the back slot, and suit storage.
for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store) )
tally += I.slowdown
for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store))
item_tally += I.slowdown
// Hands are also included, to make the 'take off your armor instantly and carry it with you to go faster' trick no longer viable.
// This is done seperately to disallow negative numbers.
for(var/obj/item/I in list(r_hand, l_hand) )
tally += max(I.slowdown, 0)
item_tally += max(I.slowdown, 0)
// Dragging heavy objects will also slow you down, similar to above.
if(pulling && istype(pulling, /obj/item))
var/obj/item/pulled = pulling
tally += max(pulled.slowdown, 0)
item_tally += max(pulled.slowdown, 0)
var/turf/T = get_turf(src)
if(T && T.movement_cost)
tally += T.movement_cost
if(species.item_slowdown_halved)
if(item_tally > 0)
item_tally *= 0.5
tally += item_tally
if(CE_SPEEDBOOST in chem_effects)
if (tally >= 0) // cut any penalties in half
tally = tally/2
+11 -9
View File
@@ -352,13 +352,6 @@
if(!L.is_bruised() && prob(8))
rupture_lung()
if(should_have_organ("brain"))
var/brainOxPercent = 0.02 //Default2% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
if(CE_STABLE in chem_effects)
brainOxPercent = 0.01 //Halved in effect
if(prob(5))
adjustBrainLoss(brainOxPercent * oxyloss)
oxygen_alert = max(oxygen_alert, 1)
return 0
@@ -377,8 +370,9 @@
safe_pressure_min *= 1.25
else if(breath)
if(breath.total_moles < BREATH_MOLES / 10 || breath.total_moles > BREATH_MOLES * 5)
if (prob(8))
rupture_lung()
if(is_below_sound_pressure(get_turf(src))) //No more popped lungs from choking/drowning
if (prob(8))
rupture_lung()
var/safe_exhaled_max = 10
var/safe_toxins_max = 0.2
@@ -925,6 +919,14 @@
for(var/atom/a in hallucinations)
qdel(a)
//Brain damage from Oxyloss
if(should_have_organ("brain"))
var/brainOxPercent = 0.02 //Default2% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
if(CE_STABLE in chem_effects)
brainOxPercent = 0.01 //Halved in effect
if(oxyloss >= 20 && prob(5))
adjustBrainLoss(brainOxPercent * oxyloss)
if(halloss >= species.total_health)
src << "<span class='notice'>You're in too much pain to keep going...</span>"
src.visible_message("<B>[src]</B> slumps to the ground, too weak to continue fighting.")
@@ -133,7 +133,7 @@
var/appearance_flags = 0 // Appearance/display related features.
var/spawn_flags = 0 // Flags that specify who can spawn as this species
var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
var/slowdown_fixed = 0 // If this is on, they're not affected by object related slowdown (positive or negative)
var/item_slowdown_halved = 0 // If this is on, they're not as affected by item weights for slowdown
var/primitive_form // Lesser form, if any (ie. monkey for humans)
var/greater_form // Greater form, if any, ie. human for monkeys.
var/holder_type
@@ -194,8 +194,8 @@
inherent_verbs = list()
inherent_verbs |= /mob/living/carbon/human/proc/regurgitate
/datum/species/proc/sanitize_name(var/name)
return sanitizeName(name)
/datum/species/proc/sanitize_name(var/name, var/robot = 0)
return sanitizeName(name, MAX_NAME_LEN, robot)
/datum/species/proc/equip_survival_gear(var/mob/living/carbon/human/H,var/extendedtank = 1)
var/boxtype = /obj/item/weapon/storage/box/survival //Default survival box
-5
View File
@@ -770,11 +770,6 @@ default behaviour is:
if(buckled.buckle_movable)
anchored = 0
canmove = 1
else if(captured)
anchored = 1
canmove = 0
lying = 0
else
lying = incapacitated(INCAPACITATION_KNOCKDOWN)
canmove = !incapacitated(INCAPACITATION_DISABLED)
+5 -4
View File
@@ -133,10 +133,11 @@ proc/get_radio_key_from_channel(var/channel)
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering = 0)
//If you're muted for IC chat
if(client)
client.handle_spam_prevention(MUTE_IC)
if((client.prefs.muted & MUTE_IC) || say_disabled)
src << "<span class='warning'>You cannot speak in IC (Muted).</span>"
return
if(message)
client.handle_spam_prevention(MUTE_IC)
if((client.prefs.muted & MUTE_IC) || say_disabled)
src << "<span class='warning'>You cannot speak in IC (Muted).</span>"
return
//Redirect to say_dead if talker is dead
if(stat)
@@ -114,7 +114,7 @@
return
var/deathtime = world.time - src.timeofdeath
var/deathtimeminutes = round(deathtime / 300)
var/deathtimeminutes = round(deathtime / 600)
var/pluralcheck = "minute"
if(deathtimeminutes == 0)
pluralcheck = ""
@@ -122,11 +122,11 @@
pluralcheck = " [deathtimeminutes] minute and"
else if(deathtimeminutes > 1)
pluralcheck = " [deathtimeminutes] minutes and"
var/deathtimeseconds = round((deathtime - deathtimeminutes * 300) / 10,1)
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
if (deathtime < 3000)
if (deathtime < 6000)
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
usr << "You must wait 5 minutes to respawn as a drone!"
usr << "You must wait 10 minutes to respawn as a drone!"
return
var/list/all_fabricators = list()
@@ -18,7 +18,7 @@ var/global/list/robot_modules = list(
icon = 'icons/obj/module.dmi'
icon_state = "std_module"
w_class = ITEMSIZE_NO_CONTAINER
item_state = "electronic"
item_state = "std_mod"
flags = CONDUCT
var/hide_on_manifest = 0
var/channels = list()
@@ -36,6 +36,8 @@
max_n2 = 0
minbodytemp = 0
has_langs = list("Mouse")
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
var/mob/living/owner
@@ -27,6 +27,7 @@
holder_type = /obj/item/weapon/holder/cat
mob_size = MOB_SMALL
has_langs = list("Cat")
speak_chance = 1
speak = list("Meow!","Esp!","Purr!","HSSSSS")
speak_emote = list("purrs", "meows")
@@ -17,6 +17,7 @@
see_in_dark = 5
mob_size = 8
has_langs = list("Dog")
speak_chance = 1
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
speak_emote = list("barks", "woofs")
@@ -167,6 +167,7 @@
response_harm = "kicks"
attacktext = "kicked"
has_langs = list("Bird")
speak_chance = 2
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("cheeps")
@@ -213,6 +214,7 @@ var/global/chicken_count = 0
response_harm = "kicks"
attacktext = "kicked"
has_langs = list("Bird")
speak_chance = 2
speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.")
speak_emote = list("clucks","croons")
@@ -3,7 +3,7 @@
name = "fish"
desc = "Its a fishy. No touchy fishy."
icon = 'icons/mob/fish.dmi'
meat_type = /obj/item/weapon/reagent_containers/food/snacks
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
// By defautl they can be in any water turf. Subtypes might restrict to deep/shallow etc
var/global/list/suitable_turf_types = list(
@@ -35,6 +35,7 @@
max_n2 = 0
minbodytemp = 0
has_langs = list("Bird")
speak_chance = 10
speak = list("HONK!")
emote_hear = list("honks loudly!")
@@ -29,6 +29,7 @@
minbodytemp = 223 //Below -50 Degrees Celcius
maxbodytemp = 323 //Above 50 Degrees Celcius
has_langs = list("Mouse")
speak_chance = 1
speak = list("Squeek!","SQUEEK!","Squeek?")
speak_emote = list("squeeks","squeeks","squiks")
@@ -46,6 +46,7 @@
stop_automated_movement = 1
universal_speak = 1
has_langs = list("Bird")
speak_chance = 2
speak = list("Hi","Hello!","Cracker?","BAWWWWK george mellons griffing me")
speak_emote = list("squawks","says","yells")
@@ -20,6 +20,7 @@
melee_damage_upper = 15
attacktext = "pecked"
has_langs = list("Bird")
speak_chance = 0
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
@@ -271,21 +271,31 @@
update_icon()
ai_log("Life() - stance=[stance] ai_inactive=[ai_inactive]", 4)
//Movement
if(!ai_inactive && !stop_automated_movement && wander && !anchored) //Allowed to move?
handle_wander_movement()
//Speaking
if(!ai_inactive && speak_chance && stance == STANCE_IDLE) // Allowed to chatter?
handle_idle_speaking()
//Stanceyness
//AI Actions
if(!ai_inactive)
//Stanceyness
handle_stance()
//Resisting out of things
if(!ai_inactive && incapacitated(INCAPACITATION_DEFAULT) && stance != STANCE_IDLE)
resist()
//Movement
if(!stop_automated_movement && wander && !anchored) //Allowed to move?
handle_wander_movement()
//Speaking
if(speak_chance && stance == STANCE_IDLE) // Allowed to chatter?
handle_idle_speaking()
//Resisting out buckles
if(stance != STANCE_IDLE && incapacitated(INCAPACITATION_BUCKLED_PARTIALLY))
resist()
//Resisting out of closets
if(istype(loc,/obj/structure/closet))
var/obj/structure/closet/C = loc
if(C.welded)
resist()
else
C.open()
return 1
@@ -807,12 +817,17 @@
//Someone wants help?
/mob/living/simple_animal/proc/HelpRequested(var/mob/living/simple_animal/F)
if(!(stance == STANCE_IDLE) || stat)
if(target_mob || stat)
ai_log("HelpRequested() by [F] but we're busy/dead",2)
return
if(get_dist(src,F) <= follow_dist)
ai_log("HelpRequested() by [F] but we're already here",2)
return
if(get_dist(src,F) <= view_range)
ai_log("HelpRequested() by [F] and within targetshare range",2)
if(F.target_mob && set_target(F.target_mob))
handle_stance(STANCE_ATTACK)
return
if(set_follow(F, 10 SECONDS))
handle_stance(STANCE_FOLLOW)
+1 -1
View File
@@ -362,7 +362,7 @@
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
if (deathtime < (5 * 600))
if ((deathtime < (5 * 600)) && (ticker && ticker.current_state > GAME_STATE_PREGAME))
usr << "You must wait 5 minutes to respawn!"
return
else
-1
View File
@@ -153,7 +153,6 @@
var/voice_name = "unidentifiable voice"
var/faction = "neutral" //Used for checking whether hostile simple animals will attack you, possibly more stuff later
var/captured = 0 //Functionally, should give the same effect as being buckled into a chair when true. Only used by energy nets, TODO replace with buckling
//Generic list for proc holders. Only way I can see to enable certain verbs/procs. Should be modified if needed.
var/proc_holder_list[] = list()//Right now unused.
+1 -1
View File
@@ -322,7 +322,7 @@
if(hit_zone == O_EYES)
attack_eye(affecting, assailant)
else if(hit_zone == BP_HEAD)
headbut(affecting, assailant)
headbutt(affecting, assailant)
else
dislocate(affecting, assailant, hit_zone)
+1 -1
View File
@@ -88,7 +88,7 @@
attack.handle_eye_attack(attacker, target)
/obj/item/weapon/grab/proc/headbut(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
/obj/item/weapon/grab/proc/headbutt(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
if(!istype(attacker))
return
if(target.lying)
@@ -1025,9 +1025,13 @@
icon_state = "tat_campbell"
body_parts = list(BP_R_ARM)
left
name = "Tattoo (Campbell, L.Arm)"
body_parts = list(BP_L_ARM)
tat_tiger
name = "Tattoo (Tiger Stripes, Body)"
icon_state = "tat_campbell"
icon_state = "tat_tiger"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN)
taj_paw_socks