Changelings can use hivechat while muzzled.

Monkey-lings can use hivechat.
Lings can return to human form even if monkeyed through genetics.
One-line fix for Destroying Angels (..() wasn't being called)
Spelling correction in Destroying Angel description
This commit is contained in:
Rolan7
2014-06-17 00:13:56 -04:00
parent 897fa42ffb
commit 98367cb162
22 changed files with 51 additions and 42 deletions
+1 -1
View File
@@ -67,7 +67,7 @@
if(..())
return
if(a_intent != "harm" || !ismob(A)) return
if(istype(wear_mask, /obj/item/clothing/mask/muzzle))
if(is_muzzled())
return
var/mob/living/carbon/ML = A
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+1 -1
View File
@@ -76,7 +76,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/mob/living/carbon/human/H = user
if((invocation_type == "whisper" || invocation_type == "shout") && istype(H.wear_mask, /obj/item/clothing/mask/muzzle))
if((invocation_type == "whisper" || invocation_type == "shout") && !H.is_muzzled())
user << "<span class='notice'>You can't get the words out!</span>"
return 0
+4 -1
View File
@@ -14,7 +14,10 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click()
if(usr)
if(usr && usr.mind)
if(!usr.mind.miming)
usr << "<span class='notice'>You must dedicate yourself to silence first.</span>"
return
invocation = "<B>[usr.real_name]</B> looks as if a wall is in front of them."
else
invocation_type ="none"
@@ -10,9 +10,9 @@
/obj/effect/proc_holder/changeling/lesserform/sting_action(var/mob/living/carbon/human/user)
user << "<span class='warning'>Our genes cry out!</span>"
var/mob/living/carbon/monkey/O = user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC)
user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC)
O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
// Human-form power now handled in monkeyize()
feedback_add_details("changeling_powers","LF")
.=1
qdel(user)
+3 -5
View File
@@ -183,11 +183,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
if(!iscultist(user))
user << "<span class='notice'>You can't mouth the arcane scratchings without fumbling over them.</span>"
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(istype(H.wear_mask, /obj/item/clothing/mask/muzzle))
H << "<span class='notice'>You are unable to speak the words of the rune.</span>"
return
if(user.is_muzzled())
user << "<span class='notice'>You are unable to speak the words of the rune.</span>"
return
if(!word1 || !word2 || !word3 || prob(user.getBrainLoss()))
return fizzle()
if(word1 == wordtravel && word2 == wordself)
+1
View File
@@ -796,6 +796,7 @@
icon_state = "angel"
dried_type = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
New(var/loc, var/potency = 35)
..()
if(reagents)
reagents.add_reagent("nutriment", 1+round((potency / 50), 1))
reagents.add_reagent("amatoxin", 13+round(potency / 3, 1))
+1 -1
View File
@@ -475,7 +475,7 @@
/obj/item/seeds/angelmycelium
name = "pack of destroying angel mycelium"
desc = "This mycelium grows into something devestating."
desc = "This mycelium grows into something devastating."
icon_state = "mycelium-angel"
species = "angel"
plantname = "Destroying Angels"
@@ -8,7 +8,7 @@
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
var/muzzled = is_muzzled()
var/m_type = 1
var/message
@@ -116,7 +116,7 @@
if ("help")
help_shake_act(M)
else
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
if (is_muzzled())
return
if (health > 0)
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
@@ -8,7 +8,7 @@
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
var/muzzled = is_muzzled()
var/m_type = 1
var/message
@@ -142,7 +142,7 @@
if ("help")
help_shake_act(M)
else
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
if (is_muzzled())
return
if (health > 0)
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+3 -6
View File
@@ -452,12 +452,6 @@
..()
/mob/living/carbon/say(var/message, var/bubble_type)
if(istype(wear_mask, /obj/item/clothing/mask/muzzle))
return
..(message, bubble_type)
/mob/living/carbon/proc/is_mutantrace(var/mrace)
if(mrace)
if(src.dna && src.dna.mutantrace == mrace)
@@ -483,3 +477,6 @@ var/const/GALOSHES_DONT_HELP = 8
/mob/living/carbon/fall(var/forced)
loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
/mob/living/carbon/is_muzzled()
return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
+1 -1
View File
@@ -13,7 +13,7 @@
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = (src.wear_mask && istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
var/muzzled = is_muzzled()
//var/m_type = 1
switch(act)//Even carbon organisms want it alphabetically ordered..
@@ -9,7 +9,7 @@
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
var/muzzled = is_muzzled()
//var/m_type = 1
for (var/obj/item/weapon/implant/I in src)
@@ -3,7 +3,7 @@
if (M.a_intent == "help")
help_shake_act(M)
else
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
if (is_muzzled())
return
visible_message("<span class='danger'>[M.name] bites [src]!</span>", \
@@ -33,7 +33,7 @@
if (src.sdisabilities & MUTE)
return
if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
if (is_muzzled())
return
var/whispers = "whispers"
@@ -298,7 +298,7 @@
if ("help")
help_shake_act(M)
else
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
if (is_muzzled())
return
if (health > 0)
attacked += 10
@@ -9,7 +9,7 @@
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
var/muzzled = is_muzzled()
var/m_type = 1
var/message
@@ -74,7 +74,7 @@
if (M.a_intent == "help")
help_shake_act(M)
else
if ((M.a_intent == "harm" && !( istype(wear_mask, /obj/item/clothing/mask/muzzle) )))
if (M.a_intent == "harm" && !is_muzzled())
if ((prob(75) && health > 0))
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
+19 -14
View File
@@ -132,7 +132,7 @@ var/list/department_radio_keys = list(
//world << "channel_prefix=[channel_prefix]; message_mode=[message_mode]"
if (message_mode)
message = trim(copytext(message, 3))
if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || (message_mode in radiochannels))))
if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src)) && (message_mode=="department" || (message_mode in radiochannels))) // If they're not a human, parrot, or robot, and they're trying to use a radio channel
message_mode = null //only humans can use headsets
// Check changed so that parrots can use headsets. Other simple animals do not have ears and will cause runtimes.
// And borgs -Sieve
@@ -156,6 +156,24 @@ var/list/department_radio_keys = list(
for(var/i=0,i<bzz,i++)
message += "Z"
*/
if(message_mode == "changeling")
if(mind && mind.changeling)
log_say("[mind.changeling.changelingID]/[src.key] : [message]")
for(var/mob/Changeling in mob_list)
if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer))
Changeling << "<i><font color=#800080><b>[mind.changeling.changelingID]:</b> [message]</font></i>"
return
if (message_mode == "alientalk")
if(alien_talk_understand || hivecheck())
//message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant
alien_talk(message)
return
if(is_muzzled()) // Intentionally after changeling hivemind check
return
var/list/obj/item/used_radios = new
switch (message_mode)
@@ -211,12 +229,6 @@ var/list/department_radio_keys = list(
robot_talk(message)
return
if ("alientalk")
if(alien_talk_understand || hivecheck())
//message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant
alien_talk(message)
return
if ("department")
if (src:ears)
src:ears.talk_into(src, message, message_mode)
@@ -231,13 +243,6 @@ var/list/department_radio_keys = list(
message_range = 1
italics = 1
if("changeling")
if(mind && mind.changeling)
log_say("[mind.changeling.changelingID]/[src.key] : [message]")
for(var/mob/Changeling in mob_list)
if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer))
Changeling << "<i><font color=#800080><b>[mind.changeling.changelingID]:</b> [message]</font></i>"
return
////SPECIAL HEADSETS START
else
//world << "SPECIAL HEADSETS"
+3
View File
@@ -558,6 +558,9 @@ var/list/slot_equipment_priority = list( \
/mob/proc/is_active()
return (0 >= usr.stat)
/mob/proc/is_muzzled()
return 0
/mob/proc/see(message)
if(!is_active())
return 0
+2
View File
@@ -72,6 +72,8 @@
//transfer mind and delete old mob
if(mind)
mind.transfer_to(O)
if(O.mind.changeling)
O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
if (tr_flags & TR_DEFAULTMSG)
O << "<B>You are now a monkey.</B>"
updateappearance(O)