From 1f0ca6f82713ce493c2d0fcd7d1a8f2b1877c2e8 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+AnArgonianLizardThatStealsPRs@users.noreply.github.com> Date: Tue, 31 Oct 2023 21:02:20 +0300 Subject: [PATCH] [MIRROR] Basic Pirate NPCs [MDB IGNORE] (#355) * Basic Pirate NPCs (#79284) * Modular paths --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> --- .../RandomRuins/SpaceRuins/caravanambush.dmm | 8 +- .../SpaceRuins/derelict_construction.dmm | 4 +- .../SpaceRuins/skyrat/cargodiselost.dmm | 4 +- .../SpaceRuins/skyrat/piratefort.dmm | 30 +++--- _maps/RandomZLevels/mothership_astrum.dmm | 10 +- _maps/shuttles/ruin_pirate_cutter.dmm | 6 +- _maps/virtual_domains/pirates.dmm | 14 +-- code/datums/components/plundering_attacks.dm | 54 +++++++++++ .../mob/living/basic/trooper/pirate.dm | 89 ++++++++++++++++++ .../mob/living/basic/trooper/syndicate.dm | 2 - .../living/simple_animal/hostile/pirate.dm | 91 ------------------- .../unit_tests/simple_animal_freeze.dm | 5 - tgstation.dme | 3 +- .../Scripts/79284_simple_to_basic_pirates.txt | 1 + 14 files changed, 184 insertions(+), 137 deletions(-) create mode 100644 code/datums/components/plundering_attacks.dm create mode 100644 code/modules/mob/living/basic/trooper/pirate.dm delete mode 100644 code/modules/mob/living/simple_animal/hostile/pirate.dm create mode 100644 tools/UpdatePaths/Scripts/79284_simple_to_basic_pirates.txt diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 3534643bea9..66e681981c7 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -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, diff --git a/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm b/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm index 6eeb3dd3ef3..a8c3607258d 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict_construction.dmm @@ -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) diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm index 5fc13acae16..7cdaa54020b 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm @@ -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{ diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm index 097dacaa1fd..e79f5902d5d 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm @@ -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 }, diff --git a/_maps/RandomZLevels/mothership_astrum.dmm b/_maps/RandomZLevels/mothership_astrum.dmm index dac0135a5a0..e42e33f49a7 100644 --- a/_maps/RandomZLevels/mothership_astrum.dmm +++ b/_maps/RandomZLevels/mothership_astrum.dmm @@ -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 }, diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin_pirate_cutter.dmm index 634386c56c2..7dd4be59ba7 100644 --- a/_maps/shuttles/ruin_pirate_cutter.dmm +++ b/_maps/shuttles/ruin_pirate_cutter.dmm @@ -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, diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm index 9c970f78c37..9868ab8e9b3 100644 --- a/_maps/virtual_domains/pirates.dmm +++ b/_maps/virtual_domains/pirates.dmm @@ -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" = ( diff --git a/code/datums/components/plundering_attacks.dm b/code/datums/components/plundering_attacks.dm new file mode 100644 index 00000000000..f55fa42b071 --- /dev/null +++ b/code/datums/components/plundering_attacks.dm @@ -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 \!") + +/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 diff --git a/code/modules/mob/living/basic/trooper/pirate.dm b/code/modules/mob/living/basic/trooper/pirate.dm new file mode 100644 index 00000000000..714fc53856e --- /dev/null +++ b/code/modules/mob/living/basic/trooper/pirate.dm @@ -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) diff --git a/code/modules/mob/living/basic/trooper/syndicate.dm b/code/modules/mob/living/basic/trooper/syndicate.dm index 43242649193..7075e293add 100644 --- a/code/modules/mob/living/basic/trooper/syndicate.dm +++ b/code/modules/mob/living/basic/trooper/syndicate.dm @@ -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 diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm deleted file mode 100644 index 24503f89bfd..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ /dev/null @@ -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) diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index c7ed0bddc42..fb99665fbd2 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -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, diff --git a/tgstation.dme b/tgstation.dme index a409aa71c42..cdf0f9986ed 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1170,6 +1170,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" @@ -4684,6 +4685,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" @@ -4880,7 +4882,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" diff --git a/tools/UpdatePaths/Scripts/79284_simple_to_basic_pirates.txt b/tools/UpdatePaths/Scripts/79284_simple_to_basic_pirates.txt new file mode 100644 index 00000000000..b642fc4278f --- /dev/null +++ b/tools/UpdatePaths/Scripts/79284_simple_to_basic_pirates.txt @@ -0,0 +1 @@ +/mob/living/simple_animal/hostile/pirate/@SUBTYPES : /mob/living/basic/trooper/pirate/@SUBTYPES{@OLD} \ No newline at end of file