[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:
SkyratBot
2022-12-07 01:05:34 +00:00
committed by GitHub
co-authored by Comxy Zonespace
parent ba220a251f
commit e14f30aae5
8 changed files with 115 additions and 36 deletions
+2
View File
@@ -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