[MIRROR] turns stickmen into basic mobs (#8204)

* turns stickmen into basic mobs (#61272)

* turns stickmen into basic mobs

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-09-15 22:49:32 +01:00
committed by GitHub
co-authored by Fikou
parent 20d6ae229b
commit 376663876b
10 changed files with 157 additions and 103 deletions
@@ -111,7 +111,7 @@
/turf/open/indestructible/paper,
/area/ruin/powered)
"at" = (
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"au" = (
@@ -181,7 +181,7 @@
dir = 8
},
/obj/structure/fluff/paper/corner,
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"aE" = (
@@ -250,7 +250,7 @@
/obj/structure/fluff/paper/corner{
dir = 8
},
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"aM" = (
@@ -270,7 +270,7 @@
/area/ruin/powered)
"aO" = (
/obj/structure/fluff/paper,
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman/dog,
/turf/open/indestructible/paper,
/area/ruin/powered)
"aP" = (
@@ -302,7 +302,7 @@
/area/ruin/powered)
"aS" = (
/obj/structure/fluff/paper/corner,
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman/dog,
/turf/open/indestructible/paper,
/area/ruin/powered)
"aT" = (
@@ -358,7 +358,7 @@
/obj/structure/fluff/paper{
dir = 1
},
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman/dog,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bb" = (
@@ -432,7 +432,7 @@
/obj/structure/fluff/paper/corner{
dir = 1
},
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bl" = (
@@ -443,7 +443,7 @@
/area/ruin/powered)
"bm" = (
/obj/structure/fluff/paper,
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bn" = (
@@ -498,7 +498,7 @@
/turf/open/indestructible/paper,
/area/ruin/powered)
"bu" = (
/mob/living/simple_animal/hostile/stickman/ranged,
/mob/living/basic/stickman/ranged,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bv" = (
@@ -562,7 +562,7 @@
/turf/open/indestructible/paper,
/area/ruin/powered)
"bE" = (
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman/dog,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bF" = (
@@ -577,7 +577,7 @@
/area/ruin/powered)
"bG" = (
/obj/item/toy/crayon/blue,
/mob/living/simple_animal/hostile/stickman/ranged,
/mob/living/basic/stickman/ranged,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bH" = (
@@ -693,7 +693,7 @@
/obj/structure/fluff/paper{
dir = 4
},
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"bV" = (
@@ -792,7 +792,7 @@
/obj/structure/fluff/paper{
dir = 1
},
/mob/living/simple_animal/hostile/stickman,
/mob/living/basic/stickman,
/turf/open/indestructible/paper,
/area/ruin/powered)
"ck" = (
@@ -861,7 +861,7 @@
/obj/structure/fluff/paper{
dir = 1
},
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman/dog,
/turf/open/indestructible/paper,
/area/ruin/powered)
"ct" = (
@@ -891,7 +891,7 @@
/obj/structure/fluff/paper{
dir = 1
},
/mob/living/simple_animal/hostile/stickman/ranged,
/mob/living/basic/stickman/ranged,
/turf/open/indestructible/paper,
/area/ruin/powered)
"wr" = (
@@ -1,7 +1,7 @@
/**
* When attached to a basic mob, it gives it the ability to be hurt by cold body temperatures
* When attached to a basic mob, it gives it the ability to be hurt by cold/hot body temperatures
*/
/datum/element/basic_body_temp_sensetive
/datum/element/basic_body_temp_sensitive
element_flags = ELEMENT_BESPOKE
id_arg_index = 2
@@ -14,7 +14,7 @@
///Damage when above max temp
var/heat_damage = 1
/datum/element/basic_body_temp_sensetive/Attach(datum/target, min_body_temp, max_body_temp, cold_damage, heat_damage)
/datum/element/basic_body_temp_sensitive/Attach(datum/target, min_body_temp, max_body_temp, cold_damage, heat_damage)
. = ..()
if(!isbasicmob(target))
return ELEMENT_INCOMPATIBLE
@@ -29,13 +29,13 @@
src.heat_damage = heat_damage
RegisterSignal(target, COMSIG_LIVING_LIFE, .proc/on_life)
/datum/element/basic_body_temp_sensetive/Detach(datum/source)
/datum/element/basic_body_temp_sensitive/Detach(datum/source)
if(source)
UnregisterSignal(source, COMSIG_LIVING_LIFE)
return ..()
/datum/element/basic_body_temp_sensetive/proc/on_life(datum/target, delta_time, times_fired)
/datum/element/basic_body_temp_sensitive/proc/on_life(datum/target, delta_time, times_fired)
var/mob/living/basic/basic_mob = target
var/gave_alert = FALSE
+5 -7
View File
@@ -156,7 +156,6 @@
/obj/item/clothing/suit/wizrobe/paper/verb/stickmen()
set category = "Object"
set name = "Summon Stick Minions"
set src in usr
if(!isliving(usr))
return
if(!robe_charge)
@@ -164,13 +163,12 @@
return
usr.say("Rise, my creation! Off your page into this realm!", forced = "stickman summoning")
playsound(src.loc, 'sound/magic/summon_magic.ogg', 50, TRUE, TRUE)
var/mob/living/M = new /mob/living/simple_animal/hostile/stickman(get_turf(usr))
var/list/factions = usr.faction
M.faction = factions
src.robe_charge = FALSE
playsound(loc, 'sound/magic/summon_magic.ogg', 50, TRUE, TRUE)
var/mob/living/M = new /mob/living/basic/stickman(get_turf(usr))
M.faction += list("[REF(usr)]")
robe_charge = FALSE
sleep(30)
src.robe_charge = TRUE
robe_charge = TRUE
to_chat(usr, span_notice("The robe hums, its internal magic supply restored."))
@@ -0,0 +1,94 @@
/mob/living/basic/stickman
name = "Angry Stick Man"
desc = "A being from a realm with only 2 dimensions. At least it's trying to stay faced towards you."
icon_state = "stickman"
icon_living = "stickman"
icon_dead = "stickman_dead"
mob_biotypes = MOB_HUMANOID
gender = MALE
health = 100
maxHealth = 100
speed = 0.5
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
melee_damage_lower = 10
melee_damage_upper = 10
attack_sound = 'sound/weapons/punch1.ogg'
combat_mode = TRUE
faction = list("stickman")
ai_controller = /datum/ai_controller/basic_controller/stickman
/mob/living/basic/stickman/Initialize(mapload)
. = ..()
new /obj/effect/temp_visual/paper_scatter(get_turf(src))
AddElement(/datum/element/basic_body_temp_sensitive, cold_damage = 7.5, heat_damage = 7.5)
AddElement(/datum/element/atmos_requirements, list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0), 7.5)
/datum/ai_controller/basic_controller/stickman
blackboard = list(
BB_TARGETTING_DATUM = new /datum/targetting_datum/basic()
)
ai_movement = /datum/ai_movement/basic_avoidance
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_melee_attack_subtree/stickman
)
/datum/ai_planning_subtree/basic_melee_attack_subtree/stickman
melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/stickman
/datum/ai_behavior/basic_melee_attack/stickman
action_cooldown = 1.5 SECONDS
/datum/ai_controller/basic_controller/stickman/PerformIdleBehavior(delta_time)
. = ..()
var/mob/living/living_pawn = pawn
if(DT_PROB(25, delta_time) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby)
var/move_dir = pick(GLOB.alldirs)
living_pawn.Move(get_step(living_pawn, move_dir), move_dir)
/mob/living/basic/stickman/dog
name = "Angry Stick Dog"
desc = "Stickman's best friend, if he could see him at least."
icon_state = "stickdog"
icon_living = "stickdog"
icon_dead = "stickdog_dead"
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
attack_vis_effect = ATTACK_EFFECT_BITE
sharpness = SHARP_POINTY
mob_biotypes = MOB_BEAST
attack_sound = 'sound/weapons/bite.ogg'
/mob/living/basic/stickman/ranged
name = "Angry Stick Gunman"
desc = "How do 2 dimensional guns even work??"
icon_state = "stickmanranged"
icon_living = "stickmanranged"
attack_verb_continuous = "whacks"
attack_verb_simple = "whack"
melee_damage_lower = 5
melee_damage_upper = 5
attack_sound = 'sound/weapons/genhit1.ogg'
ai_controller = /datum/ai_controller/basic_controller/stickman/ranged
/mob/living/basic/stickman/ranged/Initialize()
. = ..()
AddElement(/datum/element/death_drops, list(/obj/item/gun/ballistic/automatic/pistol/stickman))
AddElement(/datum/element/ranged_attacks, /obj/item/ammo_casing/c9mm, 'sound/misc/bang.ogg')
/datum/ai_controller/basic_controller/stickman/ranged
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_ranged_attack_subtree/stickman
)
/datum/ai_planning_subtree/basic_ranged_attack_subtree/stickman
ranged_attack_behavior = /datum/ai_behavior/basic_ranged_attack/stickman
/datum/ai_behavior/basic_ranged_attack/stickman
action_cooldown = 5 SECONDS
@@ -31,7 +31,7 @@
. = ..()
AddElement(/datum/element/death_drops, list(/obj/effect/decal/cleanable/insectguts))
AddElement(/datum/element/swabable, CELL_LINE_TABLE_COCKROACH, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 7)
AddElement(/datum/element/basic_body_temp_sensetive, 270, INFINITY)
AddElement(/datum/element/basic_body_temp_sensitive, 270, INFINITY)
AddComponent(/datum/component/squashable, squash_chance = 50, squash_damage = 1)
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
+2 -2
View File
@@ -1323,8 +1323,8 @@
/mob/living/simple_animal/hostile/asteroid/goliath/beast,
/mob/living/simple_animal/hostile/headcrab,
/mob/living/simple_animal/hostile/morph,
/mob/living/simple_animal/hostile/stickman,
/mob/living/simple_animal/hostile/stickman/dog,
/mob/living/basic/stickman,
/mob/living/basic/stickman/dog,
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
/mob/living/simple_animal/hostile/gorilla,
/mob/living/simple_animal/parrot,
@@ -37,20 +37,43 @@
boss_type = /mob/living/simple_animal/hostile/boss/paper_wizard
needs_target = FALSE
say_when_triggered = "Rise, my creations! Jump off your pages and into this realm!"
var/static/summoned_minions = 0
///How many minions we summoned
var/summoned_minions = 0
///How many minions we can have at once
var/max_minions = 6
///How many minions we should spawn
var/minions_to_summon = 3
/datum/action/boss/wizard_summon_minions/IsAvailable()
. = ..()
if(!.)
return FALSE
if(summoned_minions >= max_minions)
return FALSE
return TRUE
/datum/action/boss/wizard_summon_minions/Trigger()
if(summoned_minions <= 6 && ..())
var/list/minions = list(
/mob/living/simple_animal/hostile/stickman,
/mob/living/simple_animal/hostile/stickman/ranged,
/mob/living/simple_animal/hostile/stickman/dog)
var/list/directions = GLOB.cardinals.Copy()
for(var/i in 1 to 3)
var/minions_chosen = pick_n_take(minions)
new minions_chosen (get_step(boss,pick_n_take(directions)), 1)
summoned_minions += 3;
. = ..()
if(!.)
return
var/list/minions = list(
/mob/living/basic/stickman,
/mob/living/basic/stickman/ranged,
/mob/living/basic/stickman/dog)
var/list/directions = GLOB.cardinals.Copy()
var/summon_amount = min(minions_to_summon, max_minions - summoned_minions)
for(var/i in 1 to summon_amount)
var/atom/chosen_minion = pick_n_take(minions)
chosen_minion = new chosen_minion(get_step(boss, pick_n_take(directions)))
RegisterSignal(chosen_minion, list(COMSIG_PARENT_QDELETING, COMSIG_LIVING_DEATH), .proc/lost_minion)
summoned_minions++
/// Called when a minion is qdeleted or dies, removes it from our minion list
/datum/action/boss/wizard_summon_minions/proc/lost_minion(mob/source)
SIGNAL_HANDLER
UnregisterSignal(source, list(COMSIG_PARENT_QDELETING, COMSIG_LIVING_DEATH))
summoned_minions--
//Mimic Ability
//Summons mimics of himself with magical papercraft
@@ -1,61 +0,0 @@
/mob/living/simple_animal/hostile/stickman
name = "Angry Stick Man"
desc = "A being from a realm with only 2 dimensions. At least it's trying to stay faced towards you."
icon_state = "stickman"
icon_living = "stickman"
icon_dead = "stickman_dead"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_HUMANOID
gender = MALE
speak_chance = 0
turns_per_move = 5
speed = 0
stat_attack = HARD_CRIT
robust_searching = 1
environment_smash = ENVIRONMENT_SMASH_NONE
maxHealth = 100
health = 100
harm_intent_damage = 5
obj_damage = 0
melee_damage_lower = 10
melee_damage_upper = 10
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
attack_sound = 'sound/weapons/punch1.ogg'
combat_mode = TRUE
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 7.5
faction = list("hostile","stickman")
check_friendly_fire = 1
status_flags = CANPUSH
var/datum/action/boss/wizard_summon_minions/changesummons = /datum/action/boss/wizard_summon_minions
var/summoned_by_wizard = 0
/mob/living/simple_animal/hostile/stickman/ranged
ranged = 1
retreat_distance = 5
minimum_distance = 5
icon_state = "stickmanranged"
icon_living = "stickmanranged"
casingtype = /obj/item/ammo_casing/c45
projectilesound = 'sound/misc/bang.ogg'
loot = list(/obj/item/gun/ballistic/automatic/pistol/stickman)
/mob/living/simple_animal/hostile/stickman/dog
name = "Angry Stick Dog"
desc = "Stickman's best friend, if he could see him at least."
icon_state = "stickdog"
icon_living = "stickdog"
icon_dead = "stickdog_dead"
mob_biotypes = MOB_BEAST
/mob/living/simple_animal/hostile/stickman/Initialize(mapload, wizard_summoned)
. = ..()
new /obj/effect/temp_visual/paper_scatter(src)
summoned_by_wizard = wizard_summoned
/mob/living/simple_animal/hostile/stickman/death()
..()
if(summoned_by_wizard == 1)
changesummons.summoned_minions --
Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

+1 -1
View File
@@ -2754,6 +2754,7 @@
#include "code\modules\mob\living\basic\basic.dm"
#include "code\modules\mob\living\basic\basic_defense.dm"
#include "code\modules\mob\living\basic\health_adjustment.dm"
#include "code\modules\mob\living\basic\ruin_defender\stickman.dm"
#include "code\modules\mob\living\basic\vermin\cockroach.dm"
#include "code\modules\mob\living\brain\brain.dm"
#include "code\modules\mob\living\brain\brain_item.dm"
@@ -2989,7 +2990,6 @@
#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm"
#include "code\modules\mob\living\simple_animal\hostile\space_dragon.dm"
#include "code\modules\mob\living\simple_animal\hostile\statue.dm"
#include "code\modules\mob\living\simple_animal\hostile\stickman.dm"
#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm"
#include "code\modules\mob\living\simple_animal\hostile\tree.dm"
#include "code\modules\mob\living\simple_animal\hostile\vatbeast.dm"