Adds Mime Goblins (#25040)

* mime goblin

* invis walls

* oops almost made them give infinite meat, also above stuff

* adds a message for when it makes an invisiwall

* fixes rogue white pixel

* thanks travis

* oops I forgot to fix one of the icons

* adds DYNAMIC SLAPPING MOVEMENT
This commit is contained in:
Kharkov72
2019-11-20 09:09:39 -05:00
committed by adrian
parent c3f49ac43c
commit dd2e247358
7 changed files with 90 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ var/list/spark_sound = list('sound/effects/sparks1.ogg','sound/effects/sparks2.o
var/list/rustle_sound = list('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg')
var/list/punch_sound = list('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg')
var/list/clown_sound = list('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg')
var/list/slap_sound = list('sound/effects/slap1.ogg','sound/effects/slap2.ogg')
var/list/swing_hit_sound = list('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg')
var/list/hiss_sound = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
var/list/page_sound = list('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg')
@@ -168,6 +169,8 @@ var/const/SURROUND_CAP = 7
soundin = pick(punch_sound)
if ("clownstep")
soundin = pick(clown_sound)
if ("slap")
soundin = pick(slap_sound)
if ("swing_hit")
soundin = pick(swing_hit_sound)
if ("hiss")

View File

@@ -173,6 +173,13 @@
_color = "mime"
species_fit = list(VOX_SHAPED)
/obj/item/clothing/gloves/white/attackby(obj/item/weapon/W, mob/user)
..()
if(istype(W, /obj/item/clothing/head/beret))
new /mob/living/simple_animal/hostile/retaliate/faguette/goblin(get_turf(src))
qdel(W)
qdel(src)
/obj/item/clothing/gloves/white/advanced //mime traitor gloves, spawn in a silent hand gun with two shots
actions_types = list(/datum/action/item_action/toggle_gun)
var/obj/item/weapon/gun/projectile/handgun/current_gun = null

View File

@@ -61,6 +61,13 @@
flags = FPRINT
siemens_coefficient = 0.9
/obj/item/clothing/head/beret/attackby(obj/item/weapon/W, mob/user)
..()
if(istype(W, /obj/item/clothing/gloves/white))
new /mob/living/simple_animal/hostile/retaliate/faguette/goblin(get_turf(src))
qdel(W)
qdel(src)
//Security
/obj/item/clothing/head/beret/sec
name = "security beret"

View File

@@ -2,7 +2,7 @@
/mob/living/simple_animal/hostile/retaliate/faguette
name = "faguette"
desc = "This sad, pitiful creature is all that remains of what used to be a human, cursed by the Gods to aimlessly roam with its mouth and fingers sewn shut, and its left arm transformed into a perfectly baked baguette."
desc = "This sad, pitiful creature is all that remains of what used to be a human, cursed by the Gods to aimlessly roam with its mouth and fingers sewn shut, and it's left arm transformed into a perfectly baked baguette."
icon_state = "faguette"
icon_living = "faguette"
icon_dead = "faguette_dead"
@@ -29,6 +29,7 @@
melee_damage_upper = 0.1
attacktext = "attacks"
attack_sound = 'sound/weapons/genhit1.ogg'
meat_type = null
min_oxy = 5
max_oxy = 0
@@ -58,6 +59,9 @@
return
..()
/mob/living/simple_animal/hostile/retaliate/faguette/attackby(obj/item/weapon/O, mob/user)
if(istype(O,/obj/item/weapon/book))
gib()
/mob/living/simple_animal/hostile/retaliate/faguette/proc/handle_disabilities()
if ((prob(5) && paralysis < 10))
@@ -68,5 +72,72 @@
if(timestopped)
return //under effects of time magick
var/msg = pick("drools through its stitched mouth","silently cries into its baguette","sloppily mimes tieing an invisible noose around its neck")
var/msg = pick("drools slightly","mimes crying into a tissue","sloppily mimes tying an invisible noose")
return ..("me", type, "[msg].")
/mob/living/simple_animal/hostile/retaliate/faguette/AttackingTarget()
if(isliving(target))
var/mob/living/L = target
if(prob(10))
L.silent += 3
L.visible_message("<span class='danger'>\The [src.name] silences \the [L.name]!</span>")
return
return ..()
/mob/living/simple_animal/hostile/retaliate/faguette/goblin
name = "mime goblin"
desc = "A tiny walking beret and gloves. Is it miming for a baguette?"
icon_state = "MimeGoblin"
icon_living = "MimeGoblin"
icon_dead = null
response_help = "pats the"
maxHealth = 100
health = 100
size = 1
environment_smash_flags = SMASH_LIGHT_STRUCTURES
var/footstep = 0 //for slapping
speed = 1
turns_per_move = 1
melee_damage_type = "BRAIN"
/mob/living/simple_animal/hostile/retaliate/faguette/goblin/attackby(obj/item/weapon/W, mob/user)
if(istype(W,/obj/item/weapon/pen)) //Renaming
var/n_name = copytext(sanitize(input(user, "What would you like to name this mime goblin?", "Mime Goblin Name", null) as text|null), 1, MAX_NAME_LEN*3)
if(n_name && Adjacent(user) && !user.stat)
name = "[n_name]"
return
..()
/mob/living/simple_animal/hostile/retaliate/faguette/AttackingTarget()
if(isliving(target))
var/mob/living/L = target
if(prob(10))
L.visible_message("<span class='danger'>\The [src.name] mimes an invisible wall!</span>")
var/obj/effect/forcefield/mime/wall = new(get_turf(src))
spawn(300)
if(wall)
qdel(wall)
return ..()
/mob/living/simple_animal/hostile/retaliate/faguette/goblin/say()
return
/mob/living/simple_animal/hostile/retaliate/faguette/goblin/death(var/gibbed = FALSE)
..(TRUE)
new /obj/item/clothing/head/beret(src.loc)
new /obj/item/clothing/gloves/white(src.loc)
qdel(src)
/mob/living/simple_animal/hostile/retaliate/faguette/goblin/Move(NewLoc, Dir = 0, step_x = 0, step_y = 0, glide_size_override = 0)
. = ..()
if(.)
if(m_intent == "run")
if(footstep > 1)
footstep = 0
playsound(src, "slap", 50, 1)
else
footstep++
else
playsound(src, "slap", 20, 1)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

After

Width:  |  Height:  |  Size: 490 KiB

BIN
sound/effects/slap1.ogg Normal file

Binary file not shown.

BIN
sound/effects/slap2.ogg Normal file

Binary file not shown.