mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
[MIRROR] Regal Rat - Maint Creatures DLC Update [MDB IGNORE] (#17892)
* Regal Rat - Maint Creatures DLC Update * Update frog.dm Co-authored-by: Comxy <tijntensen@gmail.com> Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
This commit is contained in:
co-authored by
Comxy
Zonespace
parent
ba220a251f
commit
e14f30aae5
@@ -3,3 +3,5 @@
|
||||
|
||||
#define FACTION_CLOWN "Clowns"
|
||||
#define FACTION_RAT "Rats"
|
||||
// Maint creatures have mutual respect for eachother.
|
||||
#define FACTION_MAINT_CREATURES "Maint_Creatures"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
speak_emote = list("chitters")
|
||||
|
||||
basic_mob_flags = DEL_ON_DEATH
|
||||
faction = list("hostile")
|
||||
faction = list("hostile", FACTION_MAINT_CREATURES)
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/cockroach
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
melee_damage_upper = 10
|
||||
obj_damage = 10
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
faction = list("hostile")
|
||||
faction = list("hostile", FACTION_MAINT_CREATURES)
|
||||
ai_controller = /datum/ai_controller/basic_controller/cockroach/glockroach
|
||||
cockroach_cell_line = CELL_LINE_TABLE_GLOCKROACH
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_SLASH
|
||||
faction = list("hostile")
|
||||
faction = list("hostile", FACTION_MAINT_CREATURES)
|
||||
sharpness = SHARP_POINTY
|
||||
ai_controller = /datum/ai_controller/basic_controller/cockroach/hauberoach
|
||||
cockroach_cell_line = CELL_LINE_TABLE_HAUBEROACH
|
||||
@@ -144,3 +144,17 @@
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/hauberoach //Slightly slower, as this is being made in feature freeze ;)
|
||||
action_cooldown = 1 SECONDS
|
||||
|
||||
/datum/ai_controller/basic_controller/cockroach/sewer
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/random_speech/cockroach,
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/sewer,
|
||||
/datum/ai_planning_subtree/find_and_hunt_target/roach,
|
||||
)
|
||||
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/sewer
|
||||
melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/sewer
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/sewer
|
||||
action_cooldown = 0.8 SECONDS
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
held_w_class = WEIGHT_CLASS_TINY
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
faction = list(FACTION_RAT)
|
||||
faction = list(FACTION_RAT, FACTION_MAINT_CREATURES)
|
||||
butcher_results = list(/obj/item/food/meat/slab/mouse = 1)
|
||||
|
||||
speak_emote = list("squeaks")
|
||||
@@ -345,7 +345,7 @@
|
||||
/// AI controller for rats, slightly more complex than mice becuase they attack people
|
||||
/datum/ai_controller/basic_controller/mouse/rat
|
||||
blackboard = list(
|
||||
BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/rat(),
|
||||
BB_TARGETTING_DATUM = new /datum/targetting_datum/basic(),
|
||||
BB_BASIC_MOB_CURRENT_TARGET = null, // heathen
|
||||
BB_CURRENT_HUNTING_TARGET = null, // cheese
|
||||
BB_LOW_PRIORITY_HUNTING_TARGET = null, // cable
|
||||
@@ -367,6 +367,3 @@
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/rat
|
||||
action_cooldown = 2 SECONDS
|
||||
|
||||
/datum/targetting_datum/basic/rat
|
||||
check_factions_exactly = TRUE
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
response_disarm_simple = "gently push aside"
|
||||
response_harm_continuous = "kicks"
|
||||
response_harm_simple = "kick"
|
||||
faction = list("neutral", FACTION_MAINT_CREATURES)
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
random_retaliate = FALSE
|
||||
var/vomiting = FALSE
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_CLAW
|
||||
unique_name = TRUE
|
||||
faction = list(FACTION_RAT)
|
||||
faction = list(FACTION_RAT, FACTION_MAINT_CREATURES)
|
||||
///Whether or not the regal rat is already opening an airlock
|
||||
var/opening_airlock = FALSE
|
||||
///The spell that the rat uses to generate miasma
|
||||
@@ -258,35 +258,100 @@
|
||||
/datum/action/cooldown/riot/proc/riot()
|
||||
var/cap = CONFIG_GET(number/ratcap)
|
||||
var/uplifted_mice = FALSE
|
||||
for(var/mob/living/basic/mouse/nearby_mouse in oview(owner, 5))
|
||||
// This mouse is already rat controlled, let's not bother with it.
|
||||
if(istype(nearby_mouse.ai_controller, /datum/ai_controller/basic_controller/mouse/rat))
|
||||
var/uplifted_frog = FALSE
|
||||
var/uplifted_roach = FALSE
|
||||
var/list/converted_check_list = list(FACTION_RAT)
|
||||
for(var/mob/living/simple_animal/hostile/retaliate/frog/nearby_frog in oview(owner, 5))
|
||||
// No need to convert when not on the same team.
|
||||
if(faction_check(nearby_frog.faction, converted_check_list))
|
||||
continue
|
||||
var/mob/living/basic/mouse/rat/rat_path = /mob/living/basic/mouse/rat
|
||||
|
||||
// Buffs our combat stats to that of a rat
|
||||
nearby_mouse.melee_damage_lower = initial(rat_path.melee_damage_lower)
|
||||
nearby_mouse.melee_damage_upper = initial(rat_path.melee_damage_upper)
|
||||
nearby_mouse.obj_damage = initial(rat_path.obj_damage)
|
||||
nearby_mouse.maxHealth = initial(rat_path.maxHealth)
|
||||
nearby_mouse.health = initial(rat_path.health)
|
||||
// Replace our AI with a rat one
|
||||
nearby_mouse.ai_controller = new /datum/ai_controller/basic_controller/mouse/rat(nearby_mouse)
|
||||
// Give a hint in description too
|
||||
nearby_mouse.desc += " ...Except this one looks corrupted and aggressive."
|
||||
// Now we share factions!
|
||||
nearby_mouse.faction = owner.faction.Copy()
|
||||
uplifted_mice = TRUE
|
||||
|
||||
if(uplifted_mice)
|
||||
owner.visible_message(span_warning("[owner] commands their army to action, mutating them into rats!"))
|
||||
|
||||
else if(LAZYLEN(SSmobs.cheeserats) < cap)
|
||||
new /mob/living/basic/mouse(owner.loc)
|
||||
owner.visible_message(span_warning("[owner] commands a rat to their side!"))
|
||||
if(nearby_frog.name == "frog")
|
||||
nearby_frog.name = "trash frog"
|
||||
nearby_frog.icon_state += "_trash"
|
||||
nearby_frog.icon_living += "_trash"
|
||||
nearby_frog.icon_dead = nearby_frog.icon_state + "_dead"
|
||||
else if(nearby_frog.name == "rare frog")
|
||||
nearby_frog.name = "rare trash frog"
|
||||
nearby_frog.icon_state += "_trash"
|
||||
nearby_frog.icon_living += "_trash"
|
||||
nearby_frog.icon_dead = nearby_frog.icon_state + "_dead"
|
||||
nearby_frog.desc += " ...Except this one lives in a trash bag."
|
||||
nearby_frog.maxHealth += 10
|
||||
nearby_frog.health += 10
|
||||
nearby_frog.melee_damage_lower += 1
|
||||
nearby_frog.melee_damage_upper += 5
|
||||
nearby_frog.faction = owner.faction.Copy()
|
||||
uplifted_frog = TRUE
|
||||
break
|
||||
|
||||
if(uplifted_frog)
|
||||
owner.visible_message(span_warning("[owner] commands their army to action, mutating them trash frogs!"))
|
||||
else
|
||||
to_chat(owner,span_warning("There's too many mice on this station to beckon a new one! Find them first!"))
|
||||
for(var/mob/living/basic/cockroach/nearby_roach in oview(owner, 5))
|
||||
// No need to convert when not on the same team.
|
||||
if(faction_check(nearby_roach.faction, converted_check_list))
|
||||
continue
|
||||
if(istype(nearby_roach, /mob/living/basic/cockroach/glockroach))
|
||||
if(nearby_roach.name == "glockroach")
|
||||
nearby_roach.name = "sewer glockroach"
|
||||
nearby_roach.melee_damage_lower += 0.5
|
||||
nearby_roach.melee_damage_upper += 2
|
||||
else if(istype(nearby_roach, /mob/living/basic/cockroach/hauberoach))
|
||||
if(nearby_roach.name == "hauberoach")
|
||||
nearby_roach.name = "sewer hauberoach"
|
||||
nearby_roach.melee_damage_lower += 0.5
|
||||
nearby_roach.melee_damage_upper += 2
|
||||
else
|
||||
if(nearby_roach.name == "cockroach")
|
||||
nearby_roach.name = "sewer cockroach"
|
||||
nearby_roach.melee_damage_lower += 2
|
||||
nearby_roach.melee_damage_upper += 4
|
||||
nearby_roach.obj_damage += 5
|
||||
nearby_roach.ai_controller = new /datum/ai_controller/basic_controller/cockroach/sewer(nearby_roach)
|
||||
nearby_roach.desc += " ...Except this one looks very robust."
|
||||
nearby_roach.icon_state += "_sewer"
|
||||
nearby_roach.maxHealth += 1
|
||||
nearby_roach.health += 1
|
||||
nearby_roach.faction = owner.faction.Copy()
|
||||
uplifted_roach = TRUE
|
||||
break
|
||||
|
||||
if(uplifted_roach)
|
||||
owner.visible_message(span_warning("[owner] commands their army to action, mutating them into sewer roaches!"))
|
||||
else if(!uplifted_frog)
|
||||
for(var/mob/living/basic/mouse/nearby_mouse in oview(owner, 5))
|
||||
// This mouse is already rat controlled, let's not bother with it.
|
||||
if(istype(nearby_mouse.ai_controller, /datum/ai_controller/basic_controller/mouse/rat))
|
||||
continue
|
||||
var/mob/living/basic/mouse/rat/rat_path = /mob/living/basic/mouse/rat
|
||||
|
||||
// Change name
|
||||
if(nearby_mouse.name == "mouse")
|
||||
nearby_mouse.name = initial(rat_path.name)
|
||||
// Buffs our combat stats to that of a rat
|
||||
nearby_mouse.melee_damage_lower = initial(rat_path.melee_damage_lower)
|
||||
nearby_mouse.melee_damage_upper = initial(rat_path.melee_damage_upper)
|
||||
nearby_mouse.obj_damage = initial(rat_path.obj_damage)
|
||||
nearby_mouse.maxHealth = initial(rat_path.maxHealth)
|
||||
nearby_mouse.health = initial(rat_path.health)
|
||||
// Replace our AI with a rat one
|
||||
nearby_mouse.ai_controller = new /datum/ai_controller/basic_controller/mouse/rat(nearby_mouse)
|
||||
// Give a hint in description too
|
||||
nearby_mouse.desc += " ...Except this one looks corrupted and aggressive."
|
||||
// Now we share factions!
|
||||
nearby_mouse.faction = owner.faction.Copy()
|
||||
uplifted_mice = TRUE
|
||||
break
|
||||
|
||||
if(uplifted_mice)
|
||||
owner.visible_message(span_warning("[owner] commands their army to action, mutating them into rats!"))
|
||||
|
||||
else if(LAZYLEN(SSmobs.cheeserats) < cap)
|
||||
new /mob/living/basic/mouse(owner.loc)
|
||||
owner.visible_message(span_warning("[owner] commands a rat to their side!"))
|
||||
|
||||
else
|
||||
to_chat(owner,span_warning("There's too many mice on this station to beckon a new one! Find them first!"))
|
||||
|
||||
StartCooldown()
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
response_harm_continuous = "splats"
|
||||
response_harm_simple = "splat"
|
||||
density = FALSE
|
||||
faction = list("hostile")
|
||||
faction = list("hostile", FACTION_MAINT_CREATURES)
|
||||
//attack_sound = 'sound/effects/reee.ogg' //SKYRAT EDIT REMOVAL
|
||||
butcher_results = list(/obj/item/food/nugget = 1)
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 243 KiB |
Reference in New Issue
Block a user