mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
@@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
if(!mind) return
|
if(!mind) return
|
||||||
if(!mind.changeling) mind.changeling = new /datum/changeling(gender)
|
if(!mind.changeling) mind.changeling = new /datum/changeling(gender)
|
||||||
|
|
||||||
verbs += /datum/changeling/proc/EvolutionMenu
|
verbs += /datum/changeling/proc/EvolutionMenu
|
||||||
|
add_language("Changeling")
|
||||||
|
|
||||||
var/lesser_form = !ishuman(src)
|
var/lesser_form = !ishuman(src)
|
||||||
|
|
||||||
@@ -30,8 +32,7 @@
|
|||||||
mind.changeling.absorbed_species += H.species.name
|
mind.changeling.absorbed_species += H.species.name
|
||||||
|
|
||||||
for(var/language in languages)
|
for(var/language in languages)
|
||||||
if(!(language in mind.changeling.absorbed_languages))
|
mind.changeling.absorbed_languages |= language
|
||||||
mind.changeling.absorbed_languages += language
|
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -80,6 +81,9 @@
|
|||||||
for(var/language in updated_languages)
|
for(var/language in updated_languages)
|
||||||
languages += language
|
languages += language
|
||||||
|
|
||||||
|
//This isn't strictly necessary but just to be safe...
|
||||||
|
add_language("Changeling")
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
//Used to switch species based on the changeling datum.
|
//Used to switch species based on the changeling datum.
|
||||||
|
|||||||
@@ -393,7 +393,12 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
else
|
else
|
||||||
Player << "<font color='blue'><b>You missed the crew transfer after the events on [station_name()] as [Player.real_name].</b></font>"
|
Player << "<font color='blue'><b>You missed the crew transfer after the events on [station_name()] as [Player.real_name].</b></font>"
|
||||||
else
|
else
|
||||||
Player << "<font color='red'><b>You did not survive the events on [station_name()]...</b></font>"
|
if(istype(Player,/mob/dead/observer))
|
||||||
|
var/mob/dead/observer/O = Player
|
||||||
|
if(!O.started_as_observer)
|
||||||
|
Player << "<font color='red'><b>You did not survive the events on [station_name()]...</b></font>"
|
||||||
|
else
|
||||||
|
Player << "<font color='red'><b>You did not survive the events on [station_name()]...</b></font>"
|
||||||
world << "<br>"
|
world << "<br>"
|
||||||
|
|
||||||
for (var/mob/living/silicon/ai/aiPlayer in mob_list)
|
for (var/mob/living/silicon/ai/aiPlayer in mob_list)
|
||||||
@@ -427,7 +432,7 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
robo.laws.show_laws(world)
|
robo.laws.show_laws(world)
|
||||||
|
|
||||||
if(dronecount)
|
if(dronecount)
|
||||||
world << "<b>There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round."
|
world << "<b>There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round."
|
||||||
|
|
||||||
mode.declare_completion()//To declare normal completion.
|
mode.declare_completion()//To declare normal completion.
|
||||||
|
|
||||||
|
|||||||
@@ -635,17 +635,17 @@ var/global/list/gear_datums = list()
|
|||||||
|
|
||||||
/datum/gear/blipstick
|
/datum/gear/blipstick
|
||||||
display_name = "lipstick, black"
|
display_name = "lipstick, black"
|
||||||
path = /obj/item/weapon/lipstick
|
path = /obj/item/weapon/lipstick/black
|
||||||
cost = 1
|
cost = 1
|
||||||
|
|
||||||
/datum/gear/jlipstick
|
/datum/gear/jlipstick
|
||||||
display_name = "lipstick, jade"
|
display_name = "lipstick, jade"
|
||||||
path = /obj/item/weapon/lipstick
|
path = /obj/item/weapon/lipstick/jade
|
||||||
cost = 1
|
cost = 1
|
||||||
|
|
||||||
/datum/gear/plipstick
|
/datum/gear/plipstick
|
||||||
display_name = "lipstick, purple"
|
display_name = "lipstick, purple"
|
||||||
path = /obj/item/weapon/lipstick
|
path = /obj/item/weapon/lipstick/purple
|
||||||
cost = 1
|
cost = 1
|
||||||
|
|
||||||
/datum/gear/rlipstick
|
/datum/gear/rlipstick
|
||||||
|
|||||||
@@ -47,6 +47,8 @@
|
|||||||
name = "Sinta'unathi"
|
name = "Sinta'unathi"
|
||||||
desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi."
|
desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi."
|
||||||
speech_verb = "hisses"
|
speech_verb = "hisses"
|
||||||
|
ask_verb = "hisses"
|
||||||
|
exclaim_verb = "roars"
|
||||||
colour = "soghun"
|
colour = "soghun"
|
||||||
key = "o"
|
key = "o"
|
||||||
flags = WHITELISTED
|
flags = WHITELISTED
|
||||||
@@ -55,6 +57,8 @@
|
|||||||
name = "Siik'tajr"
|
name = "Siik'tajr"
|
||||||
desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran."
|
desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran."
|
||||||
speech_verb = "mrowls"
|
speech_verb = "mrowls"
|
||||||
|
ask_verb = "mrowls"
|
||||||
|
exclaim_verb = "yowls"
|
||||||
colour = "tajaran"
|
colour = "tajaran"
|
||||||
key = "j"
|
key = "j"
|
||||||
flags = WHITELISTED
|
flags = WHITELISTED
|
||||||
@@ -63,6 +67,8 @@
|
|||||||
name = "Skrellian"
|
name = "Skrellian"
|
||||||
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
|
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
|
||||||
speech_verb = "warbles"
|
speech_verb = "warbles"
|
||||||
|
ask_verb = "warbles"
|
||||||
|
exclaim_verb = "warbles"
|
||||||
colour = "skrell"
|
colour = "skrell"
|
||||||
key = "k"
|
key = "k"
|
||||||
flags = WHITELISTED
|
flags = WHITELISTED
|
||||||
@@ -71,6 +77,8 @@
|
|||||||
name = "Vox-pidgin"
|
name = "Vox-pidgin"
|
||||||
desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else."
|
desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else."
|
||||||
speech_verb = "shrieks"
|
speech_verb = "shrieks"
|
||||||
|
ask_verb = "creels"
|
||||||
|
exclaim_verb = "SHRIEKS"
|
||||||
colour = "vox"
|
colour = "vox"
|
||||||
key = "v"
|
key = "v"
|
||||||
flags = RESTRICTED
|
flags = RESTRICTED
|
||||||
@@ -79,6 +87,8 @@
|
|||||||
name = "Rootspeak"
|
name = "Rootspeak"
|
||||||
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes."
|
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes."
|
||||||
speech_verb = "creaks and rustles"
|
speech_verb = "creaks and rustles"
|
||||||
|
ask_verb = "creaks"
|
||||||
|
exclaim_verb = "rustles"
|
||||||
colour = "soghun"
|
colour = "soghun"
|
||||||
key = "q"
|
key = "q"
|
||||||
flags = RESTRICTED
|
flags = RESTRICTED
|
||||||
@@ -90,6 +100,14 @@
|
|||||||
key = "0"
|
key = "0"
|
||||||
flags = RESTRICTED
|
flags = RESTRICTED
|
||||||
|
|
||||||
|
/datum/language/common/get_spoken_verb(var/msg_end)
|
||||||
|
switch(msg_end)
|
||||||
|
if("!")
|
||||||
|
return pick("exclaims","shouts","yells") //TODO: make the basic proc handle lists of verbs.
|
||||||
|
if("?")
|
||||||
|
return ask_verb
|
||||||
|
return speech_verb
|
||||||
|
|
||||||
/datum/language/human
|
/datum/language/human
|
||||||
name = "Sol Common"
|
name = "Sol Common"
|
||||||
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
|
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
|
||||||
@@ -117,6 +135,8 @@
|
|||||||
colour = "alien"
|
colour = "alien"
|
||||||
desc = "The common tongue of the xenomorphs."
|
desc = "The common tongue of the xenomorphs."
|
||||||
speech_verb = "hisses"
|
speech_verb = "hisses"
|
||||||
|
ask_verb = "hisses"
|
||||||
|
exclaim_verb = "hisses"
|
||||||
key = "4"
|
key = "4"
|
||||||
flags = RESTRICTED
|
flags = RESTRICTED
|
||||||
|
|
||||||
@@ -124,6 +144,8 @@
|
|||||||
name = "Hivemind"
|
name = "Hivemind"
|
||||||
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
|
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
|
||||||
speech_verb = "hisses"
|
speech_verb = "hisses"
|
||||||
|
ask_verb = "hisses"
|
||||||
|
exclaim_verb = "hisses"
|
||||||
colour = "alien"
|
colour = "alien"
|
||||||
key = "a"
|
key = "a"
|
||||||
flags = RESTRICTED | HIVEMIND
|
flags = RESTRICTED | HIVEMIND
|
||||||
@@ -157,6 +179,8 @@
|
|||||||
name = "Cortical Link"
|
name = "Cortical Link"
|
||||||
desc = "Cortical borers possess a strange link between their tiny minds."
|
desc = "Cortical borers possess a strange link between their tiny minds."
|
||||||
speech_verb = "sings"
|
speech_verb = "sings"
|
||||||
|
ask_verb = "sings"
|
||||||
|
exclaim_verb = "sings"
|
||||||
colour = "alien"
|
colour = "alien"
|
||||||
key = "x"
|
key = "x"
|
||||||
flags = RESTRICTED | HIVEMIND
|
flags = RESTRICTED | HIVEMIND
|
||||||
@@ -178,8 +202,10 @@
|
|||||||
/datum/language/binary
|
/datum/language/binary
|
||||||
name = "Robot Talk"
|
name = "Robot Talk"
|
||||||
desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use."
|
desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use."
|
||||||
speech_verb = "transmits"
|
|
||||||
colour = "say_quote"
|
colour = "say_quote"
|
||||||
|
speech_verb = "states"
|
||||||
|
ask_verb = "queries"
|
||||||
|
exclaim_verb = "declares"
|
||||||
key = "b"
|
key = "b"
|
||||||
flags = RESTRICTED | HIVEMIND
|
flags = RESTRICTED | HIVEMIND
|
||||||
var/drone_only
|
var/drone_only
|
||||||
@@ -222,6 +248,8 @@
|
|||||||
name = "Drone Talk"
|
name = "Drone Talk"
|
||||||
desc = "A heavily encoded damage control coordination stream."
|
desc = "A heavily encoded damage control coordination stream."
|
||||||
speech_verb = "transmits"
|
speech_verb = "transmits"
|
||||||
|
ask_verb = "transmits"
|
||||||
|
exclaim_verb = "transmits"
|
||||||
colour = "say_quote"
|
colour = "say_quote"
|
||||||
key = "d"
|
key = "d"
|
||||||
flags = RESTRICTED | HIVEMIND
|
flags = RESTRICTED | HIVEMIND
|
||||||
|
|||||||
@@ -172,9 +172,14 @@
|
|||||||
if(!check_alien_ability(50,0,"acid gland"))
|
if(!check_alien_ability(50,0,"acid gland"))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||||
|
src << "You cannot spit neurotoxin in your current state."
|
||||||
|
return
|
||||||
|
|
||||||
src << "\green You spit neurotoxin at [target]."
|
src << "\green You spit neurotoxin at [target]."
|
||||||
|
|
||||||
for(var/mob/O in oviewers())
|
for(var/mob/O in oviewers())
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !(O.blinded )))
|
||||||
O << "\red [src] spits neurotoxin at [target]!"
|
O << "\red [src] spits neurotoxin at [target]!"
|
||||||
|
|
||||||
//I'm not motivated enough to revise this. Prjectile code in general needs update.
|
//I'm not motivated enough to revise this. Prjectile code in general needs update.
|
||||||
|
|||||||
@@ -14,8 +14,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/list/choices = list()
|
var/list/choices = list()
|
||||||
for(var/mob/living/M in view(6,src))
|
for(var/mob/living/M in view(1,src))
|
||||||
if(!istype(M,/mob/living/silicon))
|
if(!istype(M,/mob/living/silicon) && Adjacent(M))
|
||||||
choices += M
|
choices += M
|
||||||
choices -= src
|
choices -= src
|
||||||
|
|
||||||
@@ -23,13 +23,13 @@
|
|||||||
|
|
||||||
if(!T || !src || src.stat) return
|
if(!T || !src || src.stat) return
|
||||||
|
|
||||||
if(get_dist(get_turf(T), get_turf(src)) > 6) return
|
if(!Adjacent(T)) return
|
||||||
|
|
||||||
if(last_special > world.time)
|
if(last_special > world.time)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||||
src << "You cannot leap in your current state."
|
src << "You cannot tackle in your current state."
|
||||||
return
|
return
|
||||||
|
|
||||||
last_special = world.time + 50
|
last_special = world.time + 50
|
||||||
|
|||||||
@@ -283,7 +283,7 @@
|
|||||||
|
|
||||||
if (radiation)
|
if (radiation)
|
||||||
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in internal_organs
|
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in internal_organs
|
||||||
if(!rad_organ || rad_organ.is_broken())
|
if(rad_organ && !rad_organ.is_broken())
|
||||||
var/rads = radiation/25
|
var/rads = radiation/25
|
||||||
radiation -= rads
|
radiation -= rads
|
||||||
nutrition += rads
|
nutrition += rads
|
||||||
|
|||||||
@@ -37,14 +37,20 @@
|
|||||||
else if(species.default_language)
|
else if(species.default_language)
|
||||||
speaking = all_languages[species.default_language]
|
speaking = all_languages[species.default_language]
|
||||||
|
|
||||||
|
var/ending = copytext(message, length(message))
|
||||||
if (speaking)
|
if (speaking)
|
||||||
verb = speaking.speech_verb
|
|
||||||
|
|
||||||
// This is broadcast to all mobs with the language,
|
// This is broadcast to all mobs with the language,
|
||||||
// irrespective of distance or anything else.
|
// irrespective of distance or anything else.
|
||||||
if(speaking.flags & HIVEMIND)
|
if(speaking.flags & HIVEMIND)
|
||||||
speaking.broadcast(src,trim(message))
|
speaking.broadcast(src,trim(message))
|
||||||
return
|
return
|
||||||
|
//If we've gotten this far, keep going!
|
||||||
|
verb = speaking.get_spoken_verb(ending)
|
||||||
|
else
|
||||||
|
if(ending=="!")
|
||||||
|
verb=pick("exclaims","shouts","yells")
|
||||||
|
if(ending=="?")
|
||||||
|
verb="asks"
|
||||||
|
|
||||||
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
|
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
|
||||||
return
|
return
|
||||||
@@ -60,13 +66,6 @@
|
|||||||
if(!message || stat)
|
if(!message || stat)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!speaking)
|
|
||||||
var/ending = copytext(message, length(message))
|
|
||||||
if(ending=="!")
|
|
||||||
verb=pick("exclaims","shouts","yells")
|
|
||||||
if(ending=="?")
|
|
||||||
verb="asks"
|
|
||||||
|
|
||||||
var/list/obj/item/used_radios = new
|
var/list/obj/item/used_radios = new
|
||||||
|
|
||||||
switch (message_mode)
|
switch (message_mode)
|
||||||
|
|||||||
@@ -28,13 +28,12 @@
|
|||||||
var/mail_destination = ""
|
var/mail_destination = ""
|
||||||
|
|
||||||
holder_type = /obj/item/weapon/holder/drone
|
holder_type = /obj/item/weapon/holder/drone
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/New()
|
/mob/living/silicon/robot/drone/New()
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
verbs += /mob/living/proc/ventcrawl
|
|
||||||
verbs += /mob/living/proc/hide
|
verbs += /mob/living/proc/hide
|
||||||
|
|
||||||
remove_language("Robot Talk")
|
remove_language("Robot Talk")
|
||||||
add_language("Robot Talk", 0)
|
add_language("Robot Talk", 0)
|
||||||
add_language("Drone Talk", 1)
|
add_language("Drone Talk", 1)
|
||||||
|
|||||||
@@ -172,6 +172,7 @@
|
|||||||
/mob/living/silicon/add_language(var/language, var/can_speak=1)
|
/mob/living/silicon/add_language(var/language, var/can_speak=1)
|
||||||
if (..(language) && can_speak)
|
if (..(language) && can_speak)
|
||||||
speech_synthesizer_langs.Add(all_languages[language])
|
speech_synthesizer_langs.Add(all_languages[language])
|
||||||
|
return 1
|
||||||
|
|
||||||
/mob/living/silicon/remove_language(var/rem_language)
|
/mob/living/silicon/remove_language(var/rem_language)
|
||||||
..(rem_language)
|
..(rem_language)
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
|
|
||||||
if (!injected || !our)
|
if (!injected || !our)
|
||||||
return
|
return
|
||||||
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) )
|
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]) )
|
||||||
reagents.add_reagent("toxin",amount * 0.5)
|
reagents.add_reagent("toxin",amount * 0.5)
|
||||||
reagents.update_total()
|
reagents.update_total()
|
||||||
else
|
else
|
||||||
@@ -250,13 +250,18 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
return D
|
return D
|
||||||
return res
|
return res
|
||||||
|
|
||||||
proc/blood_incompatible(donor,receiver)
|
proc/blood_incompatible(donor,receiver,donor_species,receiver_species)
|
||||||
if(!donor || !receiver) return 0
|
if(!donor || !receiver) return 0
|
||||||
var
|
|
||||||
donor_antigen = copytext(donor,1,lentext(donor))
|
if(donor_species && receiver_species)
|
||||||
receiver_antigen = copytext(receiver,1,lentext(receiver))
|
if(donor_species != receiver_species)
|
||||||
donor_rh = (findtext(donor,"+")>0)
|
return 1
|
||||||
receiver_rh = (findtext(receiver,"+")>0)
|
|
||||||
|
var/donor_antigen = copytext(donor,1,lentext(donor))
|
||||||
|
var/receiver_antigen = copytext(receiver,1,lentext(receiver))
|
||||||
|
var/donor_rh = (findtext(donor,"+")>0)
|
||||||
|
var/receiver_rh = (findtext(receiver,"+")>0)
|
||||||
|
|
||||||
if(donor_rh && !receiver_rh) return 1
|
if(donor_rh && !receiver_rh) return 1
|
||||||
switch(receiver_antigen)
|
switch(receiver_antigen)
|
||||||
if("A")
|
if("A")
|
||||||
|
|||||||
@@ -73,11 +73,8 @@
|
|||||||
// Process unsuitable transplants. TODO: consider some kind of
|
// Process unsuitable transplants. TODO: consider some kind of
|
||||||
// immunosuppressant that changes transplant data to make it match.
|
// immunosuppressant that changes transplant data to make it match.
|
||||||
if(transplant_data)
|
if(transplant_data)
|
||||||
if(!rejecting) //Should this transplant reject?
|
if(!rejecting && prob(20) && owner.dna && blood_incompatible(transplant_data["blood_type"],owner.dna.b_type,owner.species,transplant_data["species"]))
|
||||||
if(owner.species != transplant_data["species"]) //Nope.
|
rejecting = 1
|
||||||
rejecting = 1
|
|
||||||
else if(prob(20) && owner.dna && blood_incompatible(transplant_data["blood_type"],owner.dna.b_type))
|
|
||||||
rejecting = 1
|
|
||||||
else
|
else
|
||||||
rejecting++ //Rejection severity increases over time.
|
rejecting++ //Rejection severity increases over time.
|
||||||
if(rejecting % 10 == 0) //Only fire every ten rejection ticks.
|
if(rejecting % 10 == 0) //Only fire every ten rejection ticks.
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Reference in New Issue
Block a user