mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
[MIRROR] Basic Pirate NPCs [MDB IGNORE] (#24654)
* Basic Pirate NPCs (#79284) ## About The Pull Request Converts hostile pirate NPCs to basic mobs - specifically, a subtype of trooper. As their behavior is not meaningfully distinct from other troopers, this conversion mostly just sticks them on the existing AI behavior while keeping the rest the same. Pirates do have one new thing going for them, though, to differentiate them from other troopers. They use the new **plundering attacks** component, which means that every time they land a melee attack, they steal money from the bank account of whoever they hit. This requires the target to be wearing an ID with a linked bank account, so it's not the hardest thing in the world to hide your money from them - but it's still something to be wary of! If killed, any mob with this component will drop everything they've stolen in a convenient holochip. ## Why It's Good For The Game Takes down 5 more simplemobs, and (I think) converts the last remaining trooper-type enemy to be a basic trooper. (It's possible there's more I've forgotten that could use the same AI, though.) The money-stealing behavior is mostly good because I think it's funny, but it also makes the pirates something a little distinct from "yet another mob that runs at you and punches you until you die". They still do that, but now there's a little twist! This can be placed on other mobs too, if we want to make any other sorts of thieves or brigands. ## Changelog 🆑 refactor: Pirate NPCs now use the basic mob framework. They'll be a little smarter in combat, and if you're wearing your ID they'll siphon your bank account with every melee attack! Beware! Please report any bugs. /🆑 * Basic Pirate NPCs * Modular paths --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
co-authored by
lizardqueenlexi
Giz
parent
e501a5c02e
commit
0923ef2b26
@@ -26,7 +26,7 @@
|
||||
/area/template_noop)
|
||||
"ah" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space{
|
||||
/mob/living/basic/trooper/pirate/ranged/space{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/template_noop,
|
||||
@@ -587,7 +587,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space{
|
||||
/mob/living/basic/trooper/pirate/ranged/space{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/open/floor/iron/airless,
|
||||
@@ -736,7 +736,7 @@
|
||||
/area/ruin/space/has_grav)
|
||||
"Fr" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space{
|
||||
/mob/living/basic/trooper/pirate/ranged/space{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
@@ -941,7 +941,7 @@
|
||||
"Nm" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space{
|
||||
/mob/living/basic/trooper/pirate/ranged/space{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/open/floor/iron/airless,
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/area/ruin/space/has_grav/derelictconstruction)
|
||||
"fa" = (
|
||||
/obj/structure/lattice,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space,
|
||||
/mob/living/basic/trooper/pirate/ranged/space,
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"gi" = (
|
||||
@@ -416,7 +416,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/derelictconstruction)
|
||||
"Za" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space,
|
||||
/mob/living/basic/trooper/pirate/melee/space,
|
||||
/obj/structure/lattice/catwalk,
|
||||
/turf/template_noop,
|
||||
/area/ruin/space/has_grav/derelictconstruction)
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/ruin/space/has_grav/cargodise_freighter/utility)
|
||||
"dT" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee{
|
||||
/mob/living/basic/trooper/pirate/melee{
|
||||
faction = list("hostile")
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -2902,7 +2902,7 @@
|
||||
/area/ruin/space/has_grav/cargodise_freighter/primaryhall)
|
||||
"UP" = (
|
||||
/obj/effect/turf_decal/trimline/blue/line,
|
||||
/mob/living/simple_animal/hostile/pirate/melee{
|
||||
/mob/living/basic/trooper/pirate/melee{
|
||||
faction = list("hostile")
|
||||
},
|
||||
/turf/open/floor/iron/dark/textured_half{
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"ga" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/turf/open/floor/carpet,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"ge" = (
|
||||
@@ -340,7 +340,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"mx" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_blue/filled/line{
|
||||
dir = 10
|
||||
},
|
||||
@@ -459,7 +459,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"pS" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line{
|
||||
dir = 8
|
||||
},
|
||||
@@ -665,7 +665,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"wr" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line{
|
||||
dir = 8
|
||||
},
|
||||
@@ -737,7 +737,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"xM" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"xV" = (
|
||||
@@ -779,7 +779,7 @@
|
||||
/turf/open/floor/iron/kitchen,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"yE" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/corner{
|
||||
dir = 8
|
||||
},
|
||||
@@ -837,7 +837,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"AA" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
@@ -944,7 +944,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"EC" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line{
|
||||
dir = 1
|
||||
},
|
||||
@@ -999,7 +999,7 @@
|
||||
/turf/open/floor/iron/kitchen,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"Gc" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"Gf" = (
|
||||
@@ -1096,7 +1096,7 @@
|
||||
/turf/closed/wall/r_wall/syndicate,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"LG" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"LI" = (
|
||||
@@ -1112,7 +1112,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"Ma" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
@@ -1281,7 +1281,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"TK" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space,
|
||||
/mob/living/basic/trooper/pirate/ranged/space,
|
||||
/turf/open/misc/asteroid/lowpressure,
|
||||
/area/ruin/space)
|
||||
"TO" = (
|
||||
@@ -1332,7 +1332,7 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"UL" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
health = 200;
|
||||
maxHealth = 200;
|
||||
name = "Pirate Captain"
|
||||
@@ -1360,11 +1360,11 @@
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"VI" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space,
|
||||
/mob/living/basic/trooper/pirate/melee/space,
|
||||
/turf/open/misc/asteroid/lowpressure,
|
||||
/area/ruin/space)
|
||||
"VL" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/corner{
|
||||
dir = 1
|
||||
},
|
||||
|
||||
@@ -1164,7 +1164,7 @@
|
||||
/turf/open/misc/beach/coast,
|
||||
/area/awaymission/mothership_astrum/deck5)
|
||||
"tz" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/turf/open/misc/beach/sand,
|
||||
@@ -1777,7 +1777,7 @@
|
||||
/turf/open/floor/mineral/abductor,
|
||||
/area/awaymission/mothership_astrum/halls)
|
||||
"CU" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee{
|
||||
/mob/living/basic/trooper/pirate/melee{
|
||||
faction = list("Abductor");
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate)
|
||||
},
|
||||
@@ -1844,7 +1844,7 @@
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/awaymission/mothership_astrum/halls)
|
||||
"DE" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
@@ -2305,10 +2305,10 @@
|
||||
},
|
||||
/area/awaymission/mothership_astrum/deck1)
|
||||
"IO" = (
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
faction = list("Abductor");
|
||||
health = 200
|
||||
},
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/ruin/caravan/pirate)
|
||||
"iN" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee{
|
||||
/mob/living/basic/trooper/pirate/melee{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
@@ -139,7 +139,7 @@
|
||||
pixel_y = -30;
|
||||
req_access = null
|
||||
},
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
environment_smash = 0
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
@@ -787,7 +787,7 @@
|
||||
/area/shuttle/ruin/caravan/pirate)
|
||||
"WV" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged{
|
||||
/mob/living/basic/trooper/pirate/ranged{
|
||||
environment_smash = 0
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space,
|
||||
/mob/living/basic/trooper/pirate/ranged/space,
|
||||
/turf/open/floor/carpet/blue,
|
||||
/area/virtual_domain/powered)
|
||||
"iO" = (
|
||||
@@ -293,7 +293,7 @@
|
||||
/area/virtual_domain/powered)
|
||||
"nX" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space,
|
||||
/mob/living/basic/trooper/pirate/melee/space,
|
||||
/turf/open/floor/wood/parquet,
|
||||
/area/virtual_domain/powered)
|
||||
"oo" = (
|
||||
@@ -342,7 +342,7 @@
|
||||
},
|
||||
/obj/effect/mapping_helpers/burnt_floor,
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/turf/open/floor/wood,
|
||||
/area/virtual_domain/powered)
|
||||
"qN" = (
|
||||
@@ -385,7 +385,7 @@
|
||||
/turf/open/misc/grass,
|
||||
/area/virtual_domain/powered)
|
||||
"to" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/turf/open/misc/grass,
|
||||
/area/virtual_domain/powered)
|
||||
"ub" = (
|
||||
@@ -472,7 +472,7 @@
|
||||
/turf/open/misc/dirt/jungle,
|
||||
/area/virtual_domain/powered)
|
||||
"yi" = (
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/basic/trooper/pirate/melee,
|
||||
/turf/open/misc/beach/sand,
|
||||
/area/virtual_domain/powered)
|
||||
"yq" = (
|
||||
@@ -481,7 +481,7 @@
|
||||
/area/virtual_domain/powered)
|
||||
"yw" = (
|
||||
/obj/effect/mapping_helpers/burnt_floor,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/obj/structure/chair/wood,
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_large"
|
||||
@@ -616,7 +616,7 @@
|
||||
/area/virtual_domain/powered)
|
||||
"Hp" = (
|
||||
/obj/effect/turf_decal/siding/wood,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/basic/trooper/pirate/ranged,
|
||||
/turf/open/floor/wood,
|
||||
/area/virtual_domain/powered)
|
||||
"HY" = (
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* Component that makes basic mobs' melee attacks steal money from the target's ID card.
|
||||
* Plundered money is stored and dropped on death or removal of the component.
|
||||
*/
|
||||
/datum/component/plundering_attacks
|
||||
/// How many credits do we steal per attack?
|
||||
var/plunder_amount = 25
|
||||
/// How much plunder do we have stored?
|
||||
var/plunder_stored = 0
|
||||
|
||||
|
||||
/datum/component/plundering_attacks/Initialize(
|
||||
plunder_amount = 25,
|
||||
)
|
||||
. = ..()
|
||||
if(!isbasicmob(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
src.plunder_amount = plunder_amount
|
||||
|
||||
/datum/component/plundering_attacks/RegisterWithParent()
|
||||
. = ..()
|
||||
RegisterSignal(parent, COMSIG_HOSTILE_POST_ATTACKINGTARGET, PROC_REF(attempt_plunder))
|
||||
RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(drop_plunder))
|
||||
|
||||
/datum/component/plundering_attacks/UnregisterFromParent()
|
||||
. = ..()
|
||||
UnregisterSignal(parent, list(COMSIG_HOSTILE_POST_ATTACKINGTARGET, COMSIG_LIVING_DEATH))
|
||||
drop_plunder()
|
||||
|
||||
/datum/component/plundering_attacks/proc/attempt_plunder(mob/living/attacker, mob/living/carbon/human/target, success)
|
||||
SIGNAL_HANDLER
|
||||
if(!istype(target) || !success)
|
||||
return
|
||||
var/obj/item/card/id/id_card = target.wear_id?.GetID()
|
||||
if(isnull(id_card))
|
||||
return
|
||||
var/datum/bank_account/account_to_rob = id_card.registered_account
|
||||
if(isnull(account_to_rob) || account_to_rob.account_balance == 0)
|
||||
return
|
||||
|
||||
var/amount_to_steal = plunder_amount
|
||||
if(account_to_rob.account_balance < plunder_amount) //If there isn't enough, just take what's left
|
||||
amount_to_steal = account_to_rob.account_balance
|
||||
plunder_stored += amount_to_steal
|
||||
account_to_rob.adjust_money(-amount_to_steal)
|
||||
account_to_rob.bank_card_talk("Transaction confirmed! Transferred [amount_to_steal] credits to \<NULL_ACCOUNT\>!")
|
||||
|
||||
/datum/component/plundering_attacks/proc/drop_plunder()
|
||||
SIGNAL_HANDLER
|
||||
if(plunder_stored == 0)
|
||||
return
|
||||
new /obj/item/holochip(get_turf(parent), plunder_stored)
|
||||
plunder_stored = 0
|
||||
@@ -0,0 +1,89 @@
|
||||
/// Pirate trooper subtype
|
||||
/mob/living/basic/trooper/pirate
|
||||
name = "Pirate"
|
||||
desc = "Does what he wants cause a pirate is free."
|
||||
response_help_continuous = "pushes"
|
||||
response_help_simple = "push"
|
||||
speed = 0
|
||||
speak_emote = list("yarrs")
|
||||
faction = list(FACTION_PIRATE)
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate
|
||||
|
||||
/// The amount of money to steal with a melee attack
|
||||
var/plunder_credits = 25
|
||||
|
||||
/mob/living/basic/trooper/pirate/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/plundering_attacks, plunder_amount = plunder_credits)
|
||||
|
||||
/mob/living/basic/trooper/pirate/melee
|
||||
name = "Pirate Swashbuckler"
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
armour_penetration = 35
|
||||
attack_verb_continuous = "slashes"
|
||||
attack_verb_simple = "slash"
|
||||
attack_sound = 'sound/weapons/blade1.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_SLASH
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/melee)
|
||||
light_range = 2
|
||||
light_power = 2.5
|
||||
light_color = COLOR_SOFT_RED
|
||||
loot = list(
|
||||
/obj/effect/mob_spawn/corpse/human/pirate/melee,
|
||||
/obj/item/melee/energy/sword/pirate,
|
||||
)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee
|
||||
r_hand = /obj/item/melee/energy/sword/pirate
|
||||
plunder_credits = 50 //they hit hard so they steal more
|
||||
|
||||
/mob/living/basic/trooper/pirate/melee/space
|
||||
name = "Space Pirate Swashbuckler"
|
||||
unsuitable_atmos_damage = 0
|
||||
minimum_survivable_temperature = 0
|
||||
speed = 1
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/melee/space)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee/space
|
||||
|
||||
/mob/living/basic/trooper/pirate/melee/space/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
|
||||
/mob/living/basic/trooper/pirate/ranged
|
||||
name = "Pirate Gunner"
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/ranged)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged
|
||||
r_hand = /obj/item/gun/energy/laser
|
||||
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged
|
||||
/// Type of bullet we use
|
||||
var/casingtype = /obj/item/ammo_casing/energy/laser
|
||||
/// Sound to play when firing weapon
|
||||
var/projectilesound = 'sound/weapons/laser.ogg'
|
||||
/// number of burst shots
|
||||
var/burst_shots = 2
|
||||
/// Time between taking shots
|
||||
var/ranged_cooldown = 6 SECONDS
|
||||
|
||||
/mob/living/basic/trooper/pirate/ranged/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(\
|
||||
/datum/component/ranged_attacks,\
|
||||
casing_type = casingtype,\
|
||||
projectile_sound = projectilesound,\
|
||||
cooldown_time = ranged_cooldown,\
|
||||
burst_shots = burst_shots,\
|
||||
)
|
||||
|
||||
/mob/living/basic/trooper/pirate/ranged/space
|
||||
name = "Space Pirate Gunner"
|
||||
unsuitable_atmos_damage = 0
|
||||
minimum_survivable_temperature = 0
|
||||
speed = 1
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/ranged/space)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged/space
|
||||
r_hand = /obj/item/gun/energy/e_gun/lethal
|
||||
|
||||
/mob/living/basic/trooper/pirate/ranged/space/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
@@ -3,8 +3,6 @@
|
||||
name = "Syndicate Operative"
|
||||
desc = "Death to Nanotrasen."
|
||||
speed = 1.1
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
faction = list(ROLE_SYNDICATE)
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/syndicatesoldier)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatesoldier
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/pirate
|
||||
name = "Pirate"
|
||||
desc = "Does what he wants cause a pirate is free."
|
||||
icon = 'icons/mob/simple/simple_human.dmi'
|
||||
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
||||
sentience_type = SENTIENCE_HUMANOID
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
response_help_continuous = "pushes"
|
||||
response_help_simple = "push"
|
||||
speed = 0
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
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
|
||||
speak_emote = list("yarrs")
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate)
|
||||
del_on_death = TRUE
|
||||
faction = list(FACTION_PIRATE)
|
||||
/// Path of the mob spawner we base the mob's visuals off of.
|
||||
var/mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate
|
||||
/// Path of the held item we give to the mob's visuals.
|
||||
var/held_item
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/Initialize(mapload)
|
||||
. = ..()
|
||||
apply_dynamic_human_appearance(src, mob_spawn_path = mob_spawner, r_hand = held_item)
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/melee
|
||||
name = "Pirate Swashbuckler"
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
armour_penetration = 35
|
||||
attack_verb_continuous = "slashes"
|
||||
attack_verb_simple = "slash"
|
||||
attack_sound = 'sound/weapons/blade1.ogg'
|
||||
attack_vis_effect = ATTACK_EFFECT_SLASH
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/melee)
|
||||
light_range = 2
|
||||
light_power = 2.5
|
||||
light_color = COLOR_SOFT_RED
|
||||
footstep_type = FOOTSTEP_MOB_SHOE
|
||||
loot = list(
|
||||
/obj/effect/mob_spawn/corpse/human/pirate/melee,
|
||||
/obj/item/melee/energy/sword/pirate,
|
||||
)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee
|
||||
held_item = /obj/item/melee/energy/sword/pirate
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space
|
||||
name = "Space Pirate Swashbuckler"
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
speed = 1
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee/space
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/ranged
|
||||
name = "Pirate Gunner"
|
||||
projectilesound = 'sound/weapons/laser.ogg'
|
||||
ranged = 1
|
||||
rapid = 2
|
||||
rapid_fire_delay = 6
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/projectile/beam/laser
|
||||
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/ranged)
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged
|
||||
held_item = /obj/item/gun/energy/laser
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space
|
||||
name = "Space Pirate Gunner"
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
speed = 1
|
||||
mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged/space
|
||||
held_item = /obj/item/gun/energy/e_gun/lethal
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
@@ -120,11 +120,6 @@
|
||||
/mob/living/simple_animal/hostile/ooze,
|
||||
/mob/living/simple_animal/hostile/ooze/gelatinous,
|
||||
/mob/living/simple_animal/hostile/ooze/grapes,
|
||||
/mob/living/simple_animal/hostile/pirate,
|
||||
/mob/living/simple_animal/hostile/pirate/melee,
|
||||
/mob/living/simple_animal/hostile/pirate/melee/space,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged/space,
|
||||
/mob/living/simple_animal/hostile/retaliate,
|
||||
/mob/living/simple_animal/hostile/retaliate/goose,
|
||||
/mob/living/simple_animal/hostile/retaliate/goose/vomit,
|
||||
|
||||
+2
-1
@@ -1161,6 +1161,7 @@
|
||||
#include "code\datums\components\pellet_cloud.dm"
|
||||
#include "code\datums\components\phylactery.dm"
|
||||
#include "code\datums\components\pinata.dm"
|
||||
#include "code\datums\components\plundering_attacks.dm"
|
||||
#include "code\datums\components\pricetag.dm"
|
||||
#include "code\datums\components\punchcooldown.dm"
|
||||
#include "code\datums\components\puzzgrid.dm"
|
||||
@@ -4675,6 +4676,7 @@
|
||||
#include "code\modules\mob\living\basic\trader\trader_data.dm"
|
||||
#include "code\modules\mob\living\basic\trader\trader_items.dm"
|
||||
#include "code\modules\mob\living\basic\trooper\nanotrasen.dm"
|
||||
#include "code\modules\mob\living\basic\trooper\pirate.dm"
|
||||
#include "code\modules\mob\living\basic\trooper\russian.dm"
|
||||
#include "code\modules\mob\living\basic\trooper\syndicate.dm"
|
||||
#include "code\modules\mob\living\basic\trooper\trooper.dm"
|
||||
@@ -4871,7 +4873,6 @@
|
||||
#include "code\modules\mob\living\simple_animal\hostile\illusion.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\ooze.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\vatbeast.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\wizard.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\zombie.dm"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/mob/living/simple_animal/hostile/pirate/@SUBTYPES : /mob/living/basic/trooper/pirate/@SUBTYPES{@OLD}
|
||||
Reference in New Issue
Block a user