[MIRROR] Hostile mob friends! (#8992)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: CHOMPStation2 <chompsation2@gmail.com>
This commit is contained in:
CHOMPStation2
2024-09-21 05:05:02 -07:00
committed by GitHub
parent f940cc2d72
commit c95a53ecda
5 changed files with 137 additions and 0 deletions

View File

@@ -21,6 +21,7 @@
#define FACTION_ALTEVIAN "altevian"
#define FACTION_CULT "cult"
#define FACTION_GLAMOUR "glamour"
#define FACTION_PIRATE "pirate"
#define FACTION_SHADEKIN "shadekin"
#define FACTION_SPACE_GHOST "space ghost"

View File

@@ -33,3 +33,92 @@
/mob/living/simple_mob/homunculus/update_icons()
return
/mob/living/simple_mob/homunculus/evil
var/seen_melee
var/seen_gun
var/transformed
var/seen_armour
maxHealth = 100
health = 100
faction = FACTION_GLAMOUR
melee_damage_lower = 5
melee_damage_upper = 7
ai_holder_type = /datum/ai_holder/simple_mob/hostile
/mob/living/simple_mob/homunculus/evil/Life()
handle_homunculus()
return ..()
/mob/living/simple_mob/homunculus/evil/proc/handle_homunculus()
if(!transformed)
for(var/mob/living/carbon/human/H in range(8, src))
if(H.stat == DEAD)
continue
name = H.name
desc = H.desc
icon = H.icon
icon_state = H.icon_state
copy_overlays(H, TRUE)
resize(H.size_multiplier, ignore_prefs = TRUE)
var/obj/item/A = H.get_active_hand()
var/obj/item/I = H.get_inactive_hand()
if(istype(A,/obj/item/weapon/material) || istype(A,/obj/item/weapon/melee) || istype(I,/obj/item/weapon/material) || istype(I,/obj/item/weapon/melee))
seen_melee = 1
melee_damage_lower = 20
melee_damage_upper = 30
if(istype(A,/obj/item/weapon/gun/projectile) || istype(I,/obj/item/weapon/gun/projectile))
seen_gun = 1
projectiletype = /obj/item/projectile/bullet/pistol/medium
projectilesound = 'sound/weapons/Gunshot_light.ogg'
if(istype(A,/obj/item/weapon/gun/projectile/shotgun) || istype(I,/obj/item/weapon/gun/projectile/shotgun))
projectiletype = /obj/item/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
reload_time = 1.5 SECONDS
ranged_attack_delay = 1.5 SECONDS
projectile_dispersion = 8
projectile_accuracy = -40
if(istype(A,/obj/item/weapon/gun/projectile/automatic) || istype(I,/obj/item/weapon/gun/projectile/automatic))
base_attack_cooldown = 5
projectile_dispersion = 7
projectile_accuracy = -20
if(istype(A,/obj/item/weapon/gun/projectile/heavysniper) || istype(I,/obj/item/weapon/gun/projectile/heavysniper))
projectiletype = /obj/item/projectile/bullet/rifle/a145/highvel // Do not get seen with a big ass sniper!
projectilesound = 'sound/weapons/Gunshot_cannon.ogg'
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectile_accuracy = 75
if(istype(A,/obj/item/weapon/gun/energy) || istype(I,/obj/item/weapon/gun/energy))
seen_gun = 1
projectiletype = /obj/item/projectile/beam/midlaser
projectilesound = 'sound/weapons/Laser.ogg'
projectile_dispersion = 5
projectile_accuracy = -20
if(istype(A,/obj/item/weapon/gun/energy/ionrifle) || istype(I,/obj/item/weapon/gun/energy/ionrifle))
projectiletype = /obj/item/projectile/ion
if(istype(A,/obj/item/weapon/gun/energy/lasercannon) || istype(I,/obj/item/weapon/gun/energy/lasercannon))
projectiletype = /obj/item/projectile/beam/heavylaser
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectilesound = 'sound/weapons/lasercannonfire.ogg'
if(istype(A,/obj/item/weapon/gun/energy/sniperrifle) || istype(I,/obj/item/weapon/gun/energy/sniperrifle))
projectiletype = /obj/item/projectile/beam/sniper // Do not get seen with a big ass sniper!
projectilesound = 'sound/weapons/gauss_shoot.ogg'
ranged_attack_delay = 2.5 SECONDS
reload_time = 5 SECONDS
projectile_accuracy = 75
if(istype(A,/obj/item/weapon/gun/magnetic) || istype(I,/obj/item/weapon/gun/magnetic))
seen_gun = 1
projectiletype = /obj/item/projectile/bullet/magnetic/bore
projectilesound = 'sound/weapons/railgun.ogg'
ranged_attack_delay = 1.5 SECONDS
projectile_dispersion = 5
projectile_accuracy = 20
var/obj/item/clothing/suit/S = H.get_equipped_item(slot_wear_suit)
if(istype(S,/obj/item/clothing/suit/armor) || istype(S,/obj/item/clothing/suit/space/rig/))
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100)
transformed = 1
return TRUE

View File

@@ -189,3 +189,48 @@
/datum/ai_holder/simple_mob/melee/evasive/corrupthound
violent_breakthrough = TRUE
can_breakthrough = TRUE
/mob/living/simple_mob/vore/aggressive/corrupthound/fire
icon_state = "badboi_fire"
icon_living = "badboi_fire"
icon_dead = "badboi_fire-dead"
icon_rest = "badboi_fire_rest"
maxHealth = 150
health = 150
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive
projectiletype = /obj/item/projectile/scatter/flamethrower
ranged_attack_delay = 2 SECONDS
/mob/living/simple_mob/vore/aggressive/corrupthound/laser
icon_state = "badboi_laser"
icon_living = "badboi_laser"
icon_dead = "badboi_laser-dead"
icon_rest = "badboi_laser_rest"
maxHealth = 150
health = 150
ai_holder_type = /datum/ai_holder/simple_mob/ranged
ranged_attack_delay = 2 SECONDS
projectiletype = /obj/item/projectile/beam/midlaser
projectilesound = 'sound/weapons/Laser.ogg'
projectile_dispersion = 5
projectile_accuracy = -20
/mob/living/simple_mob/vore/aggressive/corrupthound/fast
icon_state = "badboi_fast"
icon_living = "badboi_fast"
icon_dead = "badboi_fast-dead"
icon_rest = "badboi_fast_rest"
maxHealth = 100
health = 100
movement_cooldown = -1
melee_damage_lower = 7
melee_damage_upper = 15

View File

@@ -137,6 +137,8 @@
/datum/ai_holder/simple_mob/vore/meowl
var/last_friend_time = 0
violent_breakthrough = FALSE
destructive = FALSE
/datum/ai_holder/simple_mob/vore/meowl/engage_target()
ai_log("engage_target() : Entering.", AI_LOG_DEBUG)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 KiB

After

Width:  |  Height:  |  Size: 708 KiB