Armalis gear and mob icons, plus sonic cannon.

Added sonic cannon skeleton code.

Noise cannon fire sound, Vox shriek sound.

Added Vox Armalis species.

Swapped vox breath mask over to species_restricted check.

Added Vox Armalis gear.

Added a random shriek effect to Vox and Vox Armalis speech.

Added quickspawn Vox Armalis definition.

Vox shriek sound effect. Thought I committed this earlier.

Added r_hand and l_hand icon_overwrite checks.

More work on Armalis. Added gut() and leap() human procs.

Adding/fixing up the leap() and gut() verbs, and a LEAPING status_flag for human/Bump().

Fixing some missing pixels in the armalis tail.

Almost forgot to whitelist armalis...

Conflicts:
	code/modules/clothing/spacesuits/alien.dm
	code/modules/mob/living/carbon/human/human.dm
	code/modules/mob/living/carbon/human/say.dm
	code/modules/mob/living/carbon/human/update_icons.dm
	icons/mob/suit.dmi
	icons/obj/clothing/gloves.dmi
	icons/obj/clothing/masks.dmi
	icons/obj/clothing/shoes.dmi
	icons/obj/gun.dmi
This commit is contained in:
Zuhayr
2014-05-14 18:24:01 -04:00
committed by ZomgPonies
parent 97765314ba
commit 43e60ab01e
24 changed files with 261 additions and 35 deletions
@@ -29,6 +29,10 @@
h_style = "Short Vox Quills"
..(new_loc, "Vox")
/mob/living/carbon/human/voxarmalis/New(var/new_loc)
h_style = "Bald"
..(new_loc, "Vox Armalis")
/mob/living/carbon/human/skellington/New(var/new_loc)
h_style = "Bald"
..(new_loc, "Skellington")
@@ -120,6 +124,13 @@
now_pushing = 0
return
//Leaping mobs just land on the tile, no pushing, no anything.
if(status_flags & LEAPING)
loc = tmob.loc
status_flags &= ~LEAPING
now_pushing = 0
return
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
var/turf/oldloc = loc
@@ -1419,3 +1430,104 @@
return 0
return 1
//Putting a couple of procs here that I don't know where else to dump.
//Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse).
/mob/living/carbon/human/proc/leap()
set category = "IC"
set name = "Leap"
set desc = "Leap at a target and grab them aggressively."
if(last_special > world.time)
return
if(stat)
src << "You cannot leap in your current state."
return
var/list/choices = list()
for(var/mob/living/M in view(6,src))
if(!istype(M,/mob/living/silicon))
choices += M
choices -= src
var/mob/living/T = input(src,"Who do you wish to leap at?") in null|choices
if(!T || !src || src.stat) return
if(get_dist(get_turf(T), get_turf(src)) > 6) return
last_special = world.time + 100
status_flags |= LEAPING
src.visible_message("<span class='warning'><b>\The [src]</b> leaps at [T]!</span>")
src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1)
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
sleep(5)
if(status_flags & LEAPING) status_flags &= ~LEAPING
if(!src.Adjacent(T))
src << "\red You miss!"
return
T.Weaken(5)
var/use_hand = "left"
if(l_hand)
if(r_hand)
src << "\red You need to have one hand free to grab someone."
return
else
use_hand = "right"
src.visible_message("<span class='warning'><b>\The [src]</b> seizes [T] aggressively!</span>")
var/obj/item/weapon/grab/G = new(src,T)
if(use_hand == "left")
l_hand = G
else
r_hand = G
G.state = GRAB_AGGRESSIVE
G.icon_state = "grabbed1"
G.synch()
/mob/living/carbon/human/proc/gut()
set category = "IC"
set name = "Gut"
set desc = "While grabbing someone aggressively, rip their guts out or tear them apart."
if(last_special > world.time)
return
if(stat)
src << "\red You cannot do that in your current state."
return
var/obj/item/weapon/grab/G = locate() in src
if(!G || !istype(G))
src << "\red You are not grabbing anyone."
return
if(G.state < GRAB_AGGRESSIVE)
src << "\red You must have an aggressive grab to gut your prey!"
return
last_special = world.time + 50
visible_message("<span class='warning'><b>\The [src]</b> rips viciously at \the [G.affecting]'s body with its claws!</span>")
if(istype(G.affecting,/mob/living/carbon/human))
var/mob/living/carbon/human/H = G.affecting
H.apply_damage(50,BRUTE)
if(H.stat == 2)
H.gib()
else
var/mob/living/M = G.affecting
if(!istype(M)) return //wut
M.apply_damage(50,BRUTE)
if(M.stat == 2)
M.gib()
+5 -2
View File
@@ -84,8 +84,11 @@
if (src.slurring)
if(copytext(message, 1, 2) != "*")
message = slur(message)
..(message)
if((species.name == "Vox" || species.name == "Vox Armalis") && prob(20))
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
..(message)
/mob/living/carbon/human/say_understands(var/other,var/datum/language/speaking = null)
@@ -123,4 +126,4 @@
return
/mob/living/carbon/human/proc/GetSpecialVoice()
return special_voice
return special_voice
@@ -865,12 +865,9 @@ proc/get_damage_icon_part(damage_state, body_part)
if(r_hand)
r_hand.screen_loc = ui_rhand //TODO
var/t_state = r_hand.item_state
if(!t_state)
t_state = r_hand.icon_state
var/dmi='icons/mob/items_righthand.dmi'
if(r_hand.custom)
dmi=r_hand.icon
overlays_standing[R_HAND_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
if(!t_state) t_state = r_hand.icon_state
if(r_hand.icon_override) t_state = "[t_state]_r"
overlays_standing[R_HAND_LAYER] = image("icon" = ((r_hand.icon_override) ? r_hand.icon_override : 'icons/mob/items_righthand.dmi'), "icon_state" = "[t_state]")
if (handcuffed) drop_r_hand()
else
overlays_standing[R_HAND_LAYER] = null
@@ -881,12 +878,9 @@ proc/get_damage_icon_part(damage_state, body_part)
if(l_hand)
l_hand.screen_loc = ui_lhand //TODO
var/t_state = l_hand.item_state
if(!t_state)
t_state = l_hand.icon_state
var/dmi='icons/mob/items_lefthand.dmi'
if(l_hand.custom)
dmi=l_hand.icon
overlays_standing[L_HAND_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
if(!t_state) t_state = l_hand.icon_state
if(l_hand.icon_override) t_state = "[t_state]_l"
overlays_standing[L_HAND_LAYER] = image("icon" = ((l_hand.icon_override) ? l_hand.icon_override : 'icons/mob/items_lefthand.dmi'), "icon_state" = "[t_state]")
if (handcuffed) drop_l_hand()
else
overlays_standing[L_HAND_LAYER] = null
@@ -896,7 +890,7 @@ proc/get_damage_icon_part(damage_state, body_part)
overlays_standing[TAIL_LAYER] = null
if(species.tail && species.bodyflags & HAS_TAIL)
if(!wear_suit || !(wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space))
if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+37
View File
@@ -212,7 +212,44 @@
flags = NO_SCAN | IS_WHITELISTED | NO_BLOOD
/datum/species/vox/armalis
name = "Vox Armalis"
icobase = 'icons/mob/human_races/r_armalis.dmi'
deform = 'icons/mob/human_races/r_armalis.dmi'
language = "Vox-pidgin"
warning_low_pressure = 50
hazard_low_pressure = 0
cold_level_1 = 80
cold_level_2 = 50
cold_level_3 = 0
heat_level_1 = 2000
heat_level_2 = 3000
heat_level_3 = 4000
brute_mod = 0.2
burn_mod = 0.2
eyes = "blank_eyes"
breath_type = "nitrogen"
flags = NO_SCAN | NO_BLOOD | HAS_TAIL | NO_PAIN | IS_WHITELISTED
blood_color = "#2299FC"
flesh_color = "#808D11"
tail = "armalis_tail"
/datum/species/vox/armalis/handle_post_spawn(var/mob/living/carbon/human/H)
H.verbs += /mob/living/carbon/human/proc/gut
..()
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
H.verbs += /mob/living/carbon/human/proc/leap
var/datum/organ/external/affected = H.get_organ("head")
//To avoid duplicates.