mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
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:
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 it’s 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
BIN
sound/effects/slap1.ogg
Normal file
Binary file not shown.
BIN
sound/effects/slap2.ogg
Normal file
BIN
sound/effects/slap2.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user