mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
[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:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user